如何强制fzf的:Tags命令使用指定标签文件及相关问题
一、强制fzf使用指定标签文件
你遇到的“Failed to create tags”报错,本质是fzf执行完自定义ctags命令后,默认会去当前目录查找tags文件,但你的标签生成在/home/ctags/tags,导致fzf误以为创建失败。可以通过两种方式解决:
方式1:修改ctags命令让fzf直接读取指定标签
调整g:fzf_tags_command,在生成标签后直接输出该文件内容,让fzf获取标签数据:
let g:fzf_tags_command='/home/ctags/bin/ctags -R --extra=+qf --excmd=pattern --exclude=Makefile -f /home/ctags/tags /home/work/project/ && cat /home/ctags/tags'
方式2:直接让:Tags加载已生成的标签文件
如果不需要每次执行:Tags都重新生成标签,可以覆盖默认命令,直接读取指定路径的标签文件:
command! Tags call fzf#vim#tags('cat /home/ctags/tags', {'down': '40%'})
注意:如果需要更新标签,手动执行你的ctags命令即可。
二、系统头文件标签未生效的解决
你当前的set tags+=/usr/include配置错误,Vim的tags选项需要指定具体的标签文件路径,而非目录。按以下步骤修复:
- 先在/usr/include目录生成tags文件(需sudo权限):
sudo /home/ctags/bin/ctags -R --extra=+qf --excmd=pattern -f /usr/include/tags /usr/include/
- 修改vimrc中的tags配置,指定生成好的系统标签文件路径:
set tags=./tags; set tags+=/usr/include/tags
./tags;中的分号表示Vim会向上递归查找当前目录及所有父目录下的tags文件,这个配置是有效的。
内容的提问来源于stack exchange,提问作者Corentin Michel
相关产品推荐
相关产品推荐

