Como faço para o Vim executar o preenchimento normal de guias (tipo Bash) para nomes de arquivos?


289

Quando abro um novo arquivo no Vim e uso o preenchimento de guias, ele completa o nome completo do arquivo, em vez de fazer a correspondência parcial, como o Bash faz. Existe uma opção para fazer com que a conclusão dessa guia de nome de arquivo funcione mais como o Bash?


10
Tecnicamente falando, eu tenho certeza que o "bash" não faz nenhuma conclusão de guia. É a linha de leitura que faz isso.
precisa saber é o seguinte

2
Estamos falando de personalizar o comportamento do recurso ^ X ^ F?
precisa saber é o seguinte

Respostas:


413

Eu pessoalmente uso

set wildmode=longest,list,full
set wildmenu

Quando você digita o primeiro hit da guia, ele será concluído o máximo possível. O segundo hit da guia fornecerá uma lista. A terceira e subseqüentes guias percorrerão as opções de conclusão para que você possa concluir o arquivo sem precisar de mais chaves.

Bash-like seria apenas

set wildmode=longest,list 

mas o total é muito útil.


1
Eu gostaria que esse fosse o comportamento padrão no vim. Eu pensei que não havia como contornar a conclusão completa da guia até ver este post.
Neha Karanjkar

6
@NehaKaranjkar Eu recomendo manter um dotfiles arquivar para torná-lo fácil de implantar em novos ambientes
michael

2
Existe uma maneira de começar a ficar cheio somente quando há poucos resultados? algo parecido set wildmode=longest,5full,list. Com muitos resultados completos, é inútil, mas muito útil para poucos. Vai ser perfeito com algo como "mostrar total somente se encaixa de conclusão na tela uma linha"
albfan

1
Isso costumava funcionar no passado (gVim / ubuntu), mas agora não funciona (macvim8.x / macOS). Veja exemplo . Alguma ideia?
21916 Paschalis

1
Depois de tolerar a conclusão da guia de origem por 2 meses, acho que deve haver uma maneira de simplificá-la. Obrigado.
ramwin

23

O comportamento mais próximo da conclusão de Bash deve ser

set wildmode=longest:full,full

Com alguns caracteres digitados, pressionar a tecla Tab uma vez fornecerá todas as correspondências disponíveis em wildmenu. Isso é diferente da resposta de Michael, que abre uma janela do tipo quickfix abaixo da linha de comando.

Depois, você pode continuar digitando o restante dos caracteres ou pressionar a tecla tab novamente para concluir automaticamente a primeira correspondência e circular em torno dela.


Eu acho que prefiro assim.
Eddy Ekofo

8

Se você não deseja definir o menu curinga, sempre pode pressionar Ctrl+ Lquando desejar abrir um arquivo. Ctrl+ Lcompletará o nome do arquivo como a conclusão do Bash.


Ctrl-L não age como preenchimento automático do bash. Ele não percorre todas as opções possíveis.
raine 7/09/11

2
Minha festa não agir assim. <Tab>conclui a cadeia atual o máximo possível (como CTRL-Lno Vim) e <Tab><Tab>mostra uma lista de possíveis correspondências (como CTRL-Dno Vim).
MLDs

8

Além do wildmode / wildmenu sugerido, o Vim também oferece a opção de mostrar todas as conclusões possíveis usando Ctrl+ D. Isso pode ser útil para alguns usuários que se deparam com essa pergunta ao pesquisar diferentes opções de preenchimento automático no Vim, como eu fiz.


4

Estou assumindo que você está usando o preenchimento automático no Vim via Ctrl+ Npara pesquisar no buffer atual. Quando você usa este comando, você obtém uma lista de soluções; basta repetir o comando para ir para o próximo item da lista. O mesmo vale para todos os comandos de preenchimento automático. Enquanto eles preenchem a palavra inteira, você pode continuar percorrendo a lista até chegar na palavra que deseja usar.

Este pode ser um comando mais útil: Ctrl+ P. A única diferença é que Ctrl+ Ppesquisa para trás no buffer enquanto Ctrl+ Npesquisa para a frente ... Realisticamente, os dois fornecem uma lista com os mesmos elementos e podem aparecer apenas em uma ordem diferente.


0

Tente usar :set wildmenu. Além disso, não tenho certeza do que exatamente você está tentando.

Ah, sim, e talvez tente este link: link

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.