玩转VIM编辑器-程序员的一些技巧
代码语法高亮显示
可以通过使用:syn on和:syn off来开启或关闭代码语法高亮显示,效果如下:
巧妙的缩排
对于特定的区域可以通过使用它CTRL+V来选择,然后通过>来整块向右移动,或者通过<向左移动。
如果没有其他的设定,一般这种移动只能做一次,然后vim就进入正常模式,可以通过设定
:vnoremap < <gv
:vnoremap > >gv
来支持无限次移动,按ESC退出即可。
在vim中访问man帮助页面
在vim编辑器中,如果想查询那个word的man页面,可以通过K来访问,当然,对于多个含义的,可以通过NK来访问不同章节的意义,其中N为数字,比如sleep,如果直接按K得到用户命令sleep的帮助页面,如果输入3K,那么将得到sleep函数的帮助页面。
定制man帮助页面的查找
上面介绍的通过K来查询man帮助信息,如果对于perl程序员,可能更多的希望查询perldoc的信息,那么可以通过设定
:set keywordprg=perldoc\ -f
将会在按下K的时候,自动转移到perldoc而不使用man页面了。
跳转到变量定义处
在光标位于某个变量的时候,可以通过gd来跳转到局部变量的定义处,通过gD来跳转到全局变量的定义处。
Tabular: 在 Vim 中对齐文本
Vim 插件 Tabular 允许你在 Vim 中按等号、冒号、表格等来对齐文本,对于经常写代码的朋友来说,有 Tabular 将会非常方便。
如上图所示,假如我想让其中的两行按等号对齐,则将光标定位到有等号的那行,执行 :Tab /= 即可。
又如,若想将下面的
|1|2|
|one|two|
变成
| 1 | 2 |
| one | two |
可执行 :Tab /|。
更详细的信息,我会单独拿出一部分来讲解这个plugin的使用。
使用它CTRL键来增加或者减小数字
可以通过CTRL+A来使得光标对应的数字加1,或者CTRL+X来将光标对应的数字减1。当然,支持从0减小为负数的。
在vim插入状态中执行vim命令
1. 处于vim的插入状态
2. 使用CTRL+O,这会使你暂时进入命令状态
3. 输入需要执行的命令
4. 命令执行完后,会自动返回到插入状态
查看当前文件细节
使用CTRL+G就可以看到类似
"***.c" [Modified] 338 lines --39%-- 的基本信息,
更详细的信息可以通过g CTRL+G来查看,看到效果为
Col 52-59 of 55-62; Line 135 of 338; Word 379 of 816; Byte 3996 of 9506
关于vim的状态栏信息
我们可以通过:set laststatus=2来使能查看行、列及百分比信息。
例如:
:set statusline=Filename:%t\ Line:\ %l\ Col:\ %c
看到的信息为:
Filename:shao.c Line: 140 Col: 4
又如下面的一些示例,可以打印一些比较感兴趣的内容:
• :set statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P
• :set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
•:set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'
• :set statusline=...%r%{VarExists('b:gzflag','\ [GZ]')}%h
下面是一些状态栏中可以使用的关键变量,更详细的参考:help statusline
• F – 全路径Full path
• M – 修改标志显示为"+"或"-"
• R – 只读标记,显示为"RO".
• L – 行
• c – 列
• P – 显示窗口底部的百分比
大小写转换
控制键 | 描述 |
~ | 将光标指定的字符转换大小写 |
5~ | 更改接下来的5个字符 |
g~{移动键} | 比如g~j将更改当前行和下面一行的大小写 |
g~~ | 将当前行全部更改大小写 |
gUU | 将当前行全部更改为大写 |
guu | 将当前行全部更改为小写 |
gUaw | 将当前字字更改为大写 |
guaw | 将当前字更改为小写 |
U | 将visual块全部改为大写 |
u | 将visual块全部改为小写 |
guG | 从当前位置到文件结尾全部改为小写 |
gUG | 从当前位置到文件结尾全部改为大写 |
拼写检查
拼写检查命令 | 描述 |
:set spell | 启动拼写检查,将会高亮显示可能出现的错误 |
]s | 跳到下一个拼写错误的地方 |
[s | 跳到前一个拼写错误的地方 |
z= | 对于拼写错误的建议 |
zg | 将高亮显示错误的添加为有效单词 |
:echo &spelllang | 显示拼写检查的语言 |
:set spelllang=code | 设置拼写检测的语言 |
退出确认
一般,如果我们忘记了保存修改的内容,而直接操作:q,将会提示No write since last change,我们可以通过:confirm q来提示是、否或取消当前操作。
提示为:
:confirm q
Save changes to "shao.c"?
[Y]es, (N)o, (C)ancel:
关于更新时间戳的问题
一般我们执行:w的时候,不管有没有对文件内容有所操作,都会将时间戳更新,如果只是希望在更改了文件内容时,才更新时间戳,可以使用:up来操作。
制表符和空格键
命令 | 描述 |
:set expandtab | 将tab键自动转为空格键,一般是8个空格 |
:set tabstop=4 | 将tab转换为4个空格 |
:retab | 将文件中所有的tab转换为空格 |
:set shiftwidth=4 | 指定缩进的空格数目 |
:set ai | 自动缩进,使用它^D可以向左缩进 |