vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率
vim 功能强大,对应的命令也非常的多,对于初学者来说,看到这么多的命令容易打退堂鼓,想当初,自己刚接触vim的时候,由于不熟悉vim,每一个命令都要上网查阅,真的是举步维艰
其实,工作中常用的vim命令也就那么些,只需学习这些常用的命令,勤加练习,假以时日定能熟练的掌握它们,进而就能解决大部分的编辑问题
本文结合我自己工作中使用vim的经验,整理了一些常用的vim命令
vim 的模式进入vim之后,会有多种不同的模式,模式之间的切换,让你只需要通过键盘,就能完成文本的编辑,这也是vim存在多种模式的原因,vim主要有以下几个模式
正常模式
刚进入vim界面的时候是正常模式,复制、粘贴操作都是在这个模式下进行的
插入模式
文本内容输入,修改是在这个模式下进行的
可以按 i 或者 I 进入到插入模式,在插入模式下,按 esc会返回到正常模式
命令模式
输入或者修改完之后,需要保存退出,这个时候vim就会进入到命令模式
按 esc + : 进入命令模式,再次按 esc 返回正常模式
可视模式
可视模式是对文件进行大量重复操作的时候,可以一次性执行完成的功能
可通过 v、V、ctrl v 进入可视模式
常用命令打开、保存、另存为、退出
vim file #打开文件 vim #打开临时文件,保存的时候需要制定文件名 :w #保存 :w file #另存为 :q #退出 :wq #保存并退出 :x #保存并退出 ZZ 或 shift zz #保存并退出 :q! #不保存退出,会丢失数据例如: vim a.txt命令打开 a.txt文件,假如a.txt存在的话,打开已有的,不存在的话,则会打开一个新的文件
光标移动
k、j #光标向上、向下移动一行 h、l #光标向左、向右移动一个位置, l 是字母L的小写 ^ #光标移动到当前行首 $ #光标移动到当前行尾 w #光标向前移动一个单词 b #光标向后移动一个单词 gg #光标移动到文件开头 G 或 shift g #光标移动到文件末尾 n G #光标移动到指定行号的行首, n 表示行号 ctrl f #向下翻一页 ctrl b #向上翻一页分别按 k j h l能实现光标上下左右移动,键盘上下左右箭头的按键也表示方向键,它跟 k j h l 有什么区别呢
如果是图形界面和远程终端都可以使用,如果是字符终端的时候,键盘上下左右箭头的按键有时会出现乱码,所以最好统一使用 k j h l
插入
i #光标前插入 I #当前行首插入 o #当前行后面插入一行,光标移动到插入行的行首,o 是字母,不是数字0 O #当前行前面插入一行,光标移动到插入行的行首,O 是字母,不是数字0 a #当前光标后插入 A #当前行尾插入小技巧: 当前处于正常模式, 输入数字 10,按i进入插入模式, 接着输入字母 #,最后按esc键,此时,在光标所在行会出现 10 个#字符,相当于插入了10个#,当你想在文本中插入一行字符作为分割线的时候,就能应用到这个小技巧
复制、粘贴、剪切
yy 或 Y #复制光标所在行 n yy 或 n Y #从光标行向下复制 n 行 y$ #复制从光标位置到行尾 y^ #复制从光标位置到行首 yw #复制一个单词 ynw #复制n个单词,n为单词个数 yl #复制光标位置的一个字符, l 是字母L的小写形式 ynl #从光标位置向右边复制n个字符, 光标位置也算一个字符 yh #复制光标位置左边的一个字符,光标位置不计算在内 ynh #从光标左边位置向左边复制n个字符,光标位置不计算在内 dd #剪切(删除)光标所在行 ndd #从光标行向下剪切(删除)n行 d$ 或者 D #从光标位置剪切(删除)到行尾 d^ #从光标前一个位置剪切(删除)到行首 dl #剪切(删除)光标位置的字符 dnl #从光标位置向行尾方向剪切(删除)n个字符 dh #剪切(删除)光标坐标位置的一个字符 dnh #从光标左边位置向行首方向剪切(删除)n个字符 dw #剪切(删除)光标位置的一个单词 dnw #从光标位置向行尾方向,剪切(删除)n个单词,光标位置的单词也算在内 p #在当前光标后粘贴 P 或 shift p #大写的字母p, 再当前光标前粘贴如果是复制一行内容,再按小写字母p则是在当前光标下一行进行粘贴,而不是在当前光标后面粘贴,同样的,如果是按大写字母P则是在当前光标上一行粘贴
如果一个单词比较长,通过dw 剪切一个单词时,剪切的是光标位置到光标位置单词的结尾字符串
比如,现有一个字符串 9ssxphu7898%mn ,假如光标位于字符 h 位置,按dw,此时剪切的字符串是 hu7898%mn