Есть ли способ включить завершение кода для Perl в vim?
Вопрос
Удивительно, но когда вы хорошо разбираетесь в vim, вы можете писать код даже быстрее, чем в стандартных IDE, таких как Eclipse.Но мне очень не хватает автодополнения кода, особенно для длинных имен переменных и функций.
Есть ли способ включить завершение кода для Perl в vim?
Решение
Ctrl-п (Получить предыдущий матч) и Ctrl-Н (Получить следующее совпадение) — это своего рода дополнение псевдокода.Они в основном ищут файл (назад для Ctrl-п, Нападающие за Ctrl-Н) вы редактируете (и все открытые буферы, а также если вы используете TAGS что-либо в своем TAG-файле) слова, которые начинаются с того, что вы вводите, и добавляете раскрывающийся список.Он на удивление хорошо работает с именами переменных и функций, даже если это не IntelliSense.Обычно я использую Ctrl-п поскольку переменная или функция, которую я ищу, обычно находится позади кода.Кроме того, если вы оставите ту же копию Vim открытой, она будет искать файлы, которые вы ранее открывали.
Другие советы
Vim 7 поддерживает омни-дополнение.
Например, у меня есть это в моем vimrc
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
а затем, когда я нажимаю Ctrl-x Ctrl-o в режиме вставки я получаю раскрывающийся список возможностей автозаполнения.
Вот омникфункция для перла.Хотя понятия не имею, насколько хорошо это работает.
Что ж, общий механизм завершения Vim на удивление хорош: достаточно просто использовать Ctrl-N в режиме вставки.Кроме того, очень удобно завершать строки с помощью C-x C-l.
Также проверьте это vim-скрипт для Perl.
Стандарт CTRL-N
и CTRL-P
будет работать еще лучше, если вы добавите в файл ~/.vim/ftplugin/perl.vim следующее:
установить ключевое слово+=:
Затем он автоматически заполнит имена модулей и т. д.
Клип .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--который ссылается на еще больше тем с большим количеством настроек.
Вам следует посмотреть плагин SuperTab:http://www.vim.org/scripts/script.php?script_id=1643Он позволяет вам выполнять завершение (либо OmniCompletion, либо обычное завершение), используя Tab и Shift-Tab вместо ^N и ^P.
Ctrl+Н
Это объясняется в книге Perl Hacks, а также о том, как выполнить завершение пакета.Настоятельно рекомендуется.