Vim не переходит к правильной строке тега, выбранной в:tselect match list
Когда я печатаю :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 ответ
Согласно другому ответу на SO, для работы с VIM, я должен использовать ctags -n
или же --excmd=number
после добавления этой опции в ~/.ctags
Теперь он работает нормально.
--excmd=number
Force 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 допускает только номера строк и команды поиска, которые в основном используются.
Я считаю, что это причина, почему шаблон не работает.