我有tagbar插件在vim中完美运行但没有标签显示在neovim中。
当我从两者中使用TagbarDebug
时,我可以看到从vim运行时ctags输出正常,但是从neovim,tagbardebug.log.ctags_out
只有以下行:
^[[31;01m'^[[39;00m^[[31;01m/usr/local/bin/ctags-f---format=2--excmd=pattern--fields=nksSaf--extra=--file-scope=yes--sort=no--append=no-V--language-force=python--python-kinds=icfmv/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/nvimoU8Oxr/1.py^[[39;00m^[[31;01m'^[[39;00m
从tagbardebug.log
,我可以看到两者之间的ctags略有不同。从vim中,日志包含:
Calling shell to execute: "('/usr/local/bin/ctags' '-f' '-' '--format=2' '--excmd=pattern' '--fields=nksSaf' '--extra=' '--file-scope=yes' '--sort=no' '--append=no' '-V' '--language-force=python' '--python-kinds=icfmv' '/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/v0jhgoR/4.py') >/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/v0jhgoR/5 2>&1"
但是从neovim来看,等效的是:
Executing command: "'/Users/owen/miniconda3/bin/xonsh' '-c' ''/usr/local/bin/ctags' '-f' '-' '--format=2' '--excmd=pattern' '--fields=nksSaf' '--extra=' '--file-scope=yes' '--sort=no' '--append=no' '-V' '--language-force=python' '--python-kinds=icfmv' '/var/folders/_z/tz5..."
区别似乎是如何调用ctags - vim直接调用它,但neovim调用shell可执行文件并传递-c参数。但是,如果我从命令行运行neovim使用的命令,它可以正常工作。
我已经尝试过设置tagbar_ctags_bin
,但这并没有什么区别。
关于我需要挖掘的其他地方的任何线索?
我的猜测是xonsh
做了一些关于连接到终端的假设,这在终端Vim中是正确的,但不是gVim,也不是Neovim(使用管道调用命令)。
尝试将shell*
选项设置为其默认值:
:set shell& shellcmdflag& shellpipe& shellquote& shellredir& shellxquote& shellxescape&
(或者只是删除配置中设置这些选项的行。)
区别似乎是如何调用ctags - vim直接调用它但是neovim调用shell可执行文件并传递-c参数
不,这只是日志输出的差异。 Vim还使用'shell'选项和'shellcmdflag'选项(由日志消息暗示:调用shell执行...)。