vim快捷键
为了增加自己的工作效率,我不得不找一些快捷的方式来提高vim这块的编辑速度。由于东西比较多,光vim命令的文档就有三千多页,在此奉上官方手册的传送门(中文的哦):
https://sourceforge.net/projects/vimcdoc/files/pdf-manual/reference-2.1.0.pdf/download
从文档的长度上就可以知道vim的功能有多庞大了,包括一些基础编辑部分、用户手册部分、高级编辑部分、接口部分、图形化部分还有插件部分等等,反正东西多得够每个人喝一壶了。本文就简单地记录一些编辑基础,不管记不记得住,先记录下来再说,以后复习定当收益匪浅,适合经常复习。
为了便于阅读,本文的结构如下:
1.vim的几种模式
2.普通模式下的快捷键
3.末行模式下的快捷键
1.vim的几种模式
快捷键的用法也是要分场景的,所以我们首先需要搞清楚vim的几种模式
普通模式:这个模式是初次进入文档编辑时所处的状态,vim filename即可进入普通模式
末行模式:在普通模式的基础上,只要你打出冒号即可进入末行模式
编辑模式:在普通模式的基础上,输入字母i,I,a,A,o,O都可以进入编辑模式
可视化模式:在普通模式的基础上,输入字母v可进入此模式
块编辑模式:在普通模式的基础上,输入组合键ctrl+v即可进入此模式,此模式在高级用法中很有用
另外,所有的模式都可以通过按esc键来退出到普通模式,有的需要按两次,有只需要按1次。这个很重要
2.普通模式下的快捷键
方向键:h表示左移,l表示右移,k表示上移,j表示下移
数字结合方向键可以自由地在文本中遨游,比如10j技术表示光标向下移动10行,10l表示光标向右移动10个字符
G :将光标移动至文档的最后一行的行首,Ground(地面的意思)
gg : 将光标移动至文档的第一行的行首
10gg :将光标移动至第10行的行首,这个数字可自定义
yy :复制当前行
2yy :复制连当前行在内往下的两行,数字可自定义
dd :剪切当前行
3dd :剪切连当前行在内的往下的三行,数字可自定义
p : 从当前行往下粘贴已复制或者已剪切的内容
P :从当前行网上粘贴已复制或者已剪切的内容
翻屏
快捷键:
ctrl+f :向文末移动一页
ctrl+d:向文末移动半页
ctrl+b:向文本开头移动一页
ctrl+u:向文本开头移动半页
ctrl+e:向文末移动一行
ctrl+y:向文本开头移动一行
10%:将光标移动至文本的10%处
zz:居中显示光标所在行
组合快捷键
:
dw:剪切光标往后的1个字符串
d2w:剪切光标往后的2个字符串,特殊字符将作为分隔符
d2l:剪切光标右边的2个字符
d2h:剪切光标左边的2个字符
y2l:复制光标右边的两个字符
y2h:复制光标左边的两个字符
正则表达式组合键:(0,^,$)
d0:从光标到本行开头全部剪切下来,^符号和0有相同的作用
y0:从光标到本行开头全部复制下来,^符号和0有相同的作用
d$:从光标到本行结尾全部剪切下来y$:从光标到本行结尾全部复制下来
文本对象:
aw:一个词
as:一句。
ap:一段。
ab:一块(包含在圆括号中的)
这样y和d都可以和文本对象组合来实现对文本的操作
yas:复制光标所在的单词或句子
das:剪切光标所在的单词或句子
3.末行模式下的快捷键
:e! :重新加载本文档,并且丢弃未保存的改动,若已经使用w命令保存过则不受此影响
:x :保存退出,相当于wq命令
:Vex :垂直分割一个窗口
:Sex :水平分割一个窗口
/pattern :从光标所在处向文末查找此pattern
?pattern :从光标所在处向文档开头查找此pattern
n:向后查找下一个匹配点
N:与n作用相反
特别地:
:vimgrep/pattern/ filename :查找本文档的pattern,不会高亮显示,但是会计算匹配
替换命令(很实用):
:s/old/new :替换当前行的第一个匹配点
:s/old/new/g :替换当前行的所有匹配点
:%s/old/new/g :替换全文所有的匹配点
:%s/^/something/g :在全文每行开头加上something
:%s/$/something/g :在全文每行末尾加上something
:%s/old/new/gc :交互式地确认每次替换,y表示肯定,n表示否定,a表示全部肯定
:%s/old/new/gic :不区分大小写地替换,并且交互式地确认每次替换