Stellen Sie sich vor, Sie möchten das folgende Wort zitieren. Wenn dies |
die Cursorposition ist, können Sie das Wort einfach cw""<Esc>P
aus dem Normalmodus zitieren .
|below
Ich möchte das gleiche Verhalten im Befehlszeilenmodus erreichen. Meine Frage ist, wie ich dem Befehlszeilenmodus sagen kann, dass ich ein eingeben möchte <Esc>
. Ich habe versucht :norm cw""<Esc>P
und einige andere Variationen, aber ich bekomme nur ""<Esc>P
statt "below"
.
Im Zusammenhang damit möchte ich wissen, wie ich Befehlszeilenmodus-Typ-Strg-Befehle erstellen kann. Zum Beispiel könnte ich cw"<C-r>""<Esc>
stattdessen das oben genannte Wort mit zitieren . Aber dann würde ich die Befehlszeile brauchen, um <C-r>
für mich zu tippen . Wie kann ich das machen?
command-line
Gonçalo Ribeiro
quelle
quelle
<C-x><C-e>
in readline, um die Befehlszeile zu bearbeiten$EDITOR
, müssen Sie<C-f>
in Vim das Befehlszeilenfenster öffnen. Siehe:help cmdline-window
.Antworten:
<C-v>
ist das, wonach Sie suchen. Sie können damit Literalzeichen eingeben (z. B. ein LiteralEsc
anstelle der Zeichenfolge "Esc"), ohne dass Sie etwas maskieren müssen.wird angezeigt als:
und wird tun, was Sie wollen (dh das Wort zitieren). Sie können dies auch mit anderen
<C-?>
Zuordnungen verwenden. Zum Beispiel Ihre zweite Anfrage:wird angezeigt als:
Und wird das gleiche wie oben ergeben. Das Extra muss
Esc
am Ende nicht eingefügt werden .quelle
Dies liegt daran, dass Sondertasten wie
<Esc>
nicht innormal
Befehle übersetzt werden und wie gedrückt behandelt werden <Esc>. Um dies zu beheben, können Sie einenexec
Befehl verwenden. Wie so:Beachten Sie, dass Sie vor und in Anführungszeichen einen Backslash setzen müssen. Die
<Esc>
Verwendung von einfachen Anführungszeichen anstelle von doppelten Anführungszeichen funktioniert nicht.quelle
"\<C-{insert key}>"
Der Befehlszeilenmodus ist anders. Sie können dort nicht dieselben Bearbeitungsbefehle (im normalen Modus) verwenden. Eine Liste der Befehle finden Sie unter
:help c_CTRL-V
.Jetzt gibt es das Befehlszeilenfenster (
:help command-line-window
), das über denq:
Normal- und den<C-F>
Befehlszeilenmodus aufgerufen werden kann. In diesem Fenster können Sie alle normalen Befehle und Zuordnungen verwenden, sodass dies Option 1 wäre.Option 2 sind spezielle Zuordnungen für den Befehlszeilenmodus. Wie gesagt, Sie können den Ansatz nicht über
:normal
et al. Der Schlüssel zur Definition dieser ist das:help c_CTRL-\_e
Mapping, das "[s] {expr} auswertet und [s] die gesamte Befehlszeile durch das Ergebnis ersetzt". Hier ist ein einfaches Beispiel, das nur am Ende der Befehlszeile korrekt funktioniert:quelle