vim: Ersetze alle Zeichen bis zum Ende der Zeile


30

Vielleicht bin ich dumm, aber können Sie alle Zeichen, von denen der Cursor bis zum Zeilenende reicht, durch einen Befehl ersetzen? Verwenden Sie dann ., um dasselbe in der nächsten Zeile zu ersetzen und so weiter.

Antworten:


49

Wenn ich Ihre Frage richtig verstanden habe, versuchen Sie Folgendes:

C(das ist ein großes C) löscht alles vom Cursor bis zum Ende der Zeile und versetzt Sie in den INSERT- Modus. Dann schreiben Sie Ihre Ersetzung, verlassen den INSERT-Modus und .wiederholen den Vorgang an einer anderen Stelle.


Fein. :)Bitte.
Sr_

16
Wenn sich jemand wundert, es ist eine Hauptstadt C :)
David Silva Smith

1
Wäre gut, die Antwort zu aktualisieren, um anzugeben, dass dies ein Kapital C ist.
fraxture

14

Zur Antwort von sr_ hinzufügen:

Wenn sich der Cursor in jeder Zeile an derselben Position befindet, ist möglicherweise die Funktion " Visual Block" für Sie von Interesse .

Geben Sie nacheinander Folgendes ein, wobei sich der Cursor an der Anfangsposition befindet:

  • Ctrl+ v: Ruft den visuellen Blockmodus auf.
  • $: bis zum Ende der Zeile gehen.
  • [X]j: Ersetzen Sie X durch die Anzahl der Zeilen, die Sie nach unten verschieben möchten.

Dies sollte eine rechteckige Auswahl erzeugen, die von Ihrem Cursor in der ersten Zeile bis zum Ende der Zeile [X] darunter reicht.

Sie können dann Ihre gesamte Auswahl ersetzen:

  • c: Auswahl löschen und in den Einfügemodus wechseln.
  • neuen Text einfügen
  • Esc: Einfügemodus verlassen; Vim wiederholt den Schritt automatisch in jeder ausgewählten Zeile.

Ich benutze visuellen Block, wann immer ich kann, dachte ich, ich würde teilen


+1 schöne Antwort in der Tat. Aber nicht wirklich das, was ich will, da mein Code manchmal nicht so schön formatiert ist ^ _ ~
Sardathrion - Reinstate Monica

@sardathrion; RE Kommentar, "schön formatiert". Erstellen von Tabellen in Markdown Ich konnte Leerzeichen in n+1Zeilen automatisch füllen , nachdem ich eine Zeile ndurch Auswahl von Visual Block in umgekehrter Reihenfolge erstellt hatte ! Mit anderen Worten, die Form war ähnlich wie bei 7 rückwärts oder vertikal gespiegeltes L oder 'nicht schön formatiert'. lol.
Xtian

3

Coder c$steht für "change" und Rsteht für "replace".

Zwei fast ähnliche Verhaltensweisen. Ersteres löscht die Zeile, bevor Sie mit der Eingabe beginnen. Mit letzterem können Sie die Zeichen überschreiben und möglicherweise die Grenze der Zeichen überschreiten, die in der alten Zeile angezeigt werden.


1

Drücken Sie einfach 'C', dh Großbuchstaben C im Befehlsmodus, und geben Sie den Ersatztext ein.


0

Die anderen Antworten haben diese verpasst, sie wechseln nicht in den Einfügemodus.

  • D Löschen Sie bis zum Ende der Zeile
  • d$ Löscht vom Cursor bis zum Zeilenende

Dann natürlich nutzen .


-1, weil ich nicht in den Einfügemodus eingetreten bin, da ich genau danach gefragt habe. +1 der Vollständigkeit halber.
Sardathrion

0

Wie es nützlich sein kann, wenn wir versuchen, bis zum Ende der Zeile zu ändern. Ich habe ein Insert-Mapping erstellt, um diese Aufgabe auszuführen. Es wird nicht verwendet, Dda dieser Schlüssel im Insert-Modus zum Verringern des Einzugs verwendet wird. So ist es Ctrl-k

:inoremap <C-k> <C-o>C
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.