Vim: szybszy sposób zaznaczania bloków tekstu w trybie wizualnym


199

Używam Vima od dłuższego czasu i zdaję sobie sprawę, że zaznaczanie bloków tekstu w trybie wizualnym jest tak proste, jak SHIFT+ Vi przesuwanie klawisza strzałki w górę lub w dół linia po linii, aż dojdę do końca bloku tekstu, który mam chcesz wybrać.

Moje pytanie brzmi - czy w trybie wizualnym istnieje szybszy sposób na zaznaczenie bloku tekstu, na przykład przez naciśnięcie SHIFT+, Va następnie określenie numeru wiersza, w którym chcę zakończyć zaznaczanie ? ( :35na przykład przez, gdzie 35 to numer linii, do której chcę wybrać - to oczywiście nie działa, więc moje pytanie brzmi: jak można zrobić coś podobnego ...)


3
+1 Dobre pytanie, ponieważ często robię coś takiego. Zastanawiam się, czy może to nie jest miejsce rozpocząć korzystanie z użyciem v%lub v/patternczy coś innego?
user786653

9
vip wybierz wewnętrzny akapit vis wybierz zdanie wewnętrzne.
SergioAraujo

29
V35Gwizualnie wybierze od bieżącej linii do linii 35, również V10jlub V10kwizualnie wybierze następną lub poprzednią 10 linii
Stephan

1
@Stephan, właśnie tego szukałem. Dzięki!!
wrzasnąć

dla linii opcji Use I skrót: nnoremap <Space> V. W trybie linii wizualnych wystarczy kliknąć prawym przyciskiem myszy, aby zdefiniować wybór (przynajmniej w Linuksie tak jest). W każdym razie bardziej efektywny niż z samą klawiaturą.
Michaił V

Odpowiedzi:


217

Oprócz tego, co powiedzieli inni, możesz również rozszerzyć swój wybór za pomocą wyszukiwania wzorców.

Na przykład, v/foowybierze od aktualnej pozycji do następnego wystąpienia „foo”. Jeśli faktycznie chciałeś rozwinąć do następnej instancji „foo”, na przykład w linii 35, po prostu naciśnij, naby rozszerzyć zaznaczenie do następnej instancji i tak dalej.

aktualizacja

Nieczęsto to robię, ale wiem, że niektórzy ludzie używają znaczników do dokonywania wizualnych wyborów. Na przykład, jeśli jestem w linii 5 i chcę wybrać linię 35, mogę nacisnąć, maaby umieścić znacznik aw linii 5, a następnie :35przejść do linii 35. Shift+, vaby przejść do trybu wizualnego linewise i na koniec `awybrać powrót do zaznaczenia a.


21
Jeśli potrzebujesz dołączyć wzór, którego możesz użyć v/foo/e. eOznacza „koniec” dopasowanego wzorca.
Peter Rincker

6
I możesz modyfikować z tej linii za pomocą przesunięć: V / foo / + 5 lub V / foo / -5 (używam liniowego trybu wizualnego, jak autor).
bheeshmar

Co byś zrobił, gdybyś chciał wybrać zakres tekstu pasujący do twojego wyszukiwania; tj .: znaleźć i zaznaczyć (całe słowo) wyszukiwane hasło?
Daniel Park

5
@DanielPark Aby wybrać aktualne słowo, użyj v i w. Jeśli chcesz wybrać bieżącą, ciągłą, niebiałą spację, użyj v i Shift+ w. Różnica polegałaby na tym, że kiedy daszek jest tutaj MyCla|ss.Method, pierwsza kombinacja wybrałaby, MyClassa druga wybrałaby całą rzecz.
Jay

1
Dzięki. Okazało się, że również użycie v i w spozwala skutecznie wykonać operację „zamiany”.
Daniel Park

116
G                       Goto line [count], default last line, on the first
                        non-blank character linewise.  If 'startofline' not
                        set, keep the same column.
                        G is a one of jump-motions.

V35G osiąga to, czego chcesz


90

Vim to język. Aby naprawdę zrozumieć Vima, musisz znać język. Wiele poleceń to czasowniki, a vim ma również obiekty i przyimki.

V100G
V100gg

Oznacza to „wybierz bieżącą linię aż do wiersza 100 włącznie”.

Obiekty tekstowe są tam, gdzie jest dużo mocy. Wprowadzają więcej obiektów z przyimkami.

Vap

Oznacza to „zaznacz wokół bieżącego akapitu”, czyli zaznacz bieżący akapit i pusty wiersz następujący po nim.

V2ap

Oznacza to „zaznaczanie wokół bieżącego i następnego akapitu”.

}V-2ap

Oznacza to „przejdź do końca bieżącego akapitu, a następnie wizualnie zaznacz go i poprzedni akapit”.

Zrozumienie Vima jako języka pomoże Ci uzyskać z niego najlepszy przebieg.

Po wybraniu w dół możesz łączyć z innymi poleceniami:

Vapd

Za pomocą powyższego polecenia możesz zaznaczyć akapit i usunąć go. Zmień na da, yaby skopiować lub na a, caby zmienić lub na a, paby wkleić.

Kiedy już zrozumiesz, jak działają wszystkie te polecenia, ostatecznie nie będziesz musiał niczego wizualnie wybierać. Zamiast wizualnie zaznaczać, a następnie usuwać akapit, możesz po prostu usunąć akapit za pomocą dappolecenia.


} V-2ap Użycie -2 jest naprawdę sprytne.
Ambareesh

40

v35G wybierze wszystko, od kursora do linii 35.

vprzełącza cię w tryb wyboru, 35określa numer linii, do której chcesz Gprzejść.

Możesz także użyć, v}który zaznaczy wszystko do początku następnego akapitu.



10

Shift+V n j lub Shift+V n k

Spowoduje to zaznaczenie bieżącej linii i następnych / poprzednich nlinii. Uważam, że jest to bardzo przydatne.


To jest prosty sposób, którego szukałem. Dzięki
Arsal


6

v%

wybierze cały blok.

Graj z:

v}, vp, vs, Itd.

Zobacz pomoc:

:help text-objects

który zawiera listę różnych sposobów zaznaczania liter, słów, zdań, akapitów, bloków i tak dalej.



5

proste po prostu naciśnij Shift v line number gg

Przykład: bieżący wiersz do wiersza 41 Po prostu naciśnij Shift v 41 gg


4

Zawsze możesz użyć liczb poprzedzających, aby powtórzyć akcje:

  • W trybie wizualnym wpisz 35 a kursor przesunie się w dół 35 razy, wybierając kolejne 35 linii
  • W trybie normalnym:
    • usuń 35 wierszy 35dd
    • wklej 35 razy 35p
    • cofnij 35 zmian 35u
    • itp.

4

Możesz nacisnąć, vi}aby wybrać blok otoczony{} nawiasami, w którym aktualnie znajduje się kursor.

Tak naprawdę nie ma znaczenia, gdzie jesteś w tym bloku (po prostu upewnij się, że jesteś w najbardziej zewnętrznym). Możesz także zmienić {na wszystko, co ma parę, taką jak )lub ].


1

} oznacza przeniesienie kursora do następnego akapitu. więc użyj v}by zaznaczyć cały akapit.


0

Aby wybrać wszystko w trybie wizualnym: naciśnij Esc, aby upewnić się, że jesteś w trybie normalnym

:0 

wpisz ENTER, aby przejść na początek pliku

vG

Możesz również użyć ggw trybie normalnym, aby przejść do pierwszej linii.
huangzonghao

0

Warto wiedzieć:

Aby wybrać tę samą liczbę linii, na przykład użyj 1v Powinieneś dokonać pewnych modyfikacji, aby móc używać 1v, blokowo lub liniowo.

Dzisiaj zobaczyłem tę niesamowitą wskazówkę stąd :

 :5mark < | 10mark > | normal gvV
 :5mark < | 10mark > | normal gv

Możesz także zresetować granice bloków wizualnych, robiąc to:

m< .......... sets the visual mode start point
m> .......... sets the visual mode end point

0

Używam tego z zawijaniem w trybie wcięcia:

v otwórz tryb Visual w dowolnym miejscu bloku

zaza wygoogluj go dwukrotnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.