进入编辑模式。
- 编辑模式就是进入一个可以编辑文本文档的模式。
- i是进入编辑模式,同样shift+i也可以,而且shift+i可以直接把光标定位到行首进去编辑模式。
- o也可以进去编辑模式,是在所在行的下一行进去编辑模式。也就是相当于直接按了回车。
- shift+o是所在行的上一行进入编辑模式。
- a也可以进入编辑模式,a进入编辑模式后会向当前光标所在位置向后移动一格。 shift+a 是移动到行末去。
vim命令模式
- /+要搜索的字符串,就会高亮显示所有的带有要搜索的字符串。 然后按n可以向后继续查找。shift+n向前继续查找。
- 也可以?+要搜索的字符串。这个按n是向前查找,shift+n向后查找。
- 替换的功能很实用,比如从一个机器上cp到另一个机器上一个文件,到了这台机器上ip地址不一样了,就需要去更换,但是不可能一个个去换的,所以可以用替换的功能。
- 替换的写法:从哪个行数开始+,+到那个行数结束+s/要更换的源字符串/要更换的字符串/+g(s的意思是表示要替换了。) (g是更换所有的意思,不加g的话,一行中如果有两个相同的字符串,只会更改前一个。)
- 比如替换dnsmasq为yingxin(:1,100s/dnsamsq/yingxin/g)
- 回车后就替换完成了。
- 按:再按方向键 可以调出你之前输入的命令,和在命令行的用法一样。
- 上面说到不加g会导致一行中相同的两个字符串,只替换前一个,试一下。
- 第五行有两个yingxin 我们把yingxin换回dnsmasq ,不加g
- 然后5+G 到第五行,发现第二个没有更换成dnsmasq。
- 也可以不指定行数,全部替换,是 :1,$s/dnsmasq/yingxin/g
- 再次搜索dnsmasq 就没有了。
- 如果遇到带有/的字符串,会和命令中的/有冲突,系统会判定你这个也是命令中的一部分。就会产生混乱。
- 遇到这种情况可以加一个反斜杠 \ 让系统识别不到/
- 这样觉得看着很奇怪的话,也可以用#替换/ 或者用@符号也可以替换。
- wq保存并退出。wq! 强制保存退出 (只适用于root用户)
- q不保存退出。 q! 强制退出。(只适用于root用户)
- w保存。 w! 强制保存。(只适用于root用户)
- set nu 显示行号
- set nonu 不显示行号。
- 如果不想高亮显示,可以用nohl取消掉。
- :x也可以保存退出 ,在更改文件后用x和wq是一样的。如果是文件打开了没有做任何操作,wq保存退出会更改mtime,系统会认定你做了操作。 但是x不会,没做就是没做。
vim实践