前段时间一篇关于Vim练级的文章大火,酷壳也有翻译,还贴出一张Cheat Sheet。
Vim能力强大,功能繁多,快捷键更是数不胜数,以至于苦逼的程序员们根本无法完全掌握。事实上,每个使用Vim的程序员,包括高级用户,只是在使用Vim所提供功能的一个很小的子集,而且也只需要使用一个很小的子集。在学会基本的编辑技巧的基础上,根据自己的需要,掌握一些“高级”技巧,可以极大的提高编辑效率。这里约略地列出我平时习惯使用的有限的一些技巧,希望你能够发现自己不知道却对你也适用的某一个。
- G, gg: 光标移动至文件首/尾;
- zz, zt, zb: 将光标所在行居中/置顶/置尾;
- H, M, L: 定位光标到当前窗口的首/中/尾;
- *, #, n, N: 向前/后定位当前光标所在word,n/N沿相应/相反方向重复定位;
- ^a, ^x: 若当前光标所在word是数字,可递增/递减该数字,同时支持decimal和hexadecimal;
- ^, g_: 即Shift+6,定位光标到当前行首/尾的第一个非空白字符;
- ^d, ^t: insert模式下,缩进/反缩进当前行;
- ^w: insert模式下,向后删除一个word;
- ^y: insert模式下,复制上一行同列字符;
- ^x^f: insert模式下,补全路径名;
- ^x^n: insert模式下,补全tag(需要tags文件的支持);
- ^x^l: insert模式下,补全行(根据上一行);
- I, A: 定位光标至当前行首/尾,并进入insert模式,I会忽略行首空白;
- D, C: 删除光标所在位置到行尾的字符,C会进入insert模式;
- cib: 或者ci(或者ci),删除当前括号内的所有字符并进入insert模式。c还可以是d或者其他编辑字符,i还可以是a(此时会将括号一同删除),b还可以是B(大括号)、t(html标签)或者具体的配对符号,如(), [], {}, ”, “”, <>。
参加:h text-objects;
- %: normal模式下%会跳转至配对括号;
- %: lastline模式下代表当前buffer的文件名,可以有许多修饰字符,例如:sp %:r.cpp会分割当前窗口,并打开当前文件对应的cpp文件,%:r代表文件名消除最后一个后缀之后的字符串。
参见:h filename-modifiers;
- :set op? : 显示选项op的当前值;
- :set op! : 反转开关式选项op,比如:set nu!开关行号显示,:set paste!开关paste模式
注:
1. 非特别说明,命令均在normal模式;
2. 字符前的^指Ctrl;
3. 技巧来自于实践,技艺提升于运用。