Czy jest jakiś sposób, aby włączyć uzupełnianie kodu dla Perla w vim?

Zaskakująco, jak jesteś dobry w Vimie, możesz kodować nawet szybciej niż standardowe IDE, takie jak Eclipse. Ale jedna rzecz, której naprawdę brakuje, to Ukończenie kodu, szczególnie w przypadku długich nazw zmiennych i funkcji.

Czy Jest jakiś sposób, aby włączyć uzupełnianie kodu dla Perla w Vimie?

 23
Author: brian d foy, 2008-09-10

8 answers

Ctrl-P (Pobierz poprzednie Dopasowanie) i Ctrl-N (Get Next Match) to rodzaj pseudo-kodu uzupełniającego. W zasadzie przeszukują plik (wstecz dla Ctrl-P , do przodu dla Ctrl-N) edytujesz (i wszelkie otwarte bufory, a jeśli używasz znaczników w pliku znaczników) słowa, które zaczynają się od tego, co wpisujesz i dodajesz rozwijaną listę. Działa zaskakująco dobrze dla zmiennych i nazw funkcji, nawet jeśli nie jest intellisense. Generalnie używam Ctrl-P ponieważ zmienna lub funkcja, której szukam, jest zwykle w tyle w kodzie. Ponadto, jeśli zachowasz tę samą kopię Vima otwartą, przeszukuje on pliki, które wcześniej otworzyłeś.

 29
Author: Kris Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-21 11:46:12

Vim 7 obsługuje Omni completion.

Na przykład, mam to w moim vimrc

autocmd FileType php set omnifunc=phpcomplete#CompletePHP

A następnie, gdy wciskam Ctrl-x Ctrl-o w trybie wstawiania, dostaję listę rozwijaną możliwości autouzupełniania.

Oto omnicfunc dla Perla. Nie mam pojęcia, jak to działa.

 9
Author: Mark Biek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 14:03:45

Cóż, ogólny mechanizm zakończenia Vima jest zaskakująco dobry, wystarczy użyć Ctrl-N w trybie wstawiania. Również uzupełnianie linii jest bardzo przydatne, używając C-x C-L.

Sprawdź również ten skrypt vim dla Perla .

 7
Author: Christian Oudard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 14:00:04

Standardowe CTRL-N i CTRL-P działają jeszcze lepiej, jeśli dodasz następujące elementy do swojego~/.vim / ftplugin / perl.plik vim:

Set iskeyword+=:

Spowoduje automatyczne uzupełnianie nazw modułów itp.

 5
Author: Mark Grimes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 18:00:36

The .klip vimrc w jednej z innych odpowiedzi jest nieco błędny. Aby zmienić klawisz tab w Klawisz autouzupełniania, użyj tego kodu:

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

Możesz znaleźć to i mnóstwo innych sztuczek Vima w tym wątku w Perlmonks--który łączy się z jeszcze większą liczbą wątków z większą ilością dostosowań.

 4
Author: Matt Siegman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 14:11:35

Powinieneś zajrzeć do wtyczki SuperTab: http://www.vim.org/scripts/script.php?script_id=1643 Pozwala to na uzupełnianie (OmniCompletion lub regularne uzupełnianie) za pomocą tab i shift-tab zamiast ^N I ^p.

 3
Author: indentation,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 14:41:37
 3
Author: Bram Schoenmakers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-09 12:40:19

Ctrl+N

Jest to wyjaśnione w książce Perl Hacks, wraz z tym, jak wykonać kompletację pakietów. Gorąco polecam.

 3
Author: Matthew Watson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-24 08:19:04