Vim 配置 Catgs 用于前端开发
之前我一直以为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,我感觉还挺好用的:-)