Tagbar插件可在vim中工作,但在neovim中不工作

时间:2019-04-24 12:53:51

标签: vim neovim tagbar

我的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,但这没什么区别。

关于我还需要挖掘其他地方的任何线索吗?

1 个答案:

答案 0 :(得分:2)

我的猜测是xonsh对连接到终端做了一些假设,这在终端Vim中是正确的,但在gVim或Neovim(后者使用管道调用命令)中却没有。

尝试将shell*选项设置为其默认值:

:set shell& shellcmdflag& shellpipe& shellquote& shellredir& shellxquote& shellxescape&

(或直接在配置中删除设置这些选项的行。)

  

区别似乎在于如何调用ctags-vim直接调用它,而neovim调用shell可执行文件并传递-c参数

不,那只是日志输出的不同。 Vim还使用'shell'选项和'shellcmdflag'选项(其日志消息提示:正在调用shell以执行... )。