GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie trete ich der nächsten Zeile bei, wenn eine Zeile mit einem Regex für das gesamte Dokument in Vi übereinstimmt?

Ich habe Zeilen wie

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Wenn eine Zeile mit Regex ^a.+g$ übereinstimmt dann möchte ich, dass sie verbunden werden, also wäre es:

abcdefgjoin!
abcdef
no join
abcdefgjoin!

Gibt es eine Möglichkeit, das in VIM zu tun ?

Akzeptierte Antwort:

Im normalen Modus J (im Unterschied zu j , die den Cursor eine Zeile nach unten bewegt) wird verwendet, um eine Zeile mit der direkt darunter liegenden zu verbinden. Standardmäßig fügt es jedoch ein Leerzeichen am Ende der ersten Zeile hinzu; Um das gewünschte Ergebnis zu erhalten (Verbinden der Zeilen ohne Einfügen eines zusätzlichen Leerzeichens), müsste man gJ verwenden .

Um Normalmodus-Befehle im Ex-Modus zu verwenden (den Sie durch Drücken von : eingeben im normalen Modus), muss man den normal verwenden Befehl. Siehe :h normal innerhalb vim. Um also mit der nächsten Zeile zu arbeiten, die dem Muster entspricht, würde man verwenden (beachten Sie, dass Sie standardmäßig + maskieren müssen um es mit der Regex von vim zum Laufen zu bringen, eine Folge der Aufrechterhaltung der Kompatibilität mit der alten Regex-Engine des ursprünglichen vi):

:/^a.\+g$/normal gJ

Um an allen zu arbeiten Zeile, die dem Muster entspricht, würde man den :global verwenden Befehl (siehe :h :g innerhalb von vim) so:

:global/^a.\+g$/normal gJ

Oder kürzer:

:g/^a.\+g$/norm gJ

Es ist auch möglich, den Ex-Befehl join zu verwenden (siehe :h :join ), um dasselbe mit etwas weniger Eingabe zu erreichen (der ! am Ende sagt in diesem Fall join kein Leerzeichen am Ende der ersten Zeile einzufügen).

:g/^a.\+g$/join!

Linux
  1. 8 Tipps für die Linux-Kommandozeile

  2. Bash-Tipps für den Alltag an der Kommandozeile

  3. So erstellen Sie eine Datenbank in MySQL über die Befehlszeile

  4. Wie erhalte ich meine IP-Adresse über die Befehlszeile?

  5. Wie finde ich die Zeilennummer in Bash, wenn ein Fehler aufgetreten ist?

4 Markdown-Tools für die Linux-Befehlszeile

So verwenden Sie Ranger zum Navigieren in Dateien von der Befehlszeile aus

So bereinigen Sie Ihre Daten in der Befehlszeile

3 Passwort-Manager für die Linux-Kommandozeile

So suchen Sie nach Dateien über die Linux-Befehlszeile

Wie lösche ich die Zeilennummer in Vim beim Kopieren?