編集:私はvim-textobject-latexプラグインを発見しました。これはあなたが探している正確な機能を(他のいくつかのものに加えて)追加します。プラグインのREADMEから:
現在サポートされているテキストオブジェクトは次のとおりです。
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{...}``
だからあなたがcaq
望むように使用することができます。私はそれをテストし、宣伝どおりに動作しますが、vim-textobject-userプラグインに依存していることに注意してください。また、textobject-user
プラグインが最初にロードされることを確認する必要があることに注意してください。そうしないと、動作しません。
ただし、プラグインをいじりたくない場合は、元の答えが引き続き有用です。
これらの2行を追加すると、必要なもののほとんど.vimrc
がカバーされます。
onoremap aq :<c-u>normal! F`vf'<cr>
onoremap iq :<c-u>normal! T`vt'<cr>
これらは、前に戻ってビジュアル選択モードに入り、次まで選択する新しいテキストオブジェクト(aq
およびiq
)を作成します。`
'
これがために働くだろうciq
、caq
、yiq
、とdiq
。しかし、yaq
およびdaq
ヤンク/外側の引用符を削除しません、私は別のテキストオブジェクトを作成したので、a"
(それを処理するためにi"
必要とされていないが、私は一貫性のあるものを維持するために追加しました:
onoremap a" :<c-u>normal! 2F`v2f'<cr>
onoremap i" :<c-u>normal! 2T`v2t'<cr>
ここでの主な欠点は、これにより通常のca"
使用などが中断されることです。を先頭au FileType tex
に付けると、.tex
ファイルにその問題があるだけになりますが、それでも面倒な場合があります。また、オブジェクトにad
/ id
(「二重」引用符の「d」)のような名前を付けることもできますが、それは私には直観的ではないように見えました(通常の操作との最小の差を目指していました)。
これらを2つのテキストオブジェクトにまとめる唯一の方法は、最初のセット以外の別の引用符をチェックする関数を記述し、それaq
を呼び出すようにテキストオブジェクトを設定することです。
注:これらには、いくつかのマイナーな問題があります。
- ヤンクするとカーソルが予期しない場所に残る場合があります(コマンドにマークを追加することで修正できます(例
ma2F`v2f'<cr>`a
)。頻繁に手動で使用するものを使用しないようにしてください)。
- カーソルは引用符の中になければなりません。引用符の上にある場合、奇妙なことが起こります。
それをすべてまとめると、.vimrc
この問題のために私が個人的に追加するのはこれです:
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
ご覧のとおり、通常のca'
/ ya"
/ etc機能を無効にすることを選択しました。とにかくLaTeX内では通常の機能をあまり使用しないので、それらの新しいコマンドを学ぶ必要はありません。それは個人的な好みです。オブジェクト名を切り替えるのは難しくありません。ファイルタイプの検出とマークにも追加しました。
iq
、たとえばでは機能しないようですdaq
。