[Обновление от 06/2013: как заметил пользователь doubleDown, у меня неверная терминология: удобные Cp
и Cn
нажатия клавиш не всенаправленные завершение (всестороннее завершение), но ключевое слово завершение. Я думаю, что терминология Vim здесь несколько неудачна: omni - латинский для каждый , тогда как ключевое слово кажется более ограниченным выбором. C-p
и C-n
по умолчанию работают по умолчанию, чтобы завершить каждое слово прозы, а не только ключевые слова. Это заставило меня подумать, что они должны быть всенаправленным завершением, а не просто ключевое слово завершением.]
Ну ... :-) ... просто набрав заголовок своего вопроса , высокоэффективный ответ появился в каталоге вопросов с похожими названиями. (Что просто показывает, насколько хорош этот веб-сайт!) Я все равно задам вопрос - может быть, у кого-то есть еще более интересный ответ ... Итак, вот оно:
ключевое слово Vim omni (по умолчанию привязан к Cp
и Cn
в режиме редактирования) - это Intellisense для бедняков, который, по моему опыту, почти не хуже. Он ищет в буферах совпадающие строки.
Однако некоторые сценарии типов файлов выходят за рамки, имея ключевое слово omni завершения, выполняющее рекурсивный поиск включенных файлов. ( Обновление: Поиск включаемых файлов на самом деле используется по умолчанию, как видно из : help 'complete'
с Vim 7.3; просто с некоторыми типами файлов включается много всего , что приводит к медлительности, которая, возможно, усугубляется неоптимальными алгоритмами.) Итак, для сценария Perl он начнет поиск в списке модулей. Рекурсивно. Это может быстро перерасти в серьезное сканирование, ну знаете, дисковый ввод-вывод и все эти уродливые вещи.
В результате я предпочитаю воздерживаться от использования этой функции, потому что теряю время и удобство, которые получаю, имея чтобы прервать поиск, используя Cc
, что оставляет некоторую случайную строку в выводе, которую я затем должен удалить.
Таким образом, лучшее решение на данный момент - просто отключить использование включенных файлов при завершении по умолчанию, сказав :
:set complete-=i # remedy
:help 'complete' # documentation
Что-нибудь добавить к этому?