Say mam ten wiersz tekstu w vim:Usuń od kursora do końca nawias (itd.) W vim
(foo bar (baz) qux)
^
i mój kursor znajduje się na przestrzeni pomiędzy foo
i bar
jak wskazano. Często stwierdzam, że w sytuacjach takich jak to, chcę usunąć całą prawą stronę zewnętrznego wyrażenia parenthesized (to jest, na prawo od mojego kursora), pozostawiając nienaruszoną lewą stronę. Oznacza to, że chciałbym skończyć z:
(foo)
Zwykle bym tego dokonać z dt)
(„usuwać aż )
”), ale dodanie zagnieżdżonego nawiasach komplikuje rzeczy: że komenda odejdzie ja z (foo) qux)
. Mogłabym też użyć d2t)
, ale wolałbym nie ręcznie numerować zagnieżdżonych nawiasów. Mogłabym też użyć di)
, ale to usunie wewnątrz nawiasów cały, zostawiając mnie z ()
.
Czy istnieje ruch vim ze świadomością równowagi i
- and a
-modified motions, ale czy jest on względny w stosunku do bieżącej pozycji kursora?
Nie wiedziałem o '])'; to na pewno prostsze rozwiązanie niż moje (ale moje nadal powinno działać dla wersji vi). –
@Keith Thompson: Twoje rozwiązanie jest z pewnością kompatybilne z Vi, co jest miłe.Mój strach z twoim rozwiązaniem polega na tym, że jest zależne od 'F (' znajdowania odpowiedniego '' '' 'jump to." Myślę, że wolałbym zrobić 'df)' i powtórzyć w/'.', a następnie' a) ' . Lub 'mxF (' następnie powtórz ruch 'F' z', 'aż do poprawnego' ('zostanie znalezione następnie' '% d'x'' –
Tak, właśnie pomyślałem o przypadku, w którym moje rozwiązanie nie zadziała:' ((przed) foo^(po)) '.' 'F (' lub '? (' znajdzie lewe okienko poprzedzające 'przed ', a nie najbliższe zamykające pozycję kursora. (pamiętam': set seplp 'polecenie od wielu lat temu Widzę, że vim nadal to ma.Jak to robi? Tak, powinienem RTFM.) –