Vim 不会跳转到 :tselect 匹配列表中选择的标签的正确行

Vim 不会跳转到 :tselect 匹配列表中选择的标签的正确行

当我输入时:tselect pool,会出现预期的匹配项列表:

  # pri kind tag               file
  1 F C m    poll              pika/adapters/select_connection.py
               line:238 class:IOLoop
               def poll(self):
  2 F C m    poll              pika/adapters/select_connection.py
               line:544 class:_PollerBase
               def poll(self):
  3 F C m    poll              pika/adapters/select_connection.py
               line:682 class:SelectPoller
               def poll(self):

但无论我选择什么数字,vim 总是跳转到第一个选择的行,在本例中是第 238 行。我尝试了:tn/ :tp,标签编号会改变,但仍然在同一行。

tags文件中的相应行:

poll    pika/adapters/select_connection.py      /^    def poll(self):$/;"       m       line:238        class:IOLoop
poll    pika/adapters/select_connection.py      /^    def poll(self):$/;"       m       line:544        class:_PollerBase
poll    pika/adapters/select_connection.py      /^    def poll(self):$/;"       m       line:682        class:SelectPoller

我的~/.ctag

--recurse
--links=no
--fields=+n

ctags 版本是Exuberant Ctags 5.8

答案1

另据回答,要使用 vim,我应该使用ctags -n--excmd=number,将此选项添加到 后~/.ctags,它现在运行良好。

--excmd=number强制ctags仅使用标签文件中的行号进行定位,尽管有一line:列,但显然vim无法识别它。

现在看起来是这样的tags

poll    pika/adapters/select_connection.py      238;"   m       line:238        class:IOLoop
poll    pika/adapters/select_connection.py      544;"   m       line:544        class:_PollerBase
poll    pika/adapters/select_connection.py      682;"   m       line:682        class:SelectPoller

主要的区别是第三列,vim 称之为{tagaddress}

{tagaddress} 将光标定位在标签上的 Ex 命令。它可以是任何 Ex 命令,但有限制(请参阅 |tag-security|)。Posix 仅允许行号和搜索命令,这些命令最常用。

我相信这就是模式不起作用的原因。

相关内容