Existe alguma maneira de ativar o preenchimento de código para Perl no vim?
Pergunta
Surpreendentemente, à medida que você fica bom no vim, você pode codificar ainda mais rápido do que IDEs padrão, como o Eclipse.Mas uma coisa que realmente sinto falta é a conclusão do código, especialmente para nomes longos de variáveis e funções.
Existe alguma maneira de ativar o preenchimento de código para Perl no vim?
Solução
Ctrl-P (Obter correspondência anterior) e Ctrl-N (Get Next Match) são uma espécie de conclusão de pseudocódigo.Eles basicamente pesquisam o arquivo (de trás para frente Ctrl-P, Encaminha para Ctrl-N) você está editando (e quaisquer buffers abertos, e se estiver usando TAGS qualquer coisa em seu arquivo TAG) para palavras que começam com o que você está digitando e adiciona uma lista suspensa.Funciona surpreendentemente bem para variáveis e nomes de funções, mesmo que não seja intellisense.Geralmente eu uso Ctrl-P já que a variável ou função que procuro geralmente está atrasada no código.Além disso, se você mantiver a mesma cópia do Vim aberta, ele irá pesquisar os arquivos que você abriu anteriormente.
Outras dicas
O Vim 7 oferece suporte à conclusão omni.
Por exemplo, eu tenho isso no meu vimrc
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
e então, quando eu pressiono Ctrl-x Ctrl-o no modo Inserir, recebo uma lista suspensa de possibilidades de preenchimento automático.
Aqui está uma função omnic para perl.Não tenho ideia de como isso funciona bem.
Bem, o mecanismo genérico de conclusão do Vim é surpreendentemente bom, apenas usando Ctrl-N no modo de inserção.Além disso, o preenchimento de linha é muito útil, usando Cx C-l.
Confira também isso script vim para perl.
O padrão CTRL-N
e CTRL-P
funcionará ainda melhor se você adicionar o seguinte ao seu arquivo ~/.vim/ftplugin/perl.vim:
definir ispalavra-chave+=:
Em seguida, ele completará automaticamente os nomes dos módulos, etc.
O clipe .vimrc em uma das outras respostas está um pouco errado.Para transformar sua tecla Tab em uma chave de preenchimento automático, use este código:
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
Você pode encontrar isso e muitos outros truques do vim neste tópico em Perlmonks--que vincula ainda mais tópicos com muito mais personalizações.
Você deve dar uma olhada no plugin SuperTab:http://www.vim.org/scripts/script.php?script_id=1643Permite que você faça a conclusão (o OmniCompletion ou a conclusão regular) usando tab e shift-tab em vez de ^N e ^P.
Ctrl+N
Isso é explicado no livro Perl Hacks, juntamente com como completar o pacote.Altamente recomendado.