In der Befehlszeile drücken, <C-u>
dann @*
eingeben und eingeben.
<C-u>
löscht den visuellen Bereich '<,'>
, der automatisch eingefügt wurde, wenn ein Text visuell ausgewählt ist.
:@*
führt den Inhalt des *
Registers aus, der alles enthält, was gerade visuell ausgewählt ist.
Selbst wenn sich der ausgewählte / hervorgehobene Text in Ihrem Webbrowser befindet (Firefox, Chrome, ...), funktioniert er. Über das *
Register können Sie direkt in vim darauf zugreifen.
Wenn Ihr Text in einem VIM-Puffer ausgewählt ist, besteht eine andere Lösung darin, ihn in ein benanntes Register zu kopieren, z. B. in ein Register durch Eingabe "ay
.
Geben Sie dann in der Befehlszeile Folgendes ein <C-r>a
und geben Sie ein.
Ctrl+ rgibt Ihnen eine Art Eingabeaufforderung, die durch das Zeichen dargestellt wird "
(für weitere Informationen lesen Sie :h c_Ctrl-r
).
Wenn Sie an dieser neuen Eingabeaufforderung den Namen eines Registers angeben, wird dessen Inhalt in die Befehlszeile eingefügt, wo Sie ihn vor der Ausführung bearbeiten können.
Außerdem , wenn Sie kopieren einen Text ohne ein Register zu spezifizieren, wird es aus dem ungenannten Register zugänglich sein " .
Angenommen, Sie haben eine Zeile mit Vimscript in einer Datei und möchten diese schnell als Quelle bereitstellen. Sie können sie kopieren Y
und dann in der Befehlszeile mit: :<C-r>"
als Quelle eingeben und eingeben.
Wenn Sie diese letzte Lösung verwenden, gibt es nur ein Problem, dessen Sie sich bewusst sein müssen.
Wenn Sie in der Befehlszeile ein seltsames Zeichen wie dieses sehen ^M
, ist dies die Caret-Notation des Wagenrücklaufs. Sie sollten es löschen, sonst wird wahrscheinlich eine Fehlermeldung angezeigt.
Zusammenfassend können Sie:
- Kopieren Sie Ihre Vimscript-Zeile mit
Y
- Wechseln Sie mit in den Befehlsmodus mit
:
- Drücken Sie
<C-r>
, um die Eingabeaufforderung des Registers aufzurufen
- Geben Sie ein
"
, um das unbenannte Register aufzurufen
- Drücken Sie die Rücktaste, um das
^M
Zeichen zu löschen
- und drücken Sie die Eingabetaste.
@*
gestoßen, danke!: <C-r>a
es zu verwenden, hat auch gut funktioniert :) Ich denke, vim hat die^M
's als Zeilenrückgabe gelesen - und jede als eigene Zeile / Befehl ausgeführt?Ich mache es tatsächlich ein bisschen anders, ich nehme nur die Änderungen in meinem vimrc vor und beziehe es jedes Mal neu, wenn ich es schreibe. (Ich habe einen kaskadierenden Satz von vimrc-Dateien, sodass ich eine davon ändern kann.)
quelle
Direkter auf die Frage als auf meine andere Antwort könnten Sie eine Zuordnung definieren
nnoremap
, die so aussieht ( für keine Auswahl führen Sie einfach die aktuelle Zeile aus;vnoremap
wenn der visuelle Modus aktiv ist):In beiden Fällen ist die "aktuelle Zeile"
:execute
d, sodass Sie in der visuellen Version:execute
eine Zeile nach der anderen durch die visuelle Auswahl führen.Wie in einer anderen Antwort angegeben,
<C-u>
löscht das die Bereichsspezifikation, die bei der :Eingabe in der Befehlszeile angezeigt wird. Die|
Zeichen müssen maskiert werden, da sie sonst als Ende desvnoremap
Befehls interpretiert werden .Dies könnte auch in eine Funktion umgewandelt werden, um einige der Fluchtgymnastik loszuwerden, aber es scheint mir zu diesem Zeitpunkt kein großer Gewinn zu sein. Es wäre im Grunde die vnoremap, die in mehrere Zeilen erweitert und
call
mit einem Bereich bearbeitet wird oder nicht, abhängig vom [nv] Mapping-Modus.quelle