玩转VIM编辑器-程序员的一些技巧

玩转VIM编辑器程序员的一些技巧

代码语法高亮显示

      可以通过使用:syn on:syn off来开启或关闭代码语法高亮显示,效果如下:

 

clip_image002   clip_image004

 

巧妙的缩排

      对于特定的区域可以通过使用它CTRL+V来选择,然后通过>来整块向右移动,或者通过<向左移动。

      如果没有其他的设定,一般这种移动只能做一次,然后vim就进入正常模式,可以通过设定

:vnoremap < <gv

:vnoremap > >gv

来支持无限次移动,按ESC退出即可。

vim中访问man帮助页面

      vim编辑器中,如果想查询那个wordman页面,可以通过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 将会非常方便。

clip_image006

如上图所示,假如我想让其中的两行按等号对齐,则将光标定位到有等号的那行,执行 :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可以向左缩进