Есть ли способ изменить поведение меню vim omnicomplete?

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

То, что я хотел бы сделать, - открыть меню omnicomplete, затем ввести тип, чтобы сузить результаты, затем нажать ввод или вкладку или пробел или что-то, чтобы вставить выбранный пункт меню.

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

Ответы

Ответ 1

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

:set completeopt+=longest

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

Ответ 2

set wildmenu
set wildmode=list:longest,full

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

Ответ 4

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

:he compl-current

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

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

Это полностью назад, я знаю, но как это работает.

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