闻心阁

一蓑烟雨看苍生,半壶浊酒笑红尘

Vim 配置 Catgs 用于前端开发

2019-01-19 约 1 分钟读完 搬砖秘籍

之前我一直以为ctags是使用Vim开发C++专用,竟然错过了这么强大的工具。看来凡事不能先入为主,以后要引以为戒。

安装 universal-ctags

universal-ctags 是一个现代化的ctag实现,本文只介绍使用Vim的安装方法

brew install --HEAD universal-ctags/universal-ctags/universal-ctags

其他系统请参考项目主页:ctags

每次生成ctags文件都要手动run一次命令,这一点也不Vim,当然也有解决方法。

安装vim-gutentags

vim-gutentags是一个用于自动生成tag文件的插件。使用vim-plug安装

Plug 'ludovicchabant/vim-gutentags'

配置

如果只是介绍安装方法,那就必要写这篇文章了,安装完成之后还是要针对前端开发的特点手动调教一下。首先我们在任何目录打开文件,都会在目录下生成ctags文件,这样的话对项目代码有入侵性,并不推荐,建议把tag文件写在特定的目录里。可以做如下设置:

let g:gutentags_cache_dir = '~/.cachetags'

这样生成的tags文件会统一放在~/.cachetags目录下。另外默认生成的文件名叫tags,也可以根据个从喜好修改:

let g:gutentags_ctags_tagfile = '.tags'

这样生成的文件是隐藏文件。另外一个很纠结的问题是有些文件我们并不想让他们生成tags文件,比如node_modules下文件,还有.git目录下的文件。这里有个取巧的方法是根据前文《Vim配置使用FZF》中的方法,把ctags获取文件列表的命令改成ripgrep的搜索,这样就可以自动忽略.gitignore下的文件。如下:

let g:gutentags_file_list_command = 'rg --files'

另外有的文件我们也不想让其生成ctags文件,比如*.md*.svg文件,可以通过universal-ctags的全局配置来配置,这里要注意的是universal-ctags默认的全局配置文件已经不是~/.ctags./.ctags,而是在 ~/.ctags.d/*.ctags./.ctags.d/*.ctags。比如我的全局配置文件放在~/.ctags.d/ignore.ctags。简要配置如下 :

--exclude=node_modules
--exclude=gulp
--exclude=.git
--exclude=*.md
--exclude=*.svg

结合FZF

记得我们在文章《Vim配置使用FZF》中的介绍,FZF是支持ctags的,所以可以做个快捷键配置,如下:

map <leader>t :Tags<CR>

这样就可以方便的使用ctrl-]ctrl-o来进行tag跳转了。

最后分享我的Vim配置:sailor103/neovim-mac,欢迎fork,我感觉还挺好用的:-)