Вызов omnicompletion для каждого нажатия клавиш в vim - PullRequest
3 голосов
/ 07 апреля 2010

У меня есть скрипт vim, который использует однострочное окно для получения шаблона имени пользователя от пользователя.Этот шаблон может быть завершен до полного имени файла из базы данных, если вы нажмете CTRL-X CTRL-O.Теперь единственная проблема заключается в том, что вы должны нажать клавишу автозапуска самостоятельно.Но я хочу, чтобы автозаполнение работало постепенно, чтобы для каждого набираемого символа оно автоматически обновлялось (подумайте о диалоге открытия файла CTRL-R в Eclipse).

Есть ли способ использовать автокоманду или какой-то другойтип обратного вызова для вызова функции за CTRL-X CTRL-O для каждого символа, который пользователь печатает в этом конкретном окне?

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Остин на правильном пути, но только с неправильным событием. Посмотрите на CursorMovedI событие autocmd. По сути, он будет срабатывать каждый раз, когда курсор мыши перемещается в режиме вставки. Введите символ? Курсор перемещается, и событие запускается.

Имейте в виду, что это немного сложно для вашего использования, потому что курсор может двигаться из-за других вещей, чем набор или удаление символов. Пользователь может использовать клавиши со стрелками, чтобы вернуться туда, где он хочет редактировать. Вы будете выскакивать с каждым ходом.

Я не могу найти что-либо в справке об автокомандах локального окна, но локальный буфер существует, так что это может быть достаточно близко

1 голос
/ 07 апреля 2010

Попробуйте - и при необходимости измените - этот плагин: http://www.vim.org/scripts/script.php?script_id=1879

Я счастливый пользователь.

0 голосов
/ 15 февраля 2011

Вы должны посмотреть на :h autocmd. Я считаю, что событие InsertChange может быть использовано для того, что вы хотите.

...