在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了,与微软的 Windows 系统不同的是,如果你用惯了 Microsoft Word 或 Corel Wordperfect 的话,那么除了 X window 里面的图形接口编辑程序,用起来尚可应付外,在 Linux 的文本模式下,会觉得文书编辑程序都没有窗口接口来的直观与方便.

VIM 有哪些特点

  • 1.所有的 Unix Like 系统都会内建 VIM 文本编辑器,其他的文书编辑器则不一定会存在.
  • 2.很多个别软件的编辑接口都会主动呼叫 VIM (例如未来会谈到的 crontab, visudo, edquota 等指令)
  • 3.VIM 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计.
  • 4.因为VIM程序简单,并可自定义按键,从而编辑速度相当快速,在程序设计领域大有作为.

那么什么是VIM

其实你可以将VIM视作VI的升级版,VIM可以用颜色或底线等方式来显示一些特殊的信息,简单的来说VI是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方.VIM则可以说是程序开发者的一项很好用的工具,就连VIM的官方网站自己也说VIM是一个程序开发工具而不是文字处理软件,因为VIM里面加入了很多额外的功能,例如支持正规表示法的搜寻架构、多档案编辑、区块复制等等.这对于我们在 Linux 上面进行一些配置文件的编辑时,是很好的一项功能.

VIM的工作模式有哪些

基本上VI/VIM共分为三种模式,分别是命令模式,输入模式,末行模式.

  • 命令模式: 以 VI/VIM 打开一个文件就直接进入命令模式(这是默认的模式),在这个模式中,你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容,也可以使用复制、贴上来处理你的文件数据.

  • 编辑模式: 在输入模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的,要等到你按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式,注意,通常在 Linux 中,按下这些按键时,在画面的左下方会出现INSERT 或 REPLACE的字样,此时才可以进行编辑.而如果要回到一般模式时,则必须要按下Esc这个按键即可退出编辑模式.

  • 末行模式: 在一般模式当中,输入 : / ? 三个中的任何一个按钮,就可以将光标移动到最底下那一行,在这个模式当中,可以提供你搜寻资料的动作,而读取、存盘、大量取代字符、离开 VI/VIM、显示行号等等的动作则是在此模式中达成的.

VI/VIM模式按键

命令模式

操作类型操作键(命令)功能(作用)
光标方向移动↑ ↓ ← →上、下、左、右
字母移动H j k l上、下、左、右
翻页Page Down或Ctrl+F(大)向下翻动一整页内容
Page Up或Ctrl+B(大)向上翻动一整页内容
行内快速跳转Home键或“^”、数字“00”跳转至行首
End键或“$”键跳转到行尾
行间快速跳转1G或者gg跳转到文件的首行
G跳转到文件的末尾行
#G跳转到文件中的第#行
删除x或Del删除光标处的单个字符
dd删除当前光标所在行
#dd删除从光标处开始的#行内容
d^ (d shift+6)删除当前光标之前到行首的所有字符(不包含光标)
d$删除当前光标处到行尾的所有字符(包含光标)
复制yy复制当前行整行的内容到剪贴板
#yy复制从光标处开始的#行内容
粘贴p将缓冲区中的内容粘贴到光标位置处之后(下一行)
P(大)粘贴到光标位置处之前(上一行)
替换r替换光标所在字符
R从光标出开始替换,按ESC键结束
/word/word从上而下在文件中查找字符串“word”
?word?word从下而上在文件中查找字符串“word”
nn定位下一个匹配的被查找字符串
NN定位上一个匹配的被查找字符串
uu按一次取消最近的一次操作,多次重复按u键,恢复已进行的多步操作
UU用于取消对当前行所做的所有编辑
Shift+zz或者ZZShift+zz(小)或者ZZ保存当前的文件内容并退出vi编辑器

编辑模式

操作类型操作键(命令)功能(作用)
光标后插入a在光标所在字符后插入
光标行尾插入A在光标所在行尾插入
光标前插入i在光标所在字符前插入
光标后插入I在光标所在行行首插入
光标下插入o在光标下插入新行
光标上插入O在光标上插入新行

末行模式

功能命令备注
保存文件:w保存所做操作
:w /root/newfile另存为其它文件
退出vi:q未修改退出
:q!放弃对文件内容的修改,并退出vi
:wq保存文件退出
删除多行文件:n,nd删除从n-n的行
:e ~/install.log打开新的文件进行编辑
:r /etc/filesystems在当前文件中读入其他文件内容
:!命令直接执行命令打印到屏幕上
:r!命令导入命令结果到光标所在处
行号显示set nu在编辑器中显示行号
:set nonu取消编辑器中的行号显示
颜色开关:syntax off关闭颜色显示
:syntax on开启颜色显示
正则替换😒 /old/new/将当前行中查找到的第一个字符“old” 串替换为“new”
😒 /old/new/g将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s /old/new/g在行号“#,#”范围内替换所有的字符串“old”为“new”
:% s /old/new/g在整个文件范围内替换所有的字符串“old”为“new”
😒 /old/new/cg在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

VI/VIM拓展功能

VIM快捷命令

实例1: 使用VIM配置快捷键,当输入Ctrl+p快捷键时,执行在行首添加#号.

#^P 不能手动输入,需要执行ctrl+V+P 来定义或者ctrl+V,然后ctrl+P.

:map ^P I#<esc>

此时在指定行按下Ctrl+p 既可以实现在开头添加注释.

实例2: 使用VIM配置快捷键,当输入Ctrl+b快捷键时,执行调到行首,并删除一个字符.

#^P 不能手动输入,需要执行ctrl+V+b 来定义或者ctrl+V,然后ctrl+b.

:map ^B ^x

此时在指定行按下Ctrl+b 既可以实现在开头删除一个字符.

实例3: 使用VIM配置快捷键,当输入ab快捷键时,将myweb替换成mkdirs.com.

:ab myweb mkdirs.com

VIM块选择命令

块选择命令,可以实现批量的选择一块数据进行操作.

参 数说 明
v字符选择,光标经过的地方反白
V行选择,光标经过的地方反白
Ctrl+v块选择,一次选择一个格
shift+v行选择,一次选择一行数据
y将反白的地方复制起来
d将反白的地方删除

VIM多窗口编辑

sp命令,可以编辑多窗口,我们可以实现多窗口之间的编辑和切换功能.

参 数说 明
:sp filename在VIM中打开一个新窗口
Ctrl+w+j切换到上一个窗口
Ctrl+w+k切换到下一个窗口

VIM环境变量配置

VIM常用环境变量的说明,和常用参数的配置.

参 数说 明
:set nu设置与取消编号
:set nonu
:set hlsearch设置与取消高亮字体
:set nohlsearch
:set backup是否自动备份
:set nobackup
:set cursorline给指定行添加下划线
:set all显示所有环境变量
:set显示与系统默认值不同的参数
:syntax on开启语法高亮
:set bg=dark字体高亮显示
:set bg=light字体低亮度显示

实例1: 通过写入配置文件 ./vimrc实现配置文件的永久生效,在这里永久添加一个下划线.

[root@localhost ~]# vim .vimrc
[root@localhost ~]# cat .vimrc 
set cursorline
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐