2008-09-10 2 views
23

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

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

ответ

29

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

+0

Это работает отлично подходит для меня, но я в последнее время переключился на новую среду разработки. Теперь вместо поиска только моих открытых буферов, похоже, выполняется поиск всего моего исходного дерева, которое занимает довольно много времени - и это делает только для Perl. Как я могу увидеть, использует ли эта новая среда TAGS? Я попробовал `: tag` и получил` E73: tag stack empty`. Есть ли что-то отличное от тегов, которые могли быть включены? Также новая среда имеет немного более новую версию vim. Я бы хотел, чтобы он ТОЛЬКО искал открытые буферы. – redbmk 2012-12-03 18:43:59

7

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

Также ознакомьтесь с этим vim script for perl.

9

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

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

autocmd FileType php set omnifunc=phpcomplete#CompletePHP 

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

Описание omnicfunc for perl. Не знаю, как хорошо это работает.

3

Ctrl + N

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

3

Клип .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 трюков in this thread at Perlmonks --which ссылки на еще большее количество потоков с большими больше настроек.

5

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

набор iskeyword + =:

Это будет автозаполнения имена модулей и т.д.