Как выполнить автозаполнение в vim на основе частичного совпадения через ctags

Пример:

В файле в другом каталоге у меня есть функция, определяемая следующим образом:

def _generator_function_1(self):
   passs

В файле моего текущего каталога я набрал следующее:

def test_generI

где I обозначает мою позицию курсора.

Я хотел бы использовать функцию автозаполнения vim (т.е. через ^n или ^p) для автозаполнения определения функции до test_generator_function_1. Есть ли способ настроить автозаполнение vim для соответствия не на основе полных префиксов? Или есть ли в ctags способ генерировать теги на основе ключевых слов вместо полных определений функций?

РЕДАКТИРОВАТЬ: Чтобы уточнить, мне особенно интересно, существует ли автозаполнение на основе ключевых слов. У меня настроено автодополнение по тегам, поэтому, если я наберу "_gen", то ^n завершится, чтобы дать мне "_generator_function_1". В моем примере, однако, именно потому, что строка имеет префикс "test", "test_gener" в качестве начального введенного слова не приводит к каким-либо предложениям автозаполнения. Поэтому мне интересно, можно ли это как-то сделать возможным.


person Leeren    schedule 25.04.2018    source источник
comment
Вы должны включить теги в свой полный вариант. Сделайте это с: set complete+=t. См. :help 'complete'   -  person MAGA    schedule 26.04.2018
comment
Включение тегов для завершения уже включено. Я должен был уточнить. В этом случае, если я начну текст с _gen, я смогу завершить строку, чтобы она стала _generator_function_1. Именно потому, что я начинаю с test_gener, я не могу выполнять автозаполнение, потому что я предполагаю, что нет тегов, начинающихся с test_gener (хотя есть те, которые начинаются с _gener. Вот почему мне интересно, существует ли такое автозаполнение на основе ключевых слов.   -  person Leeren    schedule 26.04.2018
comment
Насколько я знаю, завершение нечеткого поиска не поддерживается стандартными командами ^n или ^p. Вам понадобится внешний подключаемый модуль (например, YouCompleteMe), чтобы получить завершение нечеткого поиска .   -  person MAGA    schedule 26.04.2018
comment
Забавно то, что я использую YCM в течение многих лет и только что решил удалить его, думая, что встроенного автозаполнения Vim будет достаточно для большинства моих нужд. Это здорово знать! Мне все еще интересно, может ли быть способ анализа по ключевым словам при создании тегов с использованием exuberant-ctags для этого дела или, возможно, с использованием всестороннего завершения vim...   -  person Leeren    schedule 26.04.2018


Ответы (1)


  1. Vim не имеет «функции автозаполнения». У него есть только «завершение», а не «автозаполнение». Вам нужен плагин для "автозаполнения".
  2. Нет, невозможно получить желаемое поведение без серьезного вимскриптинга. См. :help complete-functions.
person romainl    schedule 26.04.2018