2009-02-03 15 views

Antwort

357

Fügen Sie die Flagge c (in der vim Eingabeaufforderung):

:%s/old/new/gc 

Sie geben eine Ja/Nein-Aufforderung bei jedem Auftreten von 'alten'.

der Vim integrierte Hilfe bietet nützliche Informationen zu den verfügbaren Optionen einmal Substitution mit Bestätigung ausgewählt wurde. Verwenden Sie:

:h :s 

Dann blättern Sie zu Abschnitt auf Optionen bestätigen. Screenshot unten:

enter image description here

Zum Beispiel diese ersetzen und die restlichen Spiele verwenden a.

+25

+1, ich habe heute etwas Neues gelernt! Vim hat so viele versteckte Geheimnisse. :) –

+0

In der Tat! Ich wusste nichts über den Modifikator c. – strager

+9

Vim Befehle zu lernen ist ein bisschen wie Nethack zu spielen. Sie wissen nie, was sich ein einzelner Charakter wundert. –

8

ich in der Regel den Fund/Ersatz/neben/Repeat-Befehl verwenden :-)

/old<CR>3snew<ESC>n.n.n.n.n.n.n. 

Die find "old" ist, substitute 3 characters for "new", find next, repeat substitute, und so weiter.

Es ist ein Schmerz für massive Substitutionen, aber es können Sie selektiv einige Vorkommen von alten ignorieren (durch nur n erneutes Drücken der nächste statt . zu finden, um eine Substitution zu wiederholen).

+0

Ich benutze dies auch, auch für ähnliche Texte. (3cW .. .) – strager

+1

Es ist kein Antipattern! Es ist süß. Und Sie können mit N in die entgegengesetzte Richtung suchen. Wirklich gut, wenn Sie ein Wort sehen und es ändern wollen. * cwNewText N.n. (Dies springt von dem Wort unter dem Cursor ab, springt aber schnell zurück, wenn Sie das nächste Mal geändert haben. – PEZ

+0

Was ist ''? – Sother

17

Ich denke, Sie suchen nach c, zB s/abc/123/gc, dies wird dazu führen, VIM die Ersetzungen zu bestätigen. Siehe: Hilfe: ersetzen Sie weitere Informationen.

9

Wenn Sie nur die Anzahl der Vorkommen von 'abc' zählen möchten, können Sie %s/abc//gn tun. Dies ersetzt nichts, sondern gibt nur die Anzahl der Vorkommen von 'abc' an.

56

Mark Biek wies darauf hin, mit:

%s/old/new/gc 

für eine globale Suche mit der Bestätigung für jede Substitution ersetzen. Aber ich genieße es auch interaktiv zu überprüfen, ob der alte Text korrekt übereinstimmt. Ich macht zuerst eine Suche mit einem regulären Ausdruck, dann wieder verwende ich dieses Muster:

/old.pattern.to.match 
%s//replacement/gc 

Die s// wird das letzte Suchmuster verwenden.

+6

Eines der größten Vorteile beim Lernen/Lernen von Vim ist, wie tief das Kaninchenloch ist! – ken

+1

Schön, ich habe immer die Suche gemacht, dann /verwendet, um die letzte Suche in den Ersatzbefehl einzufügen. –

+0

Genau das, was ich von Sublime Text vermisse! – Xenofex

2

Wenn Ihr Ersatztext zu Änderung muss für jedes abgestimmte Auftreten (das heißt nicht nur die Auswahl Ja/Nein einen singulären Ersatz anwenden) können Sie eine Vim-Plugin verwenden ich interactive-replace genannt gemacht.