Vim не переходит к правильной строке тега, выбранной в: tselect match list

381
georgexsh

Когда я печатаю :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.

0

1 ответ на вопрос

1
georgexsh

Согласно другому ответу на SO, для работы с vim я должен использовать ctags -nили --excmd=number, после добавления этой опции ~/.ctags, теперь он работает нормально.

--excmd=numberForce 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 называется :

Команда Ex, которая устанавливает курсор на тег. Это может быть любая команда Ex, хотя существуют ограничения (см. | Tag-security |). Posix допускает только номера строк и команды поиска, которые в основном используются.

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