什么是Vim
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。vim的设计理念是命令的组合。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑。同时VIM与很多快捷键设置和正则表达式类似,可以辅助记忆。并且vim针对程序员做了优化。
Vim的三种模式
- 命令模式
- 插入模式
- 退出模式
了解了Vim是什么之后,下面我们就具体介绍一下Vim分别在三种模式下的操作方法。
命令模式
当用户刚刚启动vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,而i被当作了一个命令。
以/etc/passwd为例,在虚拟机中用vim命令打开:
[root@localhost Desktop]# vim /etc/passwd
命令执行之后,就会出现下面的vim编辑器:
之后的实践操作也是以/etc/passwd文件为例的。
(1). 工作参数调整方法
在Vim命令模式下,输入
:set 调整参数
即可设置Vim的不同工作参数。
Vim中有以下几种常用的工作参数:
- :set nu 行号添加
- :set nonu 取消行号
- :set mouse=a 添加鼠标选择
- :set cursorline 行线显示
实践操作如下:
在Vim中输入下面的命令
然后按下回车键,就会显示行号
然后再输入下面的命令
再按下回车键,行号就会消失了。
再输入下面的命令
再按下回车,这时就可以用鼠标点击文本进行选择了。
再输入下面的命令
按下回车键,就会发现鼠标选择的那一行下面增加了一条行线
当你按wq保存退出后
当再次进入Vim编辑器中后,会发现刚才所做的所有参数调整都不再生效了。
注意:在vim程序中设定的vim工作方式是临时的,在vim关闭之后会还原。如果要永久保存vim的工作方式则需要编辑vim的配置文件:/etc/vimrc
例如,对/etc/vimrc文件进行编辑,在文件中增加一行set nu(注意set前不要加:),如下
然后Esc退出插入模式,wq保存退出,再进入一个vim编辑器就会显示行号了。
(2). 关键字的搜索
在命令模式下 / 关键字 即可跳转到关键字部分并且高亮显示
n 向下匹配
N 向上匹配
:noh 取消高亮显示的关键字
实践操作:
vim打开/etc/passwd文件,尝试搜索sshd关键字
按下回车键,可快速定位到包含关键字部分,并高亮显示关键字,如下:
当存在多个高亮即多个关键词时,直接按下 n 键就可以快速匹配到下一个关键字部分;然后直接按下 N 键就可以快速匹配上一个关键字部分了。若想取消高亮显示的关键字,则输入 :soh 即可。
(3). 字符的管理
字符的管理操作也都是在命令模式进行操作的
字符的复制:
yl 复制一个字母
y3l 复制 3 个字母(3可换成其它数字)
yw 复制一个单词
y3w 复制 3 个单词(3可换成其它数字)
yy 复制一行
y3y 复制 3 行(3可换成其它数字)
p 复制完成后按“ p” 粘贴
字符的删除:
dl 删除一个字母
d3l 删除 3 个字母(3可换成其它数字)
dw 删除一个单词
d3w 删除 3 个单词(3可换成其它数字)
dd 删除一行
d3d 删除 3 行(3可换成其它数字)
字符的剪切:
cl 剪切一个字母
c3l 剪切 3 个字母(3可换成其它数字)
cw 剪切一个单词
c3w 剪切 3 个单词(3可换成其它数字)
cc 剪切一行
c3c 剪切 3 行(3可换成其它数字)
在剪切操作时一定要注意的是:剪切过后会进入到插入模式,在执行粘贴动作时一定要先按Esc键退出插入模式再按p键。
撤销:
u 撤销上一次的操作
ctrl + r 恢复撤销
(4). 可视化模式
在命令模式下按“ ctrl + v ” 进入到可视化模式,
在可视化模式下可以区域选择字符,如下:
在按下"ctrl + v "后,就进入到了可视化模式
然后上下左右移动光标可区域选择要进行操作的部分,如下:
然后再按 字符的管理 部分中相应的按键即可对选择的区域中的字符进行操作,比如按下 d 键 (删除键) 后:
区域字符就被删除掉了,复制和剪切 (y键和c键) 操作是一样的。
可视化模式下还可以进行批量添加字符,具体操作如下:
第一步:按 " ctrl + v "进入可视化模式后,选中要批量加入字符所在的那一列
第二步: 按 " I "键(大写的 i )进入插入模式,然后写入要加入的字符
第三步: 按 " Esc "键,即可批量添加字符
(5). 批量替换字符
格式:
:%s/要替换的字符/替换成的字符/g
操作示例:
:%s/ : /@/g (将全文的:替换成@)
按下回车后,替换成功:
:1,5s/ : /@/g (将1-5行的:替换成@)
按下回车后,替换成功:
:/adm/, /halt/s/ : /@/g (将adm行到halt行之间的:替换成@)
按下回车后,替换成功:
注意:这里的 %s 表示所有的行, g 表示所有的列。
(6). 分屏功能
vim还可以实现分屏功能,具体操作如下:
ctrl+w s(同时按下ctrl和w之后再按 s ) 实现上下分屏
ctrl+w v(同时按下ctrl和w之后再按 v ) 实现左右分屏
ctrl+w c(同时按下ctrl和w之后再按 c ) 关闭光标所在的分屏幕
ctrl+w 上下左右(同时按下ctrl和w之后再按 上下左右键 ) 光标移动到指定屏幕
:sp file2 可同时编辑当前文件和file2
以/etc/group文件为例:
按下回车后,即可同时编辑两个文件
(7). 命令模式下光标移动
:数字 快速移动到指定的行
比如:
光标即可快速移动到第37行
G 移动到文件最后一行
gg 移动到文件第一行
插入模式
在命令模式下一般按下i就进入了输入模式,但在命令模式下还可以按下其它的键可以改变光标的位置,从而快速跳转到需要插入的位置。 常用的如下:- i 光标所在位置插入
- I 光标所在行行首
- a 光标所在字符的下一个位置
- A 光标所在行行尾
- o 光标所在行下一行
- O 光标所在行上一行
- s 删除光标所在字符插入
- S 删除光标所在行插入
退出模式
当想要退出vim编辑器时,有以下四种方式退出:- :q 当用 vim 打开文件但没有对字符做任何操作时可直接退出
- :q! 当用 vim 打开文件并对字符做了操作,但放弃所有操作退出(改变文件不保存)
- :wq 保存并且退出
- :wq! 强行保存退出,对超级用户及文件所有人生效
如果你想了解关于vim的更多操作,可以直接输入 vimtutor 命令进入vim帮助手册,然后按q退出。