vim的三种的工作模式
普通模式
打开一个文件后,默认的状态就是普通模式,在这个模式中,不能进行编辑输入等操作,但可以上下左右来移动光标,还可以执行命令进行复制、粘贴、删除等操作。
编辑模式
在普通模式下按“ i,I,o,O,a,A,r,R,s,S ”(其中i最常用)等字母进入编辑模式后才可以执行录入文字等编辑操作。可以修改文件、删除文件内容等。
末行模式
在普通模式下,输入” :” ” / ” ” ?” 时,进入末行模式,可以执行保存、退出、搜索、替换、显示行号、写入写出等操作。
Vim键盘图
一、普通模式
移动:
h 或(←)删除键 #光标向左移动一个字符,前面加n然后再移动 可以移动多行 l 或(→)空格键 #光标向右移动一个字符,前面加n然后再移动 可以移动多行 j 或( ↓ )回车键 #光标向下移动一个字符,前面加n然后再移动 可以移动多行 k 或( ↑ ) #光标向上移动一个字符,前面加n然后再移动 可以移动多行 H #移动到当前窗口的最上方的一行 M #移动到当前窗口的最中间的一行 L #移动到当前窗口的最下方的一行 gg #将光标移动到文件的第一行 G或shift+g #将光标移动到文件的最后一行 ngg或nG # n表示数字,跳转到指定的某一行 $ #将光标移动到当前行的行尾 ^或0 #将光标移动到当前行的行首 ctrl+f #往下翻页(行比较多) ctrl+b #往上翻页 ~ #让当前的字符变成大写 >> #向右移动一个缩进 << #向左移动一个缩进 == #取消缩进 J #将当前行和下一行变成一行 W #向后移动字符串,移动到字符串的第一个字符,长跳 w #向后移动字符串,移动到字符串的第一个字符,短跳 E #向后移动字符串,移动到字符串的最后一个字符,长跳 e #向后移动字符串,移动到字符串的最后一个字符,短跳 B #向前移动字符串,移动到字符串的第一个字符,长跳 b #向前移动字符串,移动到字符串的第一个字符,短跳
删除:
删除: dd #删除一行 ndd #n为数字,删除从光标开始向下共n行(包括当前行) D #将光标之后的内容都删除(针对行操作) dG #删除光标以下的所有内容(包括光标所在行) dgg #删除光标以上的所有内容(包括光标所在行) X #删除光标之前的字符 x/delete #删除当前光标从前往后删除一个字符 dw #删除光标之后一组字符串 de #删除光标之后一组字符串
复制粘贴:
yy #复制,nyy,yny p(小写) #粘贴(光标所在行的下一行) P(大写) #粘贴(光标所在行的上一行) np #向下粘贴多行 nP #向上粘贴多行
替换撤销:
u #撤销 ctrl+r #恢复撤销 r #单个字符替换 R #多个字符替换(按 ESC 退出替换)、 ZZ #保存退出
二、编辑模式
直接进入:
i #在当前光标处进入编辑模式 a #在当前光标后插入内容 I #将光标跳至行首,并进入编辑模式 A #将光标跳到行末,并进入编辑模式 o #在当前行下面插入一行,并进入编辑模式 O #在当前行上面插入一行,并进入编辑模式
删除进入:
s #删除光标所在的字符,并进入编辑模式 S #删除光标所在的行并进入编辑模式 ce #删除光标后字符串,特殊字符不算是字符串,并进入编辑模式 cw #删除光标后字符串,会把特殊字符算是字符串,并进入编辑模式 C #删除当前光标之后的内容,并进入编辑模式 cc #删除当前行并进入编辑模式
三、末行模式
保存退出:
: w #保存当前状态 : w! #强制保存当前状态 : q #退出当前文档(前提是文档没有编辑) : q! #强制退出文档不会修改当前内容 : wq #先保存,再退出 : x #先保存,再退出 ZZ #保存退出, shfit+zz 相当于 :wq 相当于:x : wq! #强制保存并退出 (就算没有修改文件:wq会强行更新修改时间,而:x不会更新修改时间)
光标操作:
:number #跳转至对应的行号,和普通模式 ngg 一个意思
删除:
: nd #删除指定的行 : n,m d #删除连续的多行, n 数字 m 数字 n < m
搜索:
/root #向下搜索的指定的字符串 n #向下查找 N #向上查找 /root\c #搜索的时候忽略大小写 ?root #向上搜索
替换:
:%s#1#2#g #全局替换 :%s#1#2# #替换每一行的第一个匹配的字符 :s#1#2# #替换第一个匹配的字符串 :1s#1#2#g #替换指定行的匹配的字符串 :1,3s###g #替换第一行到第三行的内容 :%s#1#2#gi #替换的时候忽略大小写
读入:
:r /path #将一个文件的所有写入到当前文件的当前行下面 :$r /path #将一个文件的所有写入到当前文件的最下面 :0r /path #将一个文件的所有写入到当前文件的最上面 :1 copy 10 #将第一行复制到第十行的后面 :1,3 copy 10 #将第一行到第三行复制到第十行的后面 :1 move 10 #将第一行移动到第十行的后面 :sh #进入命令行进行命令,返回使用Ctrl+d 或者 exit
变量设置:
:set nu #显示行号 :set nonu #取消行号 :set list #给每行的结尾添加一个标识符(制表符) :set nolist #取消制表符
视图模式(扩展)
可视行:
1、将光标移动到要操作的行
2、shift+v 进入可视行模式
3、操作方向键选中所要操作的行
4、可进行y进行复制d/x删除
可视块:
1、将光标移动到要操作的行
2、curl+v 进入可视块模式
3、使用方向键选中所要操作的块
4、shift+i或I 进入编辑模式
5、编辑内容后然后按Esc键退出
6、批量删除块选中多块后按d或x删除