玩转VIM编辑器-额外技巧
给整个条目列表添加点阵式符号
比如,原文为:
The Geek Stuff article categories:
Vi / Vim Tips and Tricks
Linux Tutorials
SSH Tips and Tricks
Productivity Tips
HowTo & FAQ
Hardware Articles
Nagios Tutorials
MySQL and PostgreSQL Tips
操作后变为:
The Geek Stuff article categories:
*Vi / Vim Tips and Tricks
*Linux Tutorials
*SSH Tips and Tricks
*Productivity Tips
*HowTo & FAQ
*Hardware Articles
*Nagios Tutorials
*MySQL and PostgreSQL Tips
操作方法为:
1. 使用CTRL+V选定第一列;
2. 按下I(即i的大写字母);
3. 按下TAB可以移动全部选择行;
4. 然后插入*号即可,所有的操作都会影响所有的行;
5. ESC退出编辑;
使用update-alternatives设置vim为系统通用默认编辑器
在Debian操作系统中,可以设置vim为通用默认编辑器,命令为:
update-alternatives --set editor <PATH OF VIM>
将vim作为默认编辑器
对于普通用户,可以在bashrc中,设置默认编辑器为vim,只需要在bashrc中添加export EDITOR=vi即可。
格式化段落
使用gqap来格式化段落。
重用宏
对于我们使用的宏,如果不小心录制错误了,可以有两种方法来修改:
1. 重新录制宏;
2. 修改宏
a) “ap 用于粘贴宏;
b) 修改宏中错误的地方;
c) “ayy 重新录制该宏;
缩进代码块
原文为:
{
printf("Hello World!\n");
printf(“Done.”);
}
缩进后为:
int main()
{
printf("Hello World!\n");
printf(“Done.”);
}
有两种方法,分别为:
1. 移动光到{或者},然后输入>i{即可右移,左移为<;
2. 使用块模式
a) 将光标移动到需要移动的行;
b) 使用v键来选择移动区域;
c) 使用方向键选定行;
d) 使用>或者<来右移或者左移;
组合的威力
前面讲了很多技巧,如果我们将导航命令和编辑命令组合,将会得到更强大的功能。
键 | 描述 |
d<导航键h、j、k、l> | 向导航方向删除 |
dw | 删除一个单词 |
d$ | 一直删除到行尾 |
d0 | 一直删除到行首 |
dG | 删除到文件末尾 |
dgg | 删除到文件开始 |
dk | 删除当前和上一行 |
Dj | 删除当前和下一行 |
dM | 删除到屏幕中间 |
dH | 删除到屏幕开始 |
dL | 删除到屏幕底部 |
y <导航键h、j、k、l> | 根据导航键来拷贝 |
c<导航键h、j、k、l> | 根据导航键来修改 |
查看所有修改的历史
:changes即可
刷新屏幕
当屏幕由于一些原因而导致失真时,可以使用CTRL+L来重绘屏幕。
插入非键盘字符
使用:digraphs可以查看一些非键盘字符;
我们可以在插入状态中使用CTRL+K At来输入@,其中的At就是使用digraphs中查看的对应字符。这里可以输入日文、阿拉伯符号等。
更多信息,参考:help diagraphs
Vim的ex模式
输入Q就可以进入ex模式,然后输入visual或者:vi就可以回到正常模式。
在我们需要连续不断地执行命令的时候,可以进入该模式。
令光标位于匹配的末尾
一般在使用/pattern搜索的时候,光标会位于匹配的开始出,我们可以使用/pattern\zs来使得光标位于该行的结尾。
查看字符的ASCII值
在光标位于字符n上的时候,输入ga就会在底端显示:
<n> 110, Hex 6e, Octal 156
编辑二进制文件
使用命令行参数b,即 vim –b filename
折叠-查看部分源码
这个特性对于有很多子函数的代码很有用;
自动折叠
:set foldmethod=indent即可折叠所有具有成对{}的代码。
折叠键 | 描述 |
za | 展开光标下的内容 |
zR | 展开所有折叠的内容 |
zM | 折叠全部 |
手工折叠
:set foldmethod=manual
折叠键 | 描述 |
zf <导航键j、k> | 根据导航符来折叠 |
zf/pattern | 通过搜索到的pattern来折叠代码 |
我们也可以将所有的折叠信息保存起来,用的时候再加载,然后会还原原来设置的。方法为:mkview 和 :loadview。