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 допускает только номера строк и команды поиска, которые в основном используются.

Я считаю, что это причина, почему шаблон не работает.

Другие вопросы по тегам