Wie führe ich ein Block-Suchen und Ersetzen mit Vim durch?


8

Ich habe Text in Vim

  1. Drücken Sie Ctrl+V, um VIm in den Blockmodus zu versetzen
  2. Markieren Sie den gewünschten Text
  3. Geben Sie :this ein, um diese Eingabeaufforderung anzuzeigen:'<,'>
  4. Ich füge der Eingabeaufforderung meinen regulären Ausdruck hinzu s/ /*/g. Dies lässt mich mit :'<,'>s/ /*/gund der Text hervorgehoben
  5. Ich drücke die Eingabetaste

Leider arbeitet es auf der gesamten Linie für den Block, nicht nur für den Block. Gibt es überhaupt eine Blocksuche und -ersetzung?

Antworten:


12

Wenn Sie ex-Befehle im visuellen Blockmodus verwenden :, arbeiten sie immer auf der gesamten Leitung. Es gibt zwei Möglichkeiten, dies zu umgehen:

  1. Das \%VAtom stimmt nur innerhalb des visuellen Bereichs überein. Versuchen

    :'<,'>s/\%V /*/g
    

    Sehen :help %V

  2. Es gibt spezielle visuelle Versionen einiger Befehle, live v_s oder v_r. Sehen:help visual-operators

Ich kann nicht herausfinden, wie ich das zum Laufen bringen kann
Evan Carroll

Das \% V-Atom schränkt ein Muster so ein, dass es nur innerhalb der visuellen Auswahl übereinstimmt. Versuchen Sie:'<,'>s/\%V /*/g
DaveParillo

1
Diese Seite enthält eine gute Beschreibung dessen, was Sie versuchen zu tun. vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection
DaveParillo
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.