Jak wybrać między nawiasami (lub cudzysłowami lub ...) w Vimie?

Jestem pewien, że kiedyś była wtyczka do tego rodzaju rzeczy, ale teraz, gdy jej potrzebuję, nie mogę jej znaleźć (naturalnie), więc po prostu zapytam ładnie i prosto.

Jaki jest najprostszy sposób wyboru pomiędzy nawiasami, cudzysłowami lub ogólnie listą pasujących znaków?

   write ( *, '(a)' ) 'Computed solution coefficients:'

Na przykład tutaj chciałbym wybrać (a), lub Computed solution coefficients:.

Nie interesują mnie wieloliniowe, tylko przypadki, które występują na jednej linijce.
Author: Randall, 2009-06-30

9 answers

Użyj dowolnego klawisza nawigacyjnego, który chcesz dostać się do nawiasów, a następnie możesz użyć yi( lub yi), aby skopiować wszystko w pasujących nawiasach. Działa to również z nawiasami kwadratowymi (np. yi]) i nawiasami klamrowymi. Oprócz y można również usunąć lub zmienić tekst (np. ci), di]).

Próbowałem tego z podwójnymi i pojedynczymi cytatami i wydaje się, że tam również działa. Dla Twoich danych robię:

write (*, '(a)') 'Computed solution coefficients:'

Przesuń kursor do C, a następnie wpisz yi'. Move the kursor do pustej linii, Naciśnij p i pobierz

Computed solution coefficients:

Jak zauważył CMS , Działa to również w przypadku wyboru trybu wizualnego - wystarczy użyć vi), vi}, vi', itd.

 243
Author: Tim Whitcomb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:43

Aby wybrać pomiędzy pojedynczymi cudzysłowami Zwykle wykonuję vi' ("wybierz wewnętrzne pojedyncze cudzysłowy").

Wewnątrz bloku nawiasów, używam vib ("wybierz wewnętrzny blok")

Wewnątrz kręconego bloku szelek możesz użyć viB ("Wielka Litera B")

Aby selekcje były "inclusive" (wybierz również cudzysłowy, nawiasy lub klamry), możesz użyć a zamiast i.

Więcej informacji na temat selekcji obiektu tekstowego można znaleźć w podręczniku.

 216
Author: CMS,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:25:42

Ta metoda wyboru jest wbudowana i dobrze omówiona w pomocy Vim. Obejmuje znaczniki XML i nie tylko.

Zobacz :help text-objects.

 26
Author: michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:33:04

Do wyboru w obrębie pojedynczych cudzysłowów użyj vi'.

Do wyboru w nawiasie użyj vi(.

 17
Author: Canopus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:26:54

Użyj strzałek lub hjkl, aby przejść do jednego z wyrażeń bracketingu, następnie v, aby wybrać tryb wizualny( tzn. wybór), a następnie %, aby przejść do drugiego nawiasu.

 7
Author: Stobor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:27:39

Zapis funkcji Vim w .vimrc używając wbudowanej funkcji searchpair:

searchpair({start}, {middle}, {end} [, {flags} [, {skip}
            [, {stopline} [, {timeout}]]]])
    Search for the match of a nested start-end pair.  This can be
    used to find the "endif" that matches an "if", while other
    if/endif pairs in between are ignored.
    [...]

(http://vimdoc.sourceforge.net/htmldoc/eval.html )

 3
Author: Adrian Panasiuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-31 17:33:31

Dodałbym szczegół do najczęściej głosowanej odpowiedzi:

Jeśli używasz gvim i chcesz skopiować do schowka, użyj

"+<command>

Aby skopiować całą zawartość między nawiasami (nawiasami lub nawiasami klamrowymi)

Na przykład: "+yi} skopiuje do schowka całą zawartość pomiędzy nawiasami klamrowymi, którą znajduje się kursor.

 2
Author: yuriploc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-09 19:48:35

Zrobiłem wtyczkę vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

Zapewnia obiekty tekstowe dla najbliższych par cudzysłowów dowolnego typu. Użycie tylko iq lub aq pozwala operować na zawartości cudzysłowów pojedynczych ('), podwójnych ( " ) lub tylnych ( ` ), które obecnie otaczają kursor, znajdują się przed kursorem lub za nim (w tej kolejności preferencji). Innymi słowy, skacze do przodu lub do tyłu, gdy jest to potrzebne, aby dotrzeć do cytatów.

To łatwiej zrozumieć patrząc na przykłady (kursor jest pokazany z |):

  1. przed: foo '1, |2, 3' bar; po naciśnięciu diq: foo '|' bar
  2. przed: foo| '1, 2, 3' bar; po naciśnięciu diq: foo '|' bar
  3. przed: foo '1, 2, 3' |bar; po naciśnięciu diq: foo '|' bar
  4. przed: foo '1, |2, 3' bar; po naciśnięciu daq: foo | bar
  5. przed: foo| '1, 2, 3' bar; po naciśnięciu daq: foo | bar
  6. przed: foo '1, 2, 3' |bar; po naciśnięciu daq: foo | bar

Powyższe przykłady podane są dla pojedynczych cudzysłowów, wtyczka działa dokładnie tak samo dla cudzysłowów double ( " ) I back ( ` ).

Możesz także użyć innych operatorów: ciq, diq, yiq, viq, itd.

Proszę spojrzeć na stronę github podlinkowaną powyżej, aby uzyskać więcej szczegółów.

 1
Author: Anton Beloglazov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-09 10:05:13

Prosta mapa klawiatury w vim rozwiązałaby ten problem. Mapa viq F " lvf " hh Powyższe polecenie mapuje viq do klawiszy wyszukiwania pomiędzy cudzysłowami. Zastąp " dowolnym znakiem i utwórz swoje klawisze. Przyklej to do vimrc podczas uruchamiania i powinieneś być w stanie go używać za każdym razem.

 -7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-30 12:53:33