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.

Sardathrion - Setzen Sie Monica wieder ein
quelle

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.

sr_
quelle
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

rahmu
quelle
+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.

ismail
quelle
1

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

Weima
quelle
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 .

Gareth A. Lloyd
quelle
-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
SergioAraujo
quelle