对我来说,代码编辑器最重要的功能就是快速打开我需要的文件,那就少不了两个功能,文件目录树,文件名快速搜索。NERDTree和ctrlp这两个插件就是做这两件事情的。
在这之前,我们需要安装一个好用的插件管理工具。
插件管理工具Vundle
github主页:https://github.com/VundleVim/Vundle.vim
首先安装这个,后面的事情就比较简单了。
执行下面的命令安装,前提必须有git
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
git clone完成之后就算完成了。下面就是插件管理的逻辑。
在.vimrc中加入下面的代码。
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'preservim/nerdtree'
Plugin 'Xuyuanp/nerdtree-git-plugin'
Plugin 'ctrlp.vim'
call vundle#end() " required
call vundle#begin()与call vundle#end()之间就是vundle管理的插件列表,新增插件就是把插件加入这里,然后退出vim重启输入:PluginInstall
。如果要删除插件就是:PluginClean
。此外还可以使用:PluginUpdate
更新版本。
文件目录树NERDTree
github主页:https://github.com/preservim/nerdtree
如何把vim搞得更像IDE呢,那就是显示一个文件目录树。
安装方式在github上面已经有说明了,我们使用vundle的方式加入下面的插件代码,最终配置已经写在上面的vendle的配置了
Plugin 'preservim/nerdtree'
Plugin 'Xuyuanp/nerdtree-git-plugin'
这里有两个插件,一个是NERDTree,一个是在NERDTree上显示git状态。其实安装完之后你打开vim会发现并没有显示,我们再加一些配置。
github上面已经罗列了一些例子,我使用的配置如下。
" 如果打开的是文件夹则自动显示NERDTree
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') |
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif
" 使用F2开关NERDTree显示
map <F2> :NERDTreeToggle<CR>
" 如果关闭到NERDTree是最后一个窗口则关闭整个vim
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() |
\ quit | endif
" 配置git状态显示的图标
let g:NERDTreeGitStatusIndicatorMapCustom = {
\ 'Modified' :'✹',
\ 'Staged' :'✚',
\ 'Untracked' :'✭',
\ 'Renamed' :'➜',
\ 'Unmerged' :'═',
\ 'Deleted' :'✖',
\ 'Dirty' :'✗',
\ 'Ignored' :'☒',
\ 'Clean' :'✔︎',
\ 'Unknown' :'?',
\ }
快速打开文件ctrlp
github主页:https://github.com/kien/ctrlp.vim
使用过sublime或vscode的同学应该很喜欢ctrl+p的功能,这个插件的名字就是这个意思。安装也参考上面vundle的配置。
再在配置文件中加入下面两行,其实就是设置快捷键映射。对于使用mac的同学更习惯cmd+p,但是这个快捷键vim的支持不是很好,我多番尝试并没有成功,所以还是继续使用ctrl+p。
let g:ctrlp_map = '<C-p>'
let g:ctrlp_cmd = 'CtrlP'