Schreiben Sie den ausgewählten Bereich in die Datei

11

Ich möchte einen visuell ausgewählten Bereich in eine Datei schreiben.

Zum Beispiel:

prefix [sample text
more text] suffix

[] ist der ausgewählte Block, der verwendet werden soll, was zu einer neuen Datei führt, die Folgendes enthält:

sample text
more text

Der normale wBefehl verwendet Zeilen und enthält daher '<,'>w! /tmp/testdas Präfix / Suffix (und `<,`>w! /tmp/testist nicht zulässig).

Laktak
quelle

Antworten:

8

Kopieren Sie zunächst Ihre visuelle Auswahl (im Vim-Sprachgebrauch auch als "Yank" bezeichnet) in das Register Ihrer Wahl. Um beispielsweise zu kopieren, um 'z' zu registrieren, treffen Sie Ihre visuelle Auswahl und geben Sie dann ein "zy.

In dem Fall, den Sie geben, können Sie dies tun, ohne den Cursor zu bewegen, indem Sie den Cursor auf die erste eckige Klammer setzen und dann tippen v%"zy.

Aufschlüsselung: v-> visuelle Auswahl starten; %-> zur passenden Klammer wechseln; "z-> benutze Register 'z'; y-> ziehe (kopiere) die Auswahl (in diesem Fall in das Register 'z').

Nachdem Sie Ihre visuelle Auswahl kopiert haben, um 'z' zu registrieren, gehen Sie zur Befehlszeile und geben Sie ein

call writefile(getreg('z', 1, 1), "some-file")

Wenn Sie den Text anhängen möchten, anstatt ihn zu überschreiben, können Sie das Flag "a" wie folgt verwenden

call writefile(getreg('z', 1, 1), "some-file", "a") 
muru
quelle
Das heißt, es gibt keinen eingebauten Befehl, der dies tun kann?
Laktak
@laktak Nicht dass ich finden könnte ... A split()? getreg(.., 1, 1)Gibt eine Liste zurück, daher wird eine split()nicht benötigt.
Muru
Danke - du bist zu schnell :) Ich habe gerade meinen Fehler erkannt und den Kommentar bearbeitet, während du geantwortet hast.
Laktak
2

Sie können Ihren Inhalt auch kopieren und ein neues Fenster erstellen

Ctrl-w n ........... create a new window
p .................. paste

Dann können Sie speichern, wie Sie möchten

SergioAraujo
quelle
0
  1. Vim Hilfe sagt (: h 10.3):

    Hinweis: Wenn Sie im visuellen Modus einen Teil einer Zeile auswählen oder mit STRG-V einen Textblock auswählen, gelten die Doppelpunktbefehle weiterhin für ganze Zeilen. Dies könnte sich in einer zukünftigen Version von Vim ändern.

  2. Das Plugin vis (# 1195) von Charles Campbell bietet den Befehl :B {cmd}, a {cmd}nur auf die visuelle (Block-) Auswahl anzuwenden .

Hotschke
quelle