进入编辑模式。

  • 编辑模式就是进入一个可以编辑文本文档的模式。
  • 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实践