当我输入时: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 仅允许行号和搜索命令,这些命令最常用。
我相信这就是模式不起作用的原因。