Retornar do preenchimento automático do comando

7

Se eu digitar :e foo/**/foo*.jse clicar em tab, o vim substituirá os * s com todas as sugestões possíveis no caminho do arquivo. E se eu percebesse que não era específico o suficiente (há muitos resultados no preenchimento automático) e quero voltar das sugestões de preenchimento automático para:e foo/**/foo*.js

Minhas configurações do menu principal são:

set wildmenu
set wildmode=longest:full,full,full
set nowildignorecase

Existe uma chave que me permita voltar ao que tinha antes de clicar na guia?

user2453676
fonte

Respostas:

1

Depois de definir wildmode = full, shift-tab me leva de volta ao regex original. A documentação do modo wild para full é

"full" Complete a próxima partida completa. Após a última partida, a sequência original é usada e, em seguida, a primeira partida novamente.

Originalmente, meu modo selvagem era modo selvagem = mais longo: cheio, cheio, cheio. Para voltar ao regex original, tive que tab, tab e shift-tab. A razão pela qual eu tive que fazer duas guias é porque a primeira guia demorou mais tempo: cheia.

"longest: full" Como "longest", mas também inicie 'wildmenu' se estiver ativado.

Com base nesta documentação, parece ser o mais longo: full não tem uma opção para voltar ao regex original. Na segunda vez que tabulei, levei-me ao máximo, que usará a sequência original no final do menu selvagem. É por isso que uma guia shift me levaria de volta ao regex original depois de duas guias.

user2453676
fonte
1

Eu mesmo me deparei com isso e argumentei para alterar o (na minha opinião) padrão errado para a configuração 'wildmode'.

De qualquer forma, ao discutir isso, disseram-me, isso CtrlPpode ser pressionado para permitir que você retorne de onde concluiu. Isso permite voltar e alterar o que será concluído. Uma alternativa seria acertar ShiftTab, no entanto, isso pode não funcionar no terminal.

Christian Brabandt
fonte
Obrigado. Não percebi que o Shift Tab retornaria de onde concluí. Isso não me leva exatamente de volta, mas se eu foo / ** / foo *, tab, shift-tab, tab. Isso me leva de volta a foo / ** / foo *. Você seria capaz de explicar por que funciona dessa maneira? Suponho que tenha algo a ver com ter mais tempo e, em seguida, estar completo nas minhas configurações de modo selvagem.
User2453676
desculpe, eu não entendo qual é o seu problema aqui
Christian Brabandt
@ChristianBrabandt Acho que <cp> funciona como <s-tab>, por isso, se você tivesse feito mais de uma <tab>, então <cp> não deixaria exatamente você voltar ao que tinha. Você teria que continuar pressionando <cp> para voltar. Eu acho que a sua não é a resposta certa aqui.
Klaus
@ user2453676 o preenchimento de tab funciona realmente em uma lista que corresponde ao seu regex inicial (ou algo assim). Você pode <tab> ou <s-tab> em todas essas listas. Portanto, quando você pressiona <tab> no elemento de lista 0, passa para o elemento de lista 1 e assim por diante. Se você pressionar <s-tab> no elemento 1 da lista, vá para o elemento 0 da lista e, se pressionar novamente <s-tab>, irá para o elemento -1 da lista, que é essencialmente o último elemento da lista. É por isso que funciona da mesma maneira na sua pergunta. Os modos mais longos e completos são apenas sinalizadores para executar a conclusão da guia de acordo com o seu gosto.
Klaus
@EnanAjmain correto. Não sei por que você está dizendo que não está correto. <C-P>e <s-Tab>chegar onde você estava antes de concluir a linha de comando. E essa era a pergunta
Christian Brabandt