Po wybraniu zakresu wierszy za pomocą V
polecenia chciałbym usunąć każdy wiersz pliku, który NIE jest zaznaczony, więc jest sposób na odwrócenie wyboru - wybierz każdą linię, która nie została wybrana?
Jak jak
:g!/FOO/d
usuwa każdą linię, która NIE zawiera FOO .
Gdybym miał na myśli zasięg i chciałem użyć jego odwrotności:
'a,'b
Musiałbym użyć dwóch zakresów:
1,'a-1
i
'b+1,$
Podejrzewam, że nie da się tego zrobić jednym krokiem - ale byłoby miło!
Odpowiedzi:
Najpierw utwórz następujące mapowanie (na przykład powiązane z
<F4>
kluczem)następnie, po wybraniu zakresu w trybie wizualnym, wystarczy nacisnąć,
<F4>
aby wywołać powiązane polecenie. Polecenie można łatwo wyjaśnić w częściach::
” Wejdź w tryb wiersza poleceń.<C-U>
" Usuń wszystkie znaki między pozycją kursora a początkiem linii.1,'<-1
” Określ zakres od pierwszego wiersza pliku do wiersza przed rozpoczęciem bieżącego wyboru.:delete<CR>
” Usuń (poprzednio określony zakres linii).:'>+1,$:delete<CR>
„ Usuń linie z zakresu ”'>+1,$
”, tj. Od linii po końcu zaznaczenia do końca pliku.źródło
"*yggdG"*p
co znaczy ...źródło
.vimrc
? Próbowałem kilka prób, ale jeszcze nie dostałem. Moje próby byłymap <F4> n"*yggdG"*p
inmap <F4> "*yggdG"*p
Tylko dla potomności:
Robi to odwrotność globalną dla linii, które nie są częścią zaznaczenia. Zauważ, że: v jest konstrukcją opartą na linii, więc każda linia zawierająca dowolne zaznaczenie, niezależnie od tego, czy będzie to linia, strumień czy wybór bloku, zostanie oszczędzona.
źródło
ponieważ „odwracanie” oznacza w zasadzie tworzenie „multiselections” (obszar przed i po pierwotnym zaznaczeniu) ponownie przeszukałem vimscripts http://www.vim.org/scripts/script.php?script_id=953 . Spróbuj tego.
źródło