Wie kann ich Readline-Verknüpfungen in der vim-Befehlszeile verwenden?

15

Wenn ich einen Vim-Befehl bearbeite, möchte ich die gleichen Verknüpfungen wie in Bash und jeder anderen REPL verwenden: M-bein Wort zurückgehen, M-Backspaceein vorheriges Wort löschen M-u, das Wort in Großbuchstaben umwandeln, C-kbis zum Ende von ausschneiden Die Leitung usw. Ich konnte einige der Befehle mit :cmap, aber nicht mit allen konfigurieren .

Gibt es ein Plugin oder eine Einstellung, die dies ermöglicht?

Ich weiß Bescheid cedit, finde es aber umständlich, wenn ich nur einen kurzen Befehl eingeben muss.

Mihai
quelle
Waitaminute, sagen Sie, Sie verwenden Bash im Emacs-Modus, obwohl Sie Vim als Editor verwenden?
Kyle Strand
3
@KyleStrand Ich habe noch niemanden gesehen, der Bash im vi-Modus verwendet hat. Es scheint, als ob die meisten Vorteile von Modal-Editoren verschwinden, wenn Sie sich nur auf eine Zeile beschränken.
Mihai
1
Interessant. Ich verwende Bash immer nur im Vi-Modus, obwohl es den Anschein hat, als würde der Emacs-Modus einige Dinge unterstützen, die der Vi-Modus nicht unterstützt. Ich kenne nur zufällig die Vi-Tastenkombinationen, ohne die Emacs-Bindungen zu kennen, und ich habe es nie für dringend genug gehalten, um die Standardeinstellungen zu lernen.
Kyle Strand

Antworten:

11

Gibt es ein Plugin oder eine Einstellung, die dies ermöglicht?

Ja, das rsi.vim-Plugin :

Eigenschaften

  • Readline-Zuordnungen werden im Einfüge- und im Befehlszeilenmodus bereitgestellt. Der Normalmodus wird bewusst weggelassen.
  • Wichtige Vim-Tastenkombinationen (wie die Cn- und Cp-Vervollständigung des Einfügemodus) werden nicht überschrieben.
  • Metaschlüsselbindungen werden so bereitgestellt, dass sie im Terminal funktionieren, ohne dass die Gefahr einer erneuten Zuordnung besteht.
  • Cd, Ce und Cf werden so zugeordnet, dass sie das Readline-Verhalten in der Mitte der Zeile und das Vim-Verhalten am Ende ausführen. (Denk darüber nach.)
mMontu
quelle
1

Gibt es ein Plugin oder eine Einstellung, die dies ermöglicht?

Es gibt auch readline.vim .

Es ist ein neueres Plug-In, das sich ausschließlich auf die Befehlszeile konzentriert. Es implementiert auch eine größere Teilmenge der Readline-Verknüpfungen und hat das Ziel, jede Verknüpfung genau wie in Readline zu implementieren.

Was dieses Plugin von ähnlichen Plugins unterscheidet, ist, dass es eine größere Teilmenge der Readline-Zuordnungen implementiert und das Readline-Verhalten für jeden Befehl besser nachahmt.

Die Befehle zum Verschieben und Löschen von Wörtern haben ein unterschiedliches Verhalten zwischen Vim und Readline. Der größte Unterschied besteht darin, dass bei der Suche nach einer Wortgrenze in Readline die Interpunktion immer übersprungen wird. Ein weiterer Unterschied besteht darin, dass _ (Unterstrich) als Worttrennzeichen behandelt wird. Dieses Plugin implementiert das Readline-Verhalten für Befehle zum Verschieben und Löschen von Wörtern.

wefwefa3
quelle
1
Ich bin überrascht, dass irgendjemand nach so etwas sucht. Es ist so einfach, den Vim-Modus von readline zu verwenden, dass ich mir vorstellen würde, dass jeder normale Vim-Benutzer dies tun würde. (Ich finde die zusätzlichen Befehle im Emacs-Modus nicht so überzeugend.) Aber vielleicht ist das "Wie" nicht so allgemein bekannt (... und vielleicht habe ich Glück, dass ich den ersten Baschritt gesehen / kopiert habe ... Vor viel mehr Jahren, als ich zugeben möchte ... hatte set -o vim:)
B Schicht