Есть ли способ изменить поведение меню vim omnicomplete? - PullRequest
15 голосов
/ 22 ноября 2008

Omnicompletion работает, но автоматически вставляет первый результат.

То, что я хотел бы сделать, - это открыть меню «Неполнота», затем набрать, чтобы сузить результаты, затем нажать «Ввод» или «Tab», «Пробел» или что-то еще, чтобы вставить выбранный пункт меню.

Возможно ли это?

Ответы [ 4 ]

16 голосов
/ 22 ноября 2008

Команда, которую вы ищете:

:set completeopt+=longest

Он вставит самый длинный общий префикс из всех предложений, затем вы можете ввести и удалить, чтобы сузить или расширить результаты.

3 голосов
/ 29 ноября 2008
set wildmenu
set wildmode=list:longest,full

Найдено здесь . Существует также отличный плагин для всех ваших потребностей завершения называется SuperTab продолжение .

0 голосов
/ 22 ноября 2008

Это общее поведение завершения Vim. Для полного обзора вы можете сделать

:he compl-current

Но для вашего конкретного случая (для которого требуется, чтобы завершение было в состоянии 2 или 3 (описано в документе выше). Вы можете просто использовать Backspace или Control-H для перехода из состояния один в состояние два. 2 вы можете сузить поиск, набрав обычные символы. Таким образом, чтобы завершить сужение:

compl<C-X><C-P><BS>letion

Я знаю, что это полностью назад, но вот как это работает.

Редактировать: Вы можете использовать клавишу со стрелкой «Вниз» вместо Control-H или Backspace, и она имеет преимущество в том, что не удаляет символ.

0 голосов
/ 22 ноября 2008

Этот плагин может делать то, что вы после: autocomplpop

Или вы можете попробовать заставить всплывающее меню завершения Vim работать как в IDE .

...