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?

Eric Johnson
fonte
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.

Michael
fonte
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.

weynhamz
fonte
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.

Amjith
fonte
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.

tc88
fonte
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.

Mike
fonte
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

Torre
fonte