Есть ли способ включить завершение кода для Perl в vim? - PullRequest
23 голосов
/ 10 сентября 2008

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

Есть ли способ включить завершение кода для Perl в vim?

Ответы [ 8 ]

30 голосов
/ 10 сентября 2008

Ctrl - P (Получить предыдущее совпадение) и Ctrl - N (Получить следующее совпадение) являются разновидностями завершения псевдокода , Они в основном ищут файл (Назад Ctrl - P , Вперед Ctrl - N ), который вы редактируете (и любые открытые буферы) и если вы используете TAGS что-либо в вашем файле TAG) для слов, начинающихся с того, что вы печатаете, и добавьте раскрывающийся список. Он работает на удивление хорошо для переменных и имен функций, даже если он не имеет смысла. Обычно я использую Ctrl - P , поскольку переменная или функция, которую я ищу, обычно отстает в коде. Также, если вы оставите ту же копию Vim открытой, она будет искать файлы, которые вы ранее открывали.

9 голосов
/ 10 сентября 2008

Vim 7 поддерживает всестороннее завершение.

Например, у меня есть это в моем vimrc

autocmd FileType php set omnifunc=phpcomplete#CompletePHP

, а затем, когда я нажимаю Ctrl-x Ctrl-o в режиме вставки, я получаю раскрывающийся список возможностей автозаполнения.

Вот omnicfunc для perl . Хотя понятия не имею, насколько хорошо это работает.

7 голосов
/ 10 сентября 2008

Что ж, общий механизм завершения Vim на удивление хорош, просто используя Ctrl-N в режиме вставки. Кроме того, завершение строки очень удобно, используя C-x C-l.

Также проверьте этот vim скрипт для perl .

5 голосов
/ 16 сентября 2008

Стандартные CTRL-N и CTRL-P работают еще лучше, если добавить в файл ~ / .vim / ftplugin / perl.vim следующее:

set iskeyword + =:

Затем он автоматически завершит имена модулей и т. Д.

4 голосов
/ 16 сентября 2008

Клип .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 - которая ссылается на еще больше потоков с большим количеством настроек.

3 голосов
/ 27 ноября 2009
3 голосов
/ 15 сентября 2008

Вы должны посмотреть на плагин SuperTab: http://www.vim.org/scripts/script.php?script_id=1643 Это позволит вам выполнить завершение (либо OmniCompletion, либо обычное завершение), используя tab и shift-tab вместо ^ N и ^ P.

3 голосов
/ 10 сентября 2008

Ctrl + N

Это объясняется в книге Perl Hacks, а также о том, как выполнить завершение пакета. Настоятельно рекомендуется.

...