Znaki cudzysłowu w LaTeX różnią się od zwykłego tekstu tym, że są sformatowane ``like this''
(lub w `like this'
przypadku pojedynczych cudzysłowów). Utrudnia to poruszanie się po nich w Vimie.
Zwykle używam czegoś takiego T`ct'
(do tyłu `
, zmieniam do '
). Jest to jednak niezręczne i nienaturalne. Wolałbym, aby móc użyć coś wzdłuż linii ciq
( „zmiany w cudzysłowie”), podobnie jak mogę zrobić ciw
, ca)
, ci"
, ca'
, itd.
Czy jest jakiś sposób, aby powiedzieć Vimowi, aby traktował ``LaTeX'' `quotes'
jak obiekty tekstowe? (Na plus, czy jest jakiś sposób, aby uruchomić to tylko podczas edycji .tex
pliku?)
iq
, ale wydaje się, że nie działadaq
.aq
również z dodatkowym podobnym mapowaniem. Zredagowałem odpowiedź. Zamieniłem również T` z t 'na mapowaniu, aby najpierw przeszukiwał do przodu, co wydaje mi się bardziej naturalne.daq
on``foo''
tylko skutkuje`foo'
.f
it
, co wymagałoby napisania całej funkcji ze zmiennymi i wszystkim innym. Nie mam teraz na to czasu.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:
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ć, żetextobject-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.Tworzą one nowe obiekty tekstowe (
aq
iiq
), 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
, idiq
. Jednakyaq
idaq
nie będzie szarpać / usuwać zewnętrznych cytatów, więc stworzyłem inny obiekt tekstowya"
, aby sobie z tym poradzić (i"
nie jest to konieczne, ale dodałem, aby zachować spójność:Główną wadą jest to, że złamie to normalne
ca"
itp. Jeśli je przedmówiszau 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 rodzajuad
/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:
ma2F`v2f'<cr>`a
), Po prostu upewnij się, że nie używasz tego, którego często używasz ręcznie)Podsumowując, to osobiście dodałbym do mojego
.vimrc
tego problemu: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.źródło
To stare pytanie, ale z korzyścią dla przyszłych gości: łatwiej jest mi zmienić cytaty lateksowe za pomocą:
A potem
This thing is "Foobar"!
będzie działał dobrze w vimie i lateksie.źródło
Podłącz
vim-sandwich
Inną przydatną wtyczką do tego jest
vim-sandwich
środowisko specyficzne dla ftl`
lubl'
za`text'
,l"
dla``text''
iPrzy domyślnych mapowaniach po pracy
`text'
zcisl'
lub jeśli automatyczna detekcja z najbliższego otoczenia jest w porządkucib
(np kursor nah
w`a (phony) text'
wymaga prasievibibc
). Można jednak zdefiniować następujący dodatkowy obiekt tekstowyiq
(przykład OP).omap <unique> iq <Plug>(textobj-sandwich-query-i)l' xmap <unique> iq <Plug>(textobj-sandwich-query-i)l' omap <unique> aq <Plug>(textobj-sandwich-query-a)l' xmap <unique> aq <Plug>(textobj-sandwich-query-a)l' omap <unique> iQ <Plug>(textobj-sandwich-query-i)l" xmap <unique> iQ <Plug>(textobj-sandwich-query-i)l" omap <unique> aQ <Plug>(textobj-sandwich-query-a)l" xmap <unique> aQ <Plug>(textobj-sandwich-query-a)l"
Teraz wystarczy nacisnąćciq
lubciQ
działa.text
pomocąsaiwl'
pojedynczych apostrofów, aby uzyskać`text'
Wzorzec polecenia jest
sa{motion/textobject}{surrounding}
i oznacza, że operator inwokacji jestadd surrounding
włączony,inner word
a typ surround tolatex single quote
.sdl'
lub za pomocąsdb
srl'l"
lub za pomocąsrbl"
To wspiera
źródło