Vim as an IDE

Working in process

Vim的命令需要经常使用才不会忘记。 把Vim打造成适合日常工作的“轻量级IDE”可以有助于熟悉和记忆Vim命令。

一些基本的Vim配置

设置mapleader

先在.vimrc文件里设置一下mapleader,

let mapleader = ',' 

然后就可以用快捷键,+a来快速地输入命令:Ack!

nmap <leader>a :Ack! 

安装一个插件管理系统

装一个插件管理系统可以更好地管理Vim的插件。我选了pathogen.vim作为Vim的插件管理。

搜索文件内容

ack.vim插件可以用来搜索文件内容。

nmap <leader>a :Ack!  

按快捷键,a就可以进行文件内容搜索了。比如输入“sku”就会列出所有含“sku”的文件,效果见下面的截图。

diff-highlight

ack.vim插件是借助第三方的程序来进行搜索的,然后把搜索结果展示在Vim里。 默认情况下,ack.vim使用ack来进行搜索。ack相比grep要更快、更好用The Silver Searcher(ag)是一个类似ack的搜索工具,号称比ack还要快。 OS X下可以用homebrew方便地安装它们,

brew install ack
brew install ag

ack和ag也可以在Windows下安装。 ag在Windows下可通过Cygwin方式来安装,详见ag的官方Wiki

让ag成为ack.vim的搜索工具,

let g:ackprg = 'ag --nogroup --column'  " 让ack.vim使用ag作为搜索工具

更快地搜索

基本上,ag和ack能接受的参数是类似的。

默认情况下,ack和ag会搜索当前工作目录。可以通过限制搜索目录来提高搜索速度,比如,

:Ack! text-to-search some_dir

也可以限制搜索的文件类型,比如

:Ack! --java text-to-search 

ack默认会忽略.git目录。也可以使用--ignore-dir=name选项来指定要忽略的目录。 对于ag,默认会忽略.gitignore中指定的文件。 也可以在.agignore文件里加上想忽略的文件。比如,忽略maven工程下的target目录。 .agignore的语法和.gitignore类似。

ack的更多选项见其官方文档。 如果某个工程需要经常使用某些选项,可以把这些选项放到工程目录下的.ackrc文件中。

文件系统导航

文件系统的导航可以借助NERDTree插件来实现。

nmap <leader>d :NERDTreeToggle<CR>

按下快捷键,d,效果见如下截图,

diff-highlight

在NERDTree窗口按?键可以显示帮助信息。

:NERDTreeFind命令可以在NERDTree窗口中显示当前文件的位置,类似于Eclipse的”Link with Editor”功能。

nmap <leader>df :NERDTreeFind<CR>

现在输入快捷键,df就可以在NERDTree窗口中显示当前文件。

快速打开文件

借助command-t插件可以实现文件的快速打开。

nmap <leader>t :CommandT<CR>

按下快捷键,t,其效果如下图所示,

diff-highlight

搜索是fuzzy的,不用输入完整的文件名,只要输入文件路径和文件名中的某些字母就可以。

command-t对Ruby和C编译器有依赖,详见其文档。另一个类似的插件CtrlP是纯VimScript实现的。 但是在使用中发现CtrlP有时候不能找到指定的文件,所以还是选择了command-t。

另外:CommandTBuffer命令可以用来快速打开已经打开的文件。 而:CommandTJump命令可用了在jumplist里快速定位。

自动补全

supertab插件可以用作轻量级的自动补全工具。输入文字,然后按tab键进行补全,如下图所示,

diff-highlight

执行外部程序

总是时不时地需要执行一些外部命令。比如代码写好后,用git命令来提交代码。 可以借助tmux来执行外部命令。tmux可以开多个pane,进行文字编辑时可以输入C-b+z进入“全屏模式”。 需要执行外部命令时,再C-b+z退回多pane模式。

diff-highlight

最后附上我的Vim配置作为参考。

2016-04-21 12:36
推荐到豆瓣

如果你觉得这篇文章对你有用,可以微信扫一扫表示🙏 / If you find this post is useful to you, buy me 🍶 via Wechat