Wie erhält man vim, einen Buchstaben innerhalb der Sichtauswahl nur und nicht anderswo auf der Linie zu ersetzen ? Beispiel:
- Linie:
int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/};
- Visuelle Auswahl:
{ 00 01 02 03 04 05 05 /*... lots more like this*/}
- Befehl:
:'<,'>s/\ /\,0x/g
- Erwartet:
int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};
Nach diesen Aktionen ist das tatsächliche Ergebnis jedoch:
int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};
Gibt es eine Möglichkeit, den obigen Befehl zu ändern, um das erwartete Ergebnis zu erzielen? Definiert '<
und nicht '>
den Bereich, in dem die Befehle Suchen (und Ersetzen) funktionieren?
substitute
visual-mode
Bhargav Bhat
quelle
quelle
:substitute
Operatoren zeilenweise arbeiten, was erklärt, was Sie in Ihrem Beispiel sehen.Antworten:
%V
Stimmt mit dem visuellen Bereich überein. Sehen:help %V
.quelle
Es gibt
\%V
für das, siehe:h %V
:Um nur in der Auswahl
foo
durch zu ersetzenbar
, verwenden Sie:In diesem speziellen Fall:
quelle
Wenn Sie innerhalb eines visuellen Blocks ersetzen möchten , können Sie das
vis.vim
Plugin verwenden .http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
Installieren:
Laden Sie vis.vba.gz von http://www.drchip.org/astronaut/vim/index.html#VIS herunter
Einmal installiert:
Wenn Sie tippen
:B
, sehen Sie diesDas ist in Ordnung, es ist nur vim zu sagen, dass der Befehl auf den aktuell ausgewählten visuellen Block angewendet wird.
Noch besser ist, dass Sie jeden Ex-Befehl für den visuellen Block ausführen können, nicht nur Ersetzungen. Zum Beispiel
:B !sort
.quelle