Edit : je viens de découvrir le plugin vim-textobject-latex , qui ajoute la fonctionnalité exacte que vous recherchez (en plus de quelques autres choses). Depuis le fichier README du plugin:
Les objets texte actuellement pris en charge sont:
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{...}``
Ainsi, vous pouvez utiliser caq
et similaires comme vous le vouliez. Je l'ai testé et cela fonctionne comme annoncé, mais notez qu'il dépend du plugin vim-textobject-user . Notez également que vous devez vous assurer que le textobject-user
plugin se charge d'abord , sinon les choses ne fonctionneront pas.
Si vous ne voulez pas jouer avec les plugins, ma réponse originale reste utile:
L'ajout de ces deux lignes à votre .vimrc
couverture couvrira la plupart de vos souhaits.
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
Ceux-ci créent de nouveaux objets texte ( aq
et iq
) qui reviennent au précédent `
, passent en mode de sélection visuelle, puis sélectionnent jusqu'au suivant '
.
Cela fonctionne pour ciq
, caq
, yiq
et diq
. Cependant, yaq
et daq
ne tirera pas / ne supprimera pas les guillemets externes, j'ai donc créé un autre objet texte a"
, pour gérer cela ( i"
n'est pas nécessaire, mais j'ai ajouté pour garder les choses cohérentes:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
L'inconvénient majeur ici est que cela va casser l'utilisation normale ca"
, etc. Si vous les faites précéder au FileType tex
, vous n'aurez ce problème que dans les .tex
fichiers, mais cela pourrait parfois être un problème. Vous pouvez également nommer l'objet quelque chose comme ad
/ id
('d' pour 'double' citation), mais cela me semblait moins intuitif (je visais la moindre différence par rapport au fonctionnement normal).
La seule façon de penser à les regrouper en deux objets texte serait d'écrire une fonction qui vérifie une autre citation en dehors du premier ensemble et de définir les aq
objets texte pour appeler cela.
Remarque : Il y a quelques autres problèmes mineurs avec ceux-ci:
- Yanking pourrait laisser votre curseur dans un endroit inattendu (cela pourrait être résolu en ajoutant une marque dans les commandes (par exemple
ma2F`v2f'<cr>`a
), assurez-vous simplement de ne pas en utiliser une que vous utilisez fréquemment manuellement)
- Le curseur doit être à l'intérieur des guillemets; des choses étranges se produisent si c'est sur les guillemets.
Pour conclure tout cela, voici ce que j'ajouterais personnellement à .vimrc
ce problème:
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
Comme vous pouvez le voir, j'ai opté pour la rupture de la fonctionnalité normale ca'
/ ya"
/ etc afin de ne pas avoir à apprendre de nouvelles commandes pour eux car je n'utiliserais pas autant la fonctionnalité normale dans LaTeX. C'est juste une préférence personnelle; pas difficile de changer les noms des objets. J'ai également ajouté la détection de type de fichier et les marques.
iq
, mais ne semble pas fonctionner avec, par exempledaq
,.