Vim编辑器是Unix/Linux系统中最常见的编辑器,同时也是系统自带的编辑器,所以学好Vim编辑器对使用Linux系统至关重要。
本文是在通过Vimtutor学习Vim的基础上进行总结的。
三种模式
Vim不同于普通编辑器地方在于拥有三种不同的模式,分别是命令模式,输入模式,底线命令模式。不同的模式下做不同的事情,三种模式之间可以进行转换。
命令模式
通过vim <文件名>
命令格式打开文件时即进入到vim的命令模式,在命令模式下输入的字符不会被理解为一般字符而插入到文本当中而是会被理解为命令。
输入模式
输入模式即对文本进行编辑,在该模式下与一般编辑器无区别,输入数字和字母将被当做字符插入到文本当中。
可以在命令模式下输入i
字符切换到输入模式,按ESC
退出输入模式转而进入到命令模式。
底线命令模式
底线命令模式即在编辑器的底部输入相应的命令,在底线命令模式下可以进行保存,退出等操作。
可以在命令模式下输入:
切换到底线命令模式。
在底线命令模式下输入相应的命令按下回车执行完命令后进入到命令模式。
搜索命令
在使用Vim编辑器编辑一个比较大的文件时,有时我们只对其中的某些关键信息感兴趣,那在一个庞大的文件中如何找到我们关心的内容呢?这时需要使用Vim的搜索命令对整个文件进行关键字搜索。
-
进入到搜索模式。在命令模式下输入
/
符号或者?
符号即进入到搜索状态,这时你可以发现输入的字符和光标都在屏幕的左下方。按
/
符号和?
符号都可以进入到搜索模式,可它们之间的区别在哪儿呢?区别是搜索的顺序不同,/
将从文件首部开始搜索关键字,?
将从文件末尾开始搜索关键字。 -
输入需要搜索的关键字。在光标处输入自己要搜索的关键字,输入完毕之后按下回车键,光标会出现在关键字第一次出现的位置。
-
寻找其他相同的关键字。一个文件中某一个关键字可能会出现多次,可能第一次出现的位置并不是真正想查找的位置。此时可以按
n
键跳转到关键字下一次出现的位置,按shift + n
组合键跳转到关键字上一次出现的位置。
替换命令
Vim提供了搜索功能,当然会提供替换命令,大多数时候搜索和替换是结合在一起使用的,替换命令其实是可以实现搜索命令功能的,后文中会提到具体如何操作。首先还是看一下最简单的替换命令如何操作:
- 进入底部命令模式。与搜索命令直接敲
/
或?
不同的是在输入替换命令之前需要先输入:
字符进入到底部命令模式。 - 输入替换命令。替换命令的基本格式为:
s / old / new
即将old字符替换为new字符,个人猜测s
字符是英文单词switch
的缩写。 - 替换字符。默认情况下只会替换光标所在行的第一个匹配项。
- 替换全行所有匹配项:
s / old / new / g
会将光标所在行的所有匹配项都进行替换,g
字符是英文单词global
的缩写。 - 替换指定两行之间的匹配项:
starting line number,ending line number s / old / new/g
替换指定两行之间的所有匹配项,其中starting line number
为起始行号,ending line number
为终止行号。 - 全文替换:既然我们可以替换指定两行之间的匹配项,那么我们可以设置起始行号为1,终止行号为文件的总行数来实现全文替换。除此之外,Vim提供了
%
变量来代表文件的总行数,命令格式为%s/old/new/g
。 - 替换之前确认:上文中给出的所有替换命令在找到匹配项之后会直接进行替换,不会再次询问用户是否进行替换,在某些时候只是想替换某些匹配项,希望在匹配之前再次确认。此时可以在替换命令的末尾加上
c
字符,这样在每个匹配项替换之后都会再次进行确认。