Muitos IDEs completam automaticamente nomes de funções, variáveis, nomes de métodos, etc. conforme o usuário digita. Os melhores completam os nomes com base na biblioteca interna da linguagem e também no que já foi definido em outros arquivos do mesmo programa.
Por exemplo, enquanto digito o seguinte Programa Python:
hungy = True def eatFood(food): pass if hungry: eatF
a linha eatF
mostraria automaticamente eatFood()
como uma opção de preenchimento automático disponível.
O Vim tem esse recurso? Em caso afirmativo, como posso habilitá-lo?
Resposta
Existem muitos tipos diferentes de preenchimento automático no vim. Uma maneira pode ser usar o SuperTab . Isso fornece uma maneira de usar o preenchimento com tab mais ou menos a qualquer momento. Isso permitiria que você pressionasse Tab depois de digitar parcialmente a palavra para obter uma lista de preenchimento. Por exemplo, digitar eatF
seguido de Tab para expandir para eatFood.
Observe : todas essas imagens estão vinculadas a gifs de exemplo em ação.
O Vim tem outras opções excelentes. Você deve ler :h ins-completion
para ver a variedade de opções de preenchimento integradas. Usando vim “s Ctrl–X Ctrl – O , combinado com um plug-in compatível com python como jedi pode fornecer um sabor de conclusão. Jedi pode ser configurado para fornecer documentação sobre omni-completar (isto é o que Ctrl–X Ctrl – O faz ) Em seguida, a documentação para os candidatos de conclusão apareceria em uma janela dividida.
Usar plug-ins semelhantes, mas com opções diferentes, leva a todos os tipos de comportamentos. É possível, por exemplo, não precisar solicitar o preenchimento automático (se é isso que você quer). Em vez disso, depois de digitar um número de letras (digamos, 2 ou 3) de uma palavra, um plugin pode tente oferecer de forma inteligente as conclusões possíveis em um menu.
Portanto, a resposta curta é sim! Mas o processo de configuração pode ser um pouco complicado. Eu penso nisso como uma etapa na longa escada de masterização do vim.
Comentários
- Eu ‘ tentei todos eles e sempre volto ao SuperTab, ele ‘ é o menos intrusivo.
- Eu também gosto muito do plug-in YouCompleteMe, pois sugere à medida que você digita e você pode escolher ou ignorar sugestões. Sim, visualmente é difícil de ignorar, mas é muito pouco intrusivo no meu fluxo de trabalho porque requi res menos pressionamentos de tecla.
- Eu ‘ mudei as animações para serem ” ao clicar “, no sentido de que estão vinculados às animações GIF.
- Não posso ‘ não usar o YouCompleteMe no meu computador de trabalho porque não ‘ não tenha root para instalar as dependências, o SuperTab é de longe a próxima melhor escolha.
- @mixedmath No meu caso, o superTab não ‘ t funciona.
Resposta
Tal funcionalidade – isto é, pesquisar o arquivo atual ( e todos os arquivos abertos) para preenchimento automático, deve ser habilitado por padrão com Ctrl+P
:
Você pode ir para a sugestão de extensão n com Ctrl+N
, a p sugestão original com Ctrl+P
e selecione-o digitando qualquer letra (que será anexada logo após a sugestão).
Comentários
Resposta
O Vim tem suporte para conclusão nativamente . Você pode ler sobre as várias conclusões diferentes que o Vim oferece suporte em :h ins-completion
.
.
Em geral, para todos os propósitos que encontrei, ins-completações são suficientes para meu gosto , no entanto, existem alguns plug-ins de conclusão que agregam mais valor além do que o ins-completions oferece. NeoComplete , YCM (YouCompleteMe) são alguns para o mesmo. Eles são mais avançados no sentido de que tentam combinar diferentes tipos de conclusões com mais precisão e também possuem mecanismos de cache avançados, portanto, tendem a ser mais rápidos. O YCM chega ao ponto de trabalhar com compiladores / utilitários externos para fornecer um IntelliSense melhor.
Resposta
Sim, scripts de preenchimento automático para o vim existir. A “melhor” escolha depende da sua linguagem de programação. Como seu código de exemplo é Python, sugiro que dê uma olhada em Jedi . Construir em cima disso existe You complete me , que também tem suporte para outros idiomas, mas às vezes é visto como muito grande. Para outros idiomas, você pode navegar pelo longo conjunto em scripts vim .
Resposta
No modo de inserção, digite os primeiros dois caracteres de uma palavra e pressione:
Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word.
Isso é particularmente útil ao inserir o nomes de variáveis em um programa.
A opção “complete” controla onde as palavras-chave são pesquisadas (inclui arquivos, arquivos de tag, buffers e mais).
A opção “completeopt” controla como a conclusão ocorre (por exemplo, se um menu é mostrado).
^P
é IMHO mais natural. Caso contrário, obrigado pela edição (espero ter clicado no botão certo e você obteve seu +2).world,word,wood
e não o contrário).Portanto,^P
é o último preenchimento usado, o que é muito útil (raramente vou além de 3 itens na lista, mesmo em um arquivo longo).inoremap <C-Space> <C-N>