vim基本操作

曾经听过如下关于vim的笑话:

随机生成字符串最好的方式就是让新手退出vim编辑器。

可见刚接触vim的人对于vim的使用可谓是浑身难受啊,不过由于在Linux的世界里,vim常常是作为内置的文本编辑器存在的。
因此在非桌面环境中编辑文件就需要熟悉vim,这样才能得心应手的进行日常工作。

三种编辑模式

vim是vi的改进版,这里不做区分,统一用vim代替vi。

  1. 一般模式

使用如下命令:

vi demo.txt

这样打开的一个文件模式就属于一般模式,该模式下可以使用上下左右键移动光标、删除、复制粘贴字符或者正行等,但是不__能插入__新的字符。

image.png | left | 827x283

  1. 编辑模式

在一般模式下无法编辑文件内容。可以通过在一般模式下按下如下的按键进入编辑模式:

  • i,I : i为当前光标处插入,I为当前行的第一个非空格字符插入;(类似Home + i)
  • a,A:a为当前光标下一个字符插入,A为当前行的最后一个字符插入;(类似End + i)
  • r,R:进入替换模式,r只会替换光标所在的字符一次,而R会一直替换直到按下Esc键;

这么多进入编辑模式的按键,常用的就是__i和a,A__。

  1. 命令行模式

一般模式进入命令行模式,输入: ? / 三个字符中的任意一个即可进入。
该模式下的功能十分丰富,提供数据的查找、替换,文件保存,显示行号等文本编辑器的高级功能。

如下图所示:按下:,输入命令wq即可保存当前的更改并退出编辑器。

image.png | left | 764x338

常见的快捷键

一般模式下的常用按键:

  • 光标移动
    • 0或Home : 光标移动至当前行首;
    • $或End:光标移动至当前行尾;
    • G:移动的文件的最后一行;(常用)
    • nG:n为数字,移动到文件的第n行;例如20G移动到这个文件的第20行;
    • gg:移动到文件的第一行。相当于1G(常用)
    • n space:移动到这一行的第n个字符(第n列)
    • J:将光标所在行与下一行的数据和为一行,类似删除本行的\r\n
    • u:撤销上一次操作;(undo)
    • ctr+r:重做上一次操作,反撤销;(redo)
    • .:重复上一次操作,重复删除,重复粘贴等;
  • 删除、复制和粘贴
    • x,X:x为向后删除一字符类似del,X为前删类似backspace;
    • nx:后删n个字符
    • dd:删除当前行
    • ndd:删除当前行及以后的合计n行
    • d1G:删除光标所在的行到第一行的所有字符
    • dG:删除光标所在行到最后一行的所有字符
    • d$:删除光标到当前行的行尾之间的字符
    • d0
    • yy:y是复制,同删除;
    • nyy
    • y1G
    • yG
    • y0
    • y$
    • p,P:p是将复制的内容再光标下一行开始粘贴,P是在光标的上一行开始粘贴。
  • 查找
    • /pattern:进入命令模式,输入查找的正则pattern,向下查找下一个符合pattern的字符串。
    • ?patterb:向上寻找符合pattern的字符串;
    • n:按照相同的方向重复前一个查找的操作,next;
    • N:按照相反的方向重复前一个查找操作
  • 替换
    • :n1,n2s/w1/w2/g 在n1和n2行之间,寻找w1,用w2去替换。
    • :n1,n2s/w1/w2/gc 在n1和n2行之间,寻找w1,用w2去替换,替换之前需要询问用户;
    • :0,$s/p/P/gc
  • 命令行模式的文件保存、离开
    • :w : 将编辑的数据写入到磁盘文件中
    • :w! : 若文件的属性为只读的,强制写入该文件
    • :q : 如果对文件没做更改,则该命令直接退出编辑器,否则,退出失败,会提示对文件已经做修改。
    • :q! : 强制退出,则不会保存该次编辑的数据。
    • :wq : 保存并退出
    • :wq! : 强制保存后退出
    • ZZ:若文件没有更改,则不保存离开,否则,则保存后离开。
    • :w [filename]:将编辑的数据保存为另一个文件,相当于另存为。
    • :r [filename]:在编辑的数据中,读如另一个文件的数据,即将filename对应的文件内容追加到光标所在行后面。
    • :n1,n2 w [filename]:将n1到n2行的内容保存为filename这个文件
    • :! cmd:暂时离开vi,执行cmd。例如::! ls/home 即可在vi中查看/home下面的ls输出信息。
posted @ 2018-09-05 19:43  Spground  阅读(179)  评论(0编辑  收藏  举报