Rückkehr vom Befehl Autocomplete

7

Wenn ich :e foo/**/foo*.jstippe und die Tabulatortaste drücke, ersetzt vim die * s durch alle möglichen Vorschläge im Dateipfad. Was wäre, wenn ich feststellen würde, dass ich nicht spezifisch genug bin (es gibt zu viele Ergebnisse bei der automatischen Vervollständigung) und ich von den Vorschlägen zur automatischen Vervollständigung zurückgehen möchte:e foo/**/foo*.js

Meine Wildmenüeinstellungen sind:

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

Gibt es einen Schlüssel, mit dem ich zu dem zurückkehren kann, was ich hatte, bevor ich auf die Registerkarte drückte?

user2453676
quelle

Antworten:

1

Nachdem ich wildmode = full gesetzt habe, bringt mich die Umschalttaste zurück zum ursprünglichen regulären Ausdruck. Die Wildmode-Dokumentation ist vollständig

"voll" Beende das nächste volle Spiel. Nach der letzten Übereinstimmung wird die ursprüngliche Zeichenfolge verwendet und dann die erste Übereinstimmung erneut.

Ursprünglich war mein Wildmode Wildmode = am längsten: voll, voll, voll. Um zum ursprünglichen regulären Ausdruck zurückzukehren, musste ich Tab, Tab und dann Shift-Tab. Der Grund, warum ich zwei Tabs machen musste, ist, dass der erste Tab am längsten gedauert hat: voll.

"am längsten: voll" Wie "am längsten", aber starten Sie auch 'wildmenu', wenn es aktiviert ist.

Basierend auf dieser Dokumentation sieht es am längsten aus: full hat keine Option, zum ursprünglichen regulären Ausdruck zurückzukehren. Das zweite Mal, als ich mit der Registerkarte getippt habe, war ich voll, wobei die ursprüngliche Zeichenfolge am Ende des Wildmenüs verwendet wird. Aus diesem Grund würde mich eine Umschalttaste nach zwei Registerkarten zum ursprünglichen regulären Ausdruck zurückführen.

user2453676
quelle
1

Ich bin selbst darauf gestoßen und habe argumentiert , die (meiner Meinung nach) falsche Standardeinstellung für die Einstellung "Wildmode" zu ändern.

Wie auch immer, während ich darüber diskutierte, wurde mir gesagt, dass CtrlPdies gedrückt werden kann, damit Sie dorthin zurückkehren können, wo Sie fertig sind. Dies ermöglicht es Ihnen, zurück zu gehen und zu ändern, was abgeschlossen werden soll. Eine Alternative wäre ein Treffer ShiftTab, der jedoch im Terminal möglicherweise nicht funktioniert.

Christian Brabandt
quelle
Vielen Dank. Ich wusste nicht, dass Shift Tab von meinem Abschluss zurückkehren würde. Es bringt mich nicht gerade zurück, aber wenn ich foo / ** / foo * dann Tab, Shift-Tab, Tab. Es bringt mich zurück zu foo / ** / foo *. Könnten Sie erklären, warum es so funktioniert? Ich nehme an, es hat etwas damit zu tun, dass ich in meinen Wildmode-Einstellungen am längsten und dann voll bin.
user2453676
Entschuldigung, ich verstehe nicht, was Ihr Problem hier ist.
Christian Brabandt
@ChristianBrabandt Ich denke, <cp> funktioniert als <s-tab>. Wenn Sie also mehr als ein <tab> ausgeführt hätten, würde <cp> Sie nicht genau zu dem zurückkehren lassen, was Sie hatten. Sie müssten weiter <cp> drücken, um zurück zu kommen. Ich denke, deine ist hier nicht die richtige Antwort.
Klaus
@ user2453676 Die Tab-Vervollständigung funktioniert tatsächlich für eine Liste, die Ihrem anfänglichen regulären Ausdruck (oder etwas anderem) entspricht. Sie können dann <tab> oder <s-tab> durch alle diese Listen gehen. Wenn Sie also <tab> von Listenelement 0 aus drücken, wechseln Sie zu Listenelement 1 und so weiter. Wenn Sie in Listenelement 1 <s-tab> drücken, gelangen Sie zu Listenelement 0, und wenn Sie erneut <s-tab> drücken, gelangen Sie zu Listenelement -1, das im Wesentlichen das letzte Element in der Liste ist. Deshalb funktioniert es so, wie es in Ihrer Frage funktioniert. Die längsten, voll im Wildmode sind nur Flaggen, um die Tab-Vervollständigung nach Ihrem Geschmack durchzuführen.
Klaus
@ EnanAjmain richtig. Ich bin mir nicht sicher, warum Sie sagen, dass es nicht korrekt ist. <C-P>und <s-Tab>bringen Sie dorthin, wo Sie waren, bevor Sie die Befehlszeile vervollständigen. Und das war die Frage
Christian Brabandt