将你的Vim 打造成轻巧强大的IDE

将你的Vim 打造成轻巧强大的IDE

Vim和Emacs一个称为神之编辑器一个被称为编辑器之神,固然很是夸张,但也足以说明这两 款软件的优秀和在程序员界的地位。但是它们都已漫长的学习曲线让人望而生畏,阻止了大 多数人进入。作为一名几乎完全使用Vim写各种代码、文档的人,我想把我自己平时使用的 插件和配置整理下来,方便自己的总结和归纳,如果能有幸帮助到一些想学习Vim但是又不知 道如何入门的人来说,那就再荣幸不过了。 

在下面的内容中,我会介绍我使用的插件、Vim的配置,最后如果你觉得这些配置手动太麻烦 的话,我推荐你看我的另一篇文章(从零搭建和配置OSX开发环境), 在那篇文章的末尾,我给出了一个自动化配置和管理Vim的方法


你看的到的插件 

从上面那种截图中肉眼能看到的插件说起,把整个界面按照左窗口、主窗口、右窗口和下窗 口命名,依次介绍出现在这个窗口中的主要插件。 

主窗口  

作为一款主要用于书写代码的文本编辑器,一个足够舒服、靓丽的配色当然是首要考虑的。 我使用的配色主题是molokai(官方地址),在 你安装好了这个插件之后,你需要下面几行配置应用它: 

" Switch syntax highlighting on, when the terminal has colors

if(t_Co > 2 || has("gui_running")) && !exists("syntax_on")

  syntax on

endif

 

" Javascript syntax hightlight

syntax enable

 

" Set syntax highlighting forspecific filetypes

autocmd BufRead,BufNewFile Appraisals setfiletype=ruby

autocmd BufRead,BufNewFile *.md setfiletype=markdown

autocmd Syntax javascript setsyntax=jquery

 

" Color scheme

colorscheme molokai

highlight NonText guibg=#060606

highlight Folded  guibg=#0A0A0A guifg=#9090D0



另外一个推荐的vim主题是solarized(官方地址)。 

在选定了一个适合自己的主题之后,就需要一些配置去解决排版的问题,比如字符编码和缩 进等问题。 

" Backspace deletes like most programs ininsert mode

setbackspace=2

" Show the cursor position all the time

setruler

" Display incomplete commands

setshowcmd

" Set fileencodings

setfileencodings=utf-8,bg18030,gbk,big5

 

filetype plugin indent on

 

" Softtabs, 2 spaces

settabstop=2

setshiftwidth=2

setshiftround

setexpandtab

 

" Display extra whitespace

setlist listchars=tab:»·,trail:·

 

" Make it obvious where 80 characters is

settextwidth=80

setcolorcolumn=+1

 

" Numbers

setnumber

setnumberwidth=5

 

setmatchpairs+=<:>

sethlsearch



在第68行,水平和垂直方向分别有一条高亮条,这是用来表示我当 前光标所处于的行和列 用的。实现它,只需要几行简单的配置就可以了:  

" Highlight current line

au WinLeave * setnocursorline nocursorcolumn

au WinEnter * setcursorline cursorcolumn

setcursorline cursorcolumn



关于代码补全  

有些人可能已经发现了,在我的主窗口中没有演示代码补全的功能,我需要对此做一个说明。 我本人不喜欢过于强大的代码补全,所以默认的对于我来说已经完全足够了,如果你需要使 用更强大的代码补全,我推荐你使用YouCompleteMe(官方地址)。 

左窗口  

左窗口是一个用于浏览目录结构的插件nerdtree(官方地址)。 同样一些简单的配置之后,它便能为你提供一个方便够用的功能。 

" NERD tree

letNERDChristmasTree=0

letNERDTreeWinSize=35

letNERDTreeChDirMode=2

letNERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']

letNERDTreeShowBookmarks=1

letNERDTreeWinPos="left"

" Automatically opena NERDTree ifno files where specified

autocmd vimenter * if!argc() | NERDTree | endif

" Close vim ifthe only window left openis a NERDTree

autocmd bufenter * if(winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

" Open a NERDTree

nmap <F5> :NERDTreeToggle<cr>



右窗口  

在我的截图中,右窗口陈列出了我当前打开的rb文件中申明的类、变量及方法等等。这是一 款名叫tagbar的插件,它为我们提供了一个简单的方式去浏览当前文件的结构,并且支持 在各个标签之间快捷的跳转。同理,安装之后,需要一些配置: 

" Tagbar

letg:tagbar_width=35

letg:tagbar_autofocus=1

nmap <F6> :TagbarToggle<CR>



如果你发现默认的Tagbar不能支持你的语言,比如Css, Clojure, Markdown等等,你可以 参照这篇文章为它提供额外的支持。 

下窗口  

下窗口包含了两个部分:一个是用于全局搜索的窗口和一个状态条。 

全局搜索是一个基于文件名的搜索功能,可以快速定位一个文件。这是ctrlp这个插件提 供的功能。下面是ctrlp的一些配置: 

" ctrap

setwildignore+=*/tmp/*,*.so,*.swp,*.zip,*.png,*.jpg,*.jpeg,*.gif " MacOSX/Linux

letg:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'



ctrlp默认会使用grep进行搜索,效率低且慢。所以,我使用了ag去替换默认的搜索 功能。ag是一款轻量级的搜索工具,速度非常快。为了集成ag,需要添加下列配置:  

ifexecutable('ag')

  " Use Ag over Grep

  setgrepprg=ag\ --nogroup\ --nocolor

  " Use ag inCtrlP forlisting files.

  letg:ctrlp_user_command = 'ag %s -l --nocolor -g ""'

  " Ag is fast enough that CtrlP doesn't need to cache

  letg:ctrlp_use_caching = 0

endif



下面状态条中会依次显示:当前模式、Git分支、文件路径、文件是否保存以及当前所载行和 列的信息。这是通过vim-powerline来实现的。其中显示Git信息需要配合vim-fugitive插件一些使用。  

setlaststatus=2 " Always display the status line

setstatusline+=%{fugitive#statusline()} "  Git Hotness



小结  

通过以上的配置,你就可以拥有一些如第一张图所示的那样,看起来还不错的编辑器。当然, Vim之所以如此倍受推崇,只是依靠这些还是远远不够的。接下来,我要介绍一些看不见的插 件来实实在在的提升Vim体验。 

回到顶部

看不见的实用插件 现代化的插件管理  

在我的另一篇文章中(从零搭建和配置OSX开发环境) ,我已经详细介绍过Vundle这个管理Vim插件的一个软件,这里不做过多介绍。 

在Vim中执行你想要运行的命令  

vim-run-interactive让你可以在Vim中执行几乎任何你想要在命令行中执行的命令。举例 来说,假设你有条git update的自定义命令,你可以通过:RunInInteractiveShell git update来执行它,而不需要退出Vim。添加一条配置,可以简化这个步骤: 

?


如此一来,你可以通过<Leader> + r + 命令键来激活执行命令。如果你不知道什么是Leader键,你可以去百度或者Google一下。 

Vim的语法检查  

Vim中有个很强大的语法检查插件,它支持几乎所有常用的语言的语法检测[syntastic(https://github.com/scrooloose/syntastic)]。 附上一张来自官方的截图: 

为了让它更好的工作,同样需要一些配置: 

" configure syntastic syntax checking to check on openas well as save

letg:syntastic_check_on_open=1

letg:syntastic_html_tidy_ignore_errors=[" proprietary attribute \"ng-"]

letg:syntastic_always_populate_loc_list = 1

letg:syntastic_auto_loc_list = 1

letg:syntastic_check_on_wq = 0

setstatusline+=%#warningmsg#

setstatusline+=%{SyntasticStatuslineFlag()}

setstatusline+=%*



Rails集成开发套件  

我是一名Ruby的爱好者,所以Vim中少不了针对Ruby的一系列插件。我作为一名Web开发者, Rails这个大名鼎鼎的框架自然也是有所涉猎。所以在我的Vim中有着针对它们开发的一套插 件。 

插件列表: 

  • ruby-vim:在快速的在module, class, method中跳跃。 

  • vim-bundler:在Vim中集成Bundler。 

  • vim-endwise:自动补全end关键字。 

  • vim-rails:它的功能很多,可以说是用 Vim开发Rails不可缺少的一个插件。更详细的信息,可以前往它的官方网站获取。 

  • vim-rspec:在Vim中执行Rspec测试。 

" Cucumber navigation commands

autocmd User Rails Rnavcommand step features/step_definitions-glob=**/* -suffix=_steps.rb

autocmd User Rails Rnavcommand config config -glob=**/* -suffix=.rb -default=routes

 

" RSpec.vim mappings

map <Leader>t :call RunCurrentSpecFile()<CR>

map <Leader>s :call RunNearestSpec()<CR>

map <Leader>l :call RunLastSpec()<CR>

map <Leader>a :call RunAllSpecs()<CR>



更多好用的工具  

还有很多好用的插件,如果每个都一一说明,那么篇幅再长一倍怕也是不够。所以,我这里 就把一些好用的插件列出来,有兴趣的可以自己看看。 

回到顶部

备注  

有更多的一些插件我没有都列出来,它们一般用于特定语法的开发,不一定适合所有人。你 可以参考从零搭建和配置OSX开发环境 这篇文章,自动管理、配置你的Vim环境。 

来自:   http://yuez.me/jiang-ni-de-vim-da-zao-cheng-qing-qiao-qiang-da-de-ide/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值