我学习计算机不久就开始用了 vim,到如今也三四年了,且算是对 vim 有了必定的控制力。在这里分享一下使用过程当中的一些“心路历程”,说实话,要留意的小地方有不少,可是因为不少不可抗(_懒_)因素,本系列并不保证还有后续 :)git
如下内容适用于对 vim 有必定使用经验的用户,相关的具体配置参见 space-vim。有些内容我虽然给出了连接,可是可能并无完整贴出代码,须要你自行查找,理解并抽取整合对本身有用的地方。github
vim 自己并无 project 的概念,只有工做目录 working directory, :echo getcwd()
能够查看当前的工做目录。vim-rooter 能够给 vim 引入 project 的概念,它会自动将 vim 的工做目录切换到项目根目录。在 vim-rooter 中,所谓 project,是指符合某些“特征”的目录,好比有些目录含有 Rakefile,.git 等,这些目录就会被认为是项目的根目录。vim
有了项目根目录之后,咱们就可以以项目为单位进行各类查找搜索等等。好比,因为 fzf 的一些命令,好比 Ag
默认是在当前目录下进行,实际就变成了在项目根目录下搜索。固然了,也能够显式参考 space-vim 的 fzf 配置 指定 fzf Ag
的搜索目录:app
call fzf#vim#ag(a:query, extend({ \ 'dir': spacevim#util#RootDirectory(), \ 'options': '--prompt="'.spacevim#util#RootDirectory().'> "'}, \ g:fzf_layout))
spacevim#util#RootDirectory() 对 vim-rooter 进行了简单封装,若是存在 vim-rooter 会直接进行调用,不然会进行简单探测是不是 git 仓库。异步
fzf 是一个命令行的模糊查找工具,用过的人应该知道,单就一个 CTRL-R
查找历史就值得强烈推荐,更没必要说其余各类可以提高生产力的地方。若是使用 fzf,那么 fzf.vim 也是必不可少。工具
fzf.vim 提供的各类功能就不细谈了,这里谈一下可能出现的槽点:有人以为 fzf.vim 的模糊查找太模糊了,候选项太多,有时候因为对模糊查找的依赖性,致使输入比较随性,反而比精确查找要输入更多字符。学习
这里提几个建议:优化
:FZF ~/.vim/plugged
。不要上来就 :FZF
默认在用户目录下查找,那天然是候选项很是多。这一点只要用 vim-rooter 就能够实现,如今大都用的都是 git,通常项目都是可识别的。Ag
,好比不要直接 :Ag
打开 fzf 再输入想要查找的内容,交互式地查询虽然比较酷,可是通常没有在调用时就指定查找字符串更加高效。好比一个比较实用的就是用 Ag
查找当前光标下的词。call fzf#vim#ag(expand('<cword>'), extend({ \ 'dir': spacevim#util#RootDirectory(), \ 'options': '--prompt="'.spacevim#util#RootDirectory().'> "'}, \ g:fzf_layout))
不少人的状态栏一开始大都只是为了看起来酷而已,我也不能免俗 :)。最先的 space-vim 状态栏效果是仿 spacemacs ,里面显示了各类信息。spa
后来状态栏部分被提取成了一个独立的插件 eleline.vim。随着时间的推移,我愈来愈以为显示的不少信息其实有点多余,因而就有了下面的精简模式。插件
安装 eleline.vim 并在 .vimrc
中设置:
let g:eleline_slim = 1
就可使用精简模式,只显示 buffer number, window number, filename 还有一些插件的信息。
若是想要在精简模式查看多一些信息的话,能够用 CTRL-G
,见 :h CTRL-G
。若是对默认的 CTRL-G
不满意,也能够参考 space-vim 对 CTRL-G
进行加强.
nnoremap <silent> <C-G> :call spacevim#vim#file#CtrlG()<CR>
默认的 CTRL-G
:
"/usr/local/etc/profile.d/z.sh" 243 lines --65%--
加强后:
"/usr/local/etc/profile.d/z.sh" 243 lines --65%-- Cursor 159:1 8.6K TOT:2 [sh]
eleline.vim 如今采用异步的方式获取 git branch 信息,代码参考了 chemzqm 的 statusline.vim。由于 chemzqm 在 V2EX 的一个帖子提到,经过系统调用,也就是直接依赖 vim-fugitive 获取 git branch 可能会对启动时间有几十毫秒的影响。不过他可能以 neovim 为主,并无支持 vim8,我在他的基础上加入了 vim8 的支持 :)。
更多关于 vim 的启动优化,有兴趣能够查看 chemzqm 的这篇文章:vim 启动速度优化的一些经验 。
今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。由于我高中是学美术的,大学也在传播学院呆过一年多,因此对审美有必定要求,对死板的界面实在看不下去 :(。
总之,happy vimming :)