Edycja : Właśnie odkryłem wtyczkę vim-textobject-latex , która dodaje dokładnie tę funkcjonalność, której szukasz (oprócz kilku innych rzeczy). Z pliku README wtyczki:
Aktualnie obsługiwane obiekty tekstowe to:
a i Description
a\\ i\\ Inline math surrounded by ``\\(`` and ``\\)``.
a$ i$ Inline math surrounded by dollar signs.
aq iq Single-quoted text ``\`like this'``.
aQ iQ Double-quoted text ``\``like this''``.
ae ie Environment ``\begin{...}–\end{...}``
Możesz więc używać caq
i tym podobnych, jak chcesz. Przetestowałem to i działa zgodnie z reklamą, ale pamiętaj, że zależy to od wtyczki vim-textobject-user . Pamiętaj też, że musisz się upewnić, że textobject-user
wtyczka ładuje się pierwsza , w przeciwnym razie nic nie będzie działać.
Jeśli jednak nie chcesz zadzierać z wtyczkami, moja oryginalna odpowiedź pozostaje przydatna:
Dodanie tych dwóch wierszy do większości.vimrc
obejmuje wszystko, co chcesz.
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
Tworzą one nowe obiekty tekstowe ( aq
i iq
), które wracają do poprzedniego `
, wchodzą w tryb selekcji wizualnej, a następnie wybierają do następnego '
.
Będzie to działać na ciq
, caq
, yiq
, i diq
. Jednak yaq
i daq
nie będzie szarpać / usuwać zewnętrznych cytatów, więc stworzyłem inny obiekt tekstowy a"
, aby sobie z tym poradzić ( i"
nie jest to konieczne, ale dodałem, aby zachować spójność:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
Główną wadą jest to, że złamie to normalne ca"
itp. Jeśli je przedmówisz au FileType tex
, będziesz mieć tylko ten problem w .tex
plikach, ale czasami może to być irytujące. Mógłbyś też nazwać obiekt czymś w rodzaju ad
/ id
(„d” dla „podwójnego” cytatu), ale wydawało mi się to mniej intuicyjne (dążyłem do jak najmniejszej różnicy od normalnego działania).
Jedynym sposobem, w jaki mogę wymyślić, aby zawinąć je w dwa obiekty tekstowe, byłoby napisanie funkcji, która sprawdza inny cudzysłow poza pierwszym zestawem i ustawienie aq
obiektów tekstowych na wywołanie tego.
Uwaga : Istnieje kilka innych drobnych problemów z nimi:
- Yanking może pozostawić kursor w nieoczekiwanym miejscu (można to naprawić, dodając znak w poleceniach (np.
ma2F`v2f'<cr>`a
), Po prostu upewnij się, że nie używasz tego, którego często używasz ręcznie)
- Kursor musi znajdować się w cudzysłowie; dziwne rzeczy zdarzają się, jeśli jest w cytatach.
Podsumowując, to osobiście dodałbym do mojego .vimrc
tego problemu:
augroup filetype_latex
au!
au FileType tex,plaintex onoremap a' :<c-u>normal! muF`vf'<cr>`u
au FileType tex,plaintex onoremap i' :<c-u>normal! muT`vt'<cr>`u
au FileType tex,plaintex onoremap a" :<c-u>normal! mu2F`v2f'<cr>`u
au FileType tex,plaintex onoremap i" :<c-u>normal! mu2T`v2t'<cr>`u
end augroup
Jak widać, zdecydowałem się na zerwanie normalnej funkcjonalności ca'
/ ya"
/ etc, więc nie musiałbym uczyć się nowych poleceń dla nich, ponieważ i tak nie używałbym normalnej funkcjonalności w LaTeX-ie. To tylko osobiste preferencje; nietrudnie zmieniać nazwy obiektów. Dodałem także w wykrywaniu i typach plików.
iq
, ale wydaje się, że nie działadaq
.