Anführungszeichen in LaTeX unterscheiden sich von normalem Text darin, dass sie formatiert sind ``like this''
(oder `like this'
für einfache Anführungszeichen). Dies erschwert die Navigation in Vim.
Ich benutze normalerweise so etwas wie T`ct'
(rückwärts bis `
, ändern bis '
). Dies ist jedoch klobig und unnatürlich. Ich würde es vorziehen, um etwas entlang der Linien von verwenden ciq
( „change in Anführungszeichen“), so wie ich tun kann ciw
, ca)
, ci"
, ca'
etc.
Gibt es eine Möglichkeit, Vim anzuweisen, sie ``LaTeX'' `quotes'
als Textobjekte zu behandeln ? (Gibt es eine Möglichkeit, dies nur beim Bearbeiten einer .tex
Datei auszulösen ?)
iq
, scheint aber nicht damit zu funktionierendaq
.aq
auch mit einer zusätzlichen ähnlichen Zuordnung zum Laufen bringen. Ich habe die Antwort bearbeitet. Ich habe auch T` mit t 'im Mapping vertauscht, damit es zuerst nach vorne sucht, was mir natürlicher erscheint.daq
auf``foo''
nur Ergebnisse in`foo'
.f
und diest
zulassen. Dazu müssten Sie eine ganze Funktion mit Variablen und allem schreiben. Ich habe momentan keine Zeit dafür.Bearbeiten : Ich habe gerade das Plugin vim-textobject-latex entdeckt , das genau die Funktionalität hinzufügt, nach der Sie suchen (neben ein paar anderen Dingen). Aus der README des Plugins:
Derzeit unterstützte Textobjekte sind:
So können Sie
caq
und dergleichen verwenden, wie Sie wollten. Ich habe es getestet und es funktioniert wie angekündigt, beachte aber, dass es vom vim-textobject-user- Plugin abhängt . Beachten Sie auch, dass Sie sicherstellen müssen, dass dastextobject-user
Plugin zuerst geladen wird, sonst funktionieren die Dinge nicht.Wenn Sie sich jedoch nicht mit Plugins herumschlagen möchten, bleibt meine ursprüngliche Antwort nützlich:
Wenn Sie diese beiden Zeilen hinzufügen,
.vimrc
wird das meiste abgedeckt, was Sie möchten.Diese erstellen neue Textobjekte (
aq
undiq
), die zum vorherigen zurückkehren`
, in den visuellen Auswahlmodus wechseln und dann zum nächsten wechseln'
.Dies funktioniert für
ciq
,caq
,yiq
, unddiq
. Allerdingsyaq
unddaq
nicht yank / die äußeren Anführungszeichen löschen, so dass ich einen anderen Textobjekt erstellt,a"
, dass behandeln (i"
nicht benötigt wird, aber ich hinzugefügt Dinge konsistent zu halten:Der Hauptnachteil hier ist, dass dies den normalen
ca"
Gebrauch usw. stört. Wenn Sie sie mit einem Vorwort versehenau FileType tex
, haben Sie nur dieses Problem in den.tex
Dateien, aber es kann gelegentlich dennoch ärgerlich sein. Sie könnten das Objekt auch so benennen wiead
/id
('d' für 'double' quote), aber das erschien mir weniger intuitiv (ich habe den geringsten Unterschied zum normalen Betrieb angestrebt).Die einzige Möglichkeit, diese in nur zwei Textobjekte zu packen, besteht darin, eine Funktion zu schreiben, die nach einem anderen Anführungszeichen außerhalb des ersten Satzes sucht und die
aq
Textobjekte so einstellt, dass sie das aufrufen.Hinweis : Es gibt einige kleinere Probleme mit diesen:
ma2F`v2f'<cr>`a
Sie häufig manuell verwenden.)Um das alles zusammenzufassen, ist dies, was ich persönlich zu meinem
.vimrc
für diese Ausgabe hinzufügen würde :Wie Sie sehen, habe ich mich dafür entschieden, die normale
ca'
/ya"
/ etc-Funktionalität zu unterbrechen, damit ich keine neuen Befehle für sie lernen muss, da ich die normale Funktionalität in LaTeX sowieso nicht so oft verwenden würde. Das ist nur eine persönliche Präferenz. nicht schwer, die Objektnamen zu wechseln. Ich habe auch in der Dateityperkennung und Marken hinzugefügt.quelle
Dies ist eine alte Frage, aber zum Nutzen der zukünftigen Besucher: Ich finde es einfacher, die Latex-Zitate zu ändern mit:
Und dann
This thing is "Foobar"!
wird in Vim und Latex gut funktionieren.quelle
Plugin
vim-sandwich
Ein weiteres nützliches Plugin hierfür ist
vim-sandwich
das, welches ft-spezifische Umgebungen definiert hatl`
oderl'
für`text'
,l"
für``text''
undMit den voreingestellten Zuordnungen funktioniert folgendes
`text'
mitcisl'
oder wenn die automatische Erkennung der nächsten Umgebung ist in Ordnungcib
(zB Cursorh
in`a (phony) text'
erfordert zu drückenvibibc
). Sie können jedoch folgendes zusätzliches Textobjekt definiereniq
(OP-Beispiel).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"
Drücken Sie nun einfachciq
oderciQ
funktioniert.text
withsaiwl'
single apostrophes to get`text'
Das Muster des Befehls lautet
sa{motion/textobject}{surrounding}
und bedeutet, dass der Operatoradd surrounding
on aufgerufen wirdinner word
und der Surround-Typ lautetlatex single quote
.sdl'
oder mitsdb
srl'l"
oder mitsrbl"
Es unterstützt
quelle