资讯专栏INFORMATION COLUMN

如何让 Vim 美观又实用(1)

wthee / 2987人阅读

摘要:比如,由于的一些命令,比如默认是在当前目录下进行,实际就变成了在项目根目录下搜索。如果使用,那么也是必不可少。比如一个比较实用的就是用查找当前光标下的词。今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。

我学习计算机不久就开始用了 vim,到现在也三四年了,且算是对 vim 有了一定的控制力。在这里分享一下使用过程中的一些“心路历程”,说实话,要留意的小地方有很多,但是由于很多不可抗(_懒_)因素,本系列并不保证还有后续 :)

以下内容适用于对 vim 有一定使用经验的用户,相关的具体配置参见 space-vim。有些内容我虽然给出了链接,但是可能并没有完整贴出代码,需要你自行查找,理解并抽取整合对自己有用的地方。

project

vim 本身并没有 project 的概念,只有工作目录 working directory, :echo getcwd() 可以查看当前的工作目录。vim-rooter 可以给 vim 引入 project 的概念,它会自动将 vim 的工作目录切换到项目根目录。在 vim-rooter 中,所谓 project,是指符合某些“特征”的目录,比如有些目录含有 Rakefile,.git 等,这些目录就会被认为是项目的根目录。

有了项目根目录以后,我们就能够以项目为单位进行各种查找搜索等等。比如,由于 fzf 的一些命令,比如 Ag 默认是在当前目录下进行,实际就变成了在项目根目录下搜索。当然了,也可以显式参考 space-vim 的 fzf 配置 指定 fzf Ag 的搜索目录:

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

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(""), extend({
       "dir": spacevim#util#RootDirectory(),
       "options": "--prompt="".spacevim#util#RootDirectory()."> ""},
 g:fzf_layout))

升级电脑 :)。这一点我深有感触,14 款 13 寸的 MBP 我用了好几年,虽然内存 16 G,但是双核四线程还是有些捉襟见肘,使用 fzf 在用户目录下查找感觉还是要些时间的。但是换了 18 款 的 15 寸 MBP,六核十二线程就连用户目录查找都是快的飞起。

状态栏

很多人的状态栏一开始大都只是为了看起来酷而已,我也不能免俗 :)。最早的 space-vim 状态栏效果是仿 spacemacs ,里面显示了各种信息。

后来状态栏部分被提取成了一个独立的插件 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   :call spacevim#vim#file#CtrlG()

默认的 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]
异步获取 git branch

eleline.vim 现在采用异步的方式获取 git branch 信息,代码参考了 chemzqm 的 statusline.vim。因为 chemzqm 在 V2EX 的一个帖子提到,通过系统调用,也就是直接依赖 vim-fugitive 获取 git branch 可能会对启动时间有几十毫秒的影响。不过他可能以 neovim 为主,并没有支持 vim8,我在他的基础上加入了 vim8 的支持 :)。

更多关于 vim 的启动优化,有兴趣可以查看 chemzqm 的这篇文章:vim 启动速度优化的一些经验 。

今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。因为我高中是学美术的,大学也在传播学院呆过一年多,所以对审美有一定要求,对死板的界面实在看不下去 :(。

总之,happy vimming :)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25015.html

相关文章

  • 使用 neovim 的浮动窗口你再次爱上 fzf

    摘要:自从的浮动窗口被合到以后,很多插件都利用了这个特性实现了很多很酷的功能,比如,另外和也利用了这一特性。首先是个配置项让输入上方,搜索列表在下方打开的方式选择还有个函数指定如何打开浮动窗口设置浮动窗口打开的位置,大小等。 fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。 自从 ...

    msup 评论0 收藏0
  • 7种提高工作效率的Vim操作技巧

    摘要:本文首发于姐的教程网种提高工作效率的操作使用技巧,授权我原创发布。宏使用命令重复执行一些比较简单的任务时非常高效,但是当需要执行的操作比较复杂时,宏是更理想的选择。每执行一次宏就会把当前行替换成的形式并自动将光标移到下一行。 本文首发于VV姐的vim教程网 7种提高工作效率的Vim操作-Vim使用技巧(6),授权我原创发布。 Vim一直被认为是一种非常高效的文本编辑器,但是对于普通用户...

    Travis 评论0 收藏0
  • window环境下搭建vim前端开发环境

    摘要:前端折腾记自从换了一个键盘之后,对的热情递增,终于找一个时间,静下心来折腾一下,在下使用着实蛋疼,不过前端开发要求不高,之前用,其实也没用到什么牛逼的插件,将就着用吧。 前端 window vim 折腾记 自从换了一个poker键盘之后,对vim的热情递增,终于找一个时间,静下心来折腾一下vim,在window下使用vim着实蛋疼,不过前端开发要求不高,之前用sublime,vscod...

    Bmob 评论0 收藏0
  • 自己动手搭建一个离线下载在线观看站

    摘要:接下来我们开始创建一个实例,具体配置信息如下可自行抉择之后点击按钮,实例就创建成功了,需要等上几分钟。但比起网盘而言还是差了很多,没有网盘那种变态的下载速度,不过还是可以将就着用的,你不妨试试看 115又涨价了 记得115网盘刚出来那会,某宝不到一百一年会员,第二年涨到接近两百,今天直接三百了,还让不让我们这些穷屌丝活了,看个小姐姐就这么贵吗?本文基于自己年费过期又不想花那么多钱的背...

    aristark 评论0 收藏0

发表评论

0条评论

wthee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<