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

[Обновление 06/2013: как заметил пользователь doubleDown, у меня неверная терминология: удобные C-p и C-n нажатия клавиш не omni завершение (omnicompletion), но ключевое слово завершение.Я думаю, что терминология Vim здесь несколько неудачна: omni на латыни означает каждые , тогда как ключевое слово представляется более ограниченным выбором.По умолчанию C-p и C-n работают, чтобы завершить каждое слово прозы, а не только ключевые слова.Это заставило меня думать, что они должны быть omni завершение, а не просто ключевое слово завершение.]

Ну ... :-) ... просто набрав в заголовкеНа мой вопрос очень эффективный ответ появился в каталоге вопросов с похожими названиями.(Который просто показывает, насколько хорош этот сайт!) Я все равно задам вопрос - может быть, у кого-то есть еще более полезный ответ в магазине ... Итак, вот так:

VimКлючевое слово Omni Завершение (по умолчанию привязано к C-p и C-n в режиме редактирования) - Intellisense для бедняков, что, по моему опыту, почти так же хорошо.Он ищет в буферах совпадающие строки.

Однако некоторые сценарии файловых типов выходят за рамки, когда ключевое слово omni complete выполняет рекурсивный поиск включенных файлов.( Обновление: Поиск во включенных файлах на самом деле используется по умолчанию, что видно по :help 'complete' в Vim 7.3; просто в некоторых типах файлов включается много материала, что приводит к замедлению, возможно, усугубляетсясубоптимальными алгоритмами.) Так что для сценария Perl, он начнет поиск в списке модулей.Рекурсивный.Это может быстро перерасти в серьезное сканирование, вы знаете, дисковый ввод-вывод и все эти уродливые вещи.

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

Так что пока лучшее решение - просто отключить использование включенных файлов при завершении по умолчаниюговоря:

:set complete-=i    # remedy
:help 'complete'    # documentation

Есть что добавить к этому?

Ответы [ 3 ]

2 голосов
/ 25 января 2014

Если вы хотите быть немного более хирургическим, вы можете использовать:

autocmd FileType perl set complete-=i

так что вы просто влияете на поведение Perl-кода.

2 голосов
/ 14 июля 2011

Вы должны использовать Perlomni, написанный c9s.

https://github.com/c9s/perlomni.vim

http://www.vim.org/scripts/script.php?script_id=2852

Вы можете посмотреть видео, как использовать.

http://www.youtube.com/watch?v=hZ7871WcIv0

для простоты, чтобы завершить метод, наберите что-нибудь и "->", затем.

#!perl
use strict;
use warnings;
use DateTime;

my $dt = DateTime->new;

$dt->ye # type <c-x><c-o>, you'll get $dt->year
1 голос
/ 15 февраля 2012

Полагаю, в этом вопросе нет ничего более того, что я уже сказал в своем вопросе:

:set complete-=i    # remedy
:help 'complete'    # documentation

Чтобы добавить новости Vim к этому избыточному ответу, я недавно добавил в свою конфигурацию Vim (в основном с помощью GVim в Windows) красивый шрифт и несколько замечательных плагинов:

GVim on Win7 with all of the above features

...