W jaki sposób można uzyskać vim, aby zastąpić znak w selekcji wizualnej tylko i gdzie indziej na linii? Przykład:
- Linia:
int arr[] = { 00 01 02 03 04 05 05 /* ... lots more like this*/};
- Wybór wizualny:
{ 00 01 02 03 04 05 05 /*... lots more like this*/}
- Dowództwo:
:'<,'>s/\ /\,0x/g
- Spodziewany:
int arr[] = {0x00,0x01,0x02,0x03 /* and so on*/};
Po wykonaniu tych czynności rzeczywisty wynik to:
int,0xarr[],0x=,0x{0x00,0x01,0x02,0x03 /* and so on*/};
Czy istnieje sposób zmodyfikowania powyższego polecenia, aby uzyskać oczekiwany wynik? Nie '<
i '>
określić zakres, w którym wyszukiwarki (i zastąpić) nakazuje pracę?
substitute
visual-mode
Bhargav Bhat
źródło
źródło
:substitute
operatory są wiersz po wierszu, co wyjaśnia to, co widzisz w swoim przykładzie.Odpowiedzi:
%V
pasuje do obszaru wizualnego. Zobaczyć:help %V
.źródło
Jest
\%V
na to, patrz:h %V
:Aby zastąpić
foo
przez tylkobar
w zaznaczeniu, użyj:W tym konkretnym przypadku:
źródło
Jeśli chcesz zastąpić w bloku wizualnym , możesz użyć
vis.vim
wtyczki .http://vim.wikia.com/wiki/Applying_substitutes_to_a_visual_block
Żeby zainstalować:
Pobierz vis.vba.gz ze strony http://www.drchip.org/astronaut/vim/index.html#VIS
Po zainstalowaniu:
Podczas pisania
:B
zobaczysz toW porządku, po prostu vim mówi, że polecenie będzie miało zastosowanie do aktualnie wybranego bloku wizualnego.
Co więcej, możesz wykonać dowolną komendę Ex na bloku wizualnym, a nie tylko podstawienia. Na przykład
:B !sort
.źródło