Как приручить завершение ключевого слова Vim (не всенаправленное) для файлов Perl?

[Обновление от 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

Что-нибудь добавить к этому?

6
задан Community 23 May 2017 в 10:27
поделиться