Есть ли способ включить завершение кода для Perl в vim?
Удивительно, но когда вы хорошо разбираетесь в vim, вы можете кодировать даже быстрее, чем стандартные IDE, такие как Eclipse. Но одна вещь, которую мне действительно не хватает, - это завершение кода, особенно для длинных имен переменных и функций.
Есть ли способ включить завершение кода для Perl в vim?
8 ответов
Ctrl-P (Получить предыдущее совпадение) и Ctrl-N (Получить следующее совпадение) - это своего рода завершение псевдокода. Они в основном ищут в файле (Назад для Ctrl-P, Вперед для Ctrl-N), который вы редактируете (и любые открытые буферы, и если вы используете TAGS что-нибудь в вашем файле TAG) для слов, которые начинаются с того, что вы печатаете, и добавляете выпадающий список. Он работает на удивление хорошо для переменных и имен функций, даже если он не имеет смысла. Обычно я использую Ctrl-P, поскольку переменная или функция, которую я ищу, обычно отстает в коде. Также, если вы оставите ту же копию Vim открытой, она будет искать файлы, которые вы ранее открывали.
Vim 7 поддерживает всестороннее завершение.
Например, у меня есть это в моем vimrc
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
и затем, когда я нажимаю Ctrl-x Ctrl-o в режиме вставки, я получаю раскрывающийся список возможностей автозаполнения.
Вот omnicfunc для Perl. Не знаю, насколько хорошо это работает, хотя.
Что ж, общий механизм завершения Vim на удивление хорош, просто используя Ctrl-N в режиме вставки. Кроме того, завершение строки очень удобно, используя Cx Cl.
Также проверьте этот скрипт vim для Perl.
Стандарт CTRL-N
а также CTRL-P
работать еще лучше, если добавить в файл ~/.vim/ftplugin/perl.vim следующее:
установить iskeyword+=:
Затем он автоматически завершит имена модулей и т. Д.
Клип.vimrc в одном из других ответов немного неправильный. Чтобы превратить вашу клавишу табуляции в клавишу автозаполнения, используйте этот код:
inoremap <tab> <c-r>=InsertTabWrapper()<cr>
function! InsertTabWrapper()
let col = col('.') - 1
if !col || getline('.')[col - 1] !~ '\k'
return "\<tab>"
else
return "\<c-p>"
endif
endfunction
Вы можете найти это и множество других трюков с vim в этой теме на Perlmonks, которые ссылаются на еще больше потоков с большим количеством настроек.
Ctrl+N
Это объясняется в книге Perl Hacks, а также о том, как выполнить завершение пакета. Настоятельно рекомендуется.
Вы должны взглянуть на плагин SuperTab: http://www.vim.org/scripts/script.php?script_id=1643 Это позволит вам выполнить завершение (либо OmniCompletion, либо обычное завершение), используя tab и shift-tab вместо ^N и ^P.