Der Titel ist sehr beschreibend. Nur für den Fall, ich werde ein Beispiel geben:
START BLOCK1
something
END BLOCK1
START BLOCK2
something
somenthing...
END BLOCK2
- Ich wähle das
BLOCK1
im visuellen Modus - Ich ziehe es durch Drücken y
- Wie kann ich den Ruck
BLOCK1
in einer anderen Datei speichern?
:w
weiterhin vollständige Zeilen ausgegeben, die vom ausgewählten Bereich berührt werden, jedoch nicht der genaue Bereich, der innerhalb von Zeilen beginnt oder endet. Wenn Sie beispielsweise eine schmale Spalte im Blockauswahlmodus oder einen Teil einer Zeile im visuellen Auswahlmodus auswählen, wird die vollständige Zeile von geschrieben:w
, selbst wenny
die richtigen Teile der Zeile kopiert werden.Wenn der Block ausgewählt ist, können Sie
:'<,'>w other-file
, der nur den ausgewählten Block schreibtother-file
. Das Schlagen:
im visuellen Modus sollte'<,'>
bereits für Sie in die Befehlszeile eingefügt werden, sodass Sie wirklich nur tippen müssen:w other-file
.quelle
:'<,'>w !cut -cN-M > new.txt
. Überrascht, dass die am höchsten bewertete Antwort und die Leser die Frage nicht zu verstehen scheinen.Es gibt wahrscheinlich einen einfacheren Weg, dies zu tun, aber ich würde einen neuen Puffer (oder eine neue Registerkarte) erstellen und ihn dann einfügen
p
. Sie können einen neuen Puffer mit:new
oder eine neue Registerkarte mit erstellen:tabnew
. Sie können den Puffer / Tab wie gewohnt mit in eine Datei schreiben:w filename
.quelle
P
unten.)Wie bei @dronus in den Kommentaren erwähnt, werden die
:w !pbcopy
Vorschläge nicht korrekt kopiert, da die gesamte Zeile kopiert wird. Wenn ich nur die URL in einer Zeile kopieren möchte, kann ich das nicht. Hier ist eine Zeile, die Sie Ihrer.vimrc
Datei hinzufügen können, damit bei jedem Drücken von STRG-C die ausgewählte Zeile in Ihrem vim in die Zwischenablage kopiert wird:Wenn Sie Details dazu lesen möchten, können Sie dies in meinem Blog nachlesen
Es ist die gleiche Implementierung wie von @rmeador vorgeschlagen.
quelle
Ähnlich wie bei @ songz mache ich es lieber so mit ": new"
quelle
Basierend auf der Variante von @ chenkaie funktioniert das gut für mich:
let mapleader = "," let g:mapleader = "," vmap <leader>y y:new ~/.vbuf<CR>VGp:x<CR> nmap <leader>p :r ~/.vbuf<CR>
quelle
Vim erhält die visuelle Auswahl und speichert in einer Datei:
quelle
Zusätzlich zu der oben ausgewählten Antwort
Wenn Sie mit der Maus (1) auswählen,
und das Problem, nur ganze Zeilen zu kopieren, die im Kommentar von @dronus erwähnt werden, wenn nur teilweise Zeilen kopiert werden sollen (2):
(1) Bei meinem Debian-basierten DietPi (Raspberry PI) -System verhält sich vim etwas anders als in der oben beschriebenen bevorzugten Lösung, wenn Sie mit der Maus auf meinem Ubuntu 16.04-Arbeitsplatz 'VISUAL MODE' eingeben und auswählen. Dann
aber wenn ich ':' als Befehl eingebe, wird es nicht mit dem angezeigt
wo ich einfach meine hinzufügen kann
Danach. Also habe ich es einfach selbst getippt und es hat funktioniert:
und es kopiert den gesamten Inhalt der Zeile (n) in meine Datei 'new.txt', wohingegen '<' anscheinend 'ausgewählte Zeilen kopieren und'> 'in die referenzierte Datei des Schreibbefehls umleiten.
(2) Und zu dem Problem, einen Teil der Zeile (n) nicht einzufügen, wie in @dronus Kommentar erwähnt, hat diese Lösung (die ausgewählte, erste Alternative) für mich funktioniert:
Bearbeiten Sie die erste Datei und ziehen Sie den gewünschten Text. Öffnen Sie dann Ihre zweite Datei in vi (: e / path / to / other / file) und fügen Sie sie ein (indem Sie p eingeben). Speichern Sie es (wie oben ': w new.txt'.
Es wird dann nur der Teil der Zeilen kopiert, der mit der Maus oder 'y' mit den Cursorn markiert ist.
[BEARBEITEN] Auf meinem Ubuntu-System: Manchmal wird bei Auswahl per Maus NICHT 'VISUAL MODE' in vim eingegeben. Dann kann das normale Kopieren / Einfügen über das Kontextmenü ausgewählt werden ... Ich habe nicht den Grund gefunden, warum Ubuntu das Verhalten von einem "Client-Verhalten" in ein "Host" -Verhalten geändert hat (wobei Ubuntu das SSH-Bash-Fenster in " Klient')...
quelle