現在の演算子に依存するテキストオブジェクトを定義する


8

テキストオブジェクトにその演算子を認識させることができるかどうか、私は興味があります。特に、オペレーターに応じて異なる動作が必要なLaTeX環境用のテキストオブジェクトを作成しています。たとえば、次のLaTeXスニペットを考えてみます。

\begin{example}
  Hello world
\end{example}

ここではdie、行ごとにコンテンツを削除するのが最も便利ですが、cie「Hello world」は削除されますが、インデントは保持されます。つまり、

\begin{example}
  |
\end{example}

|カーソルはどこですか。


1
これは通常、どの演算子を使用するかによってではなく、動きを線状に定義するかどうかによって制御されます。特定の演算子への書き込みを避けて、テキストオブジェクトがカスタム演算子でもうまく機能するようにします。
tommcdo 2016

重要なのは、使用する演算子によっては、モーションを線状にしたい場合とそうでない場合があります。これは矛盾しているように見えるかもしれませんが、この特定のケースでは、そのような区別は自然だと思います。
Karl YngveLervåg16年

回答:


5

次の例は、あなたが求めているものに近づいています。

onoremap <expr> w '<esc>' . v:operator . v:count1 . (v:operator ==# 'd' ? 'aw' : 'iw')

これは、delete演算子で使用される場合、つまり= であるか、それ以外の場合、たとえば=のwいずれかawであるテキストオブジェクトを作成します。dwdawiwcwciw


ありがとう!v:operator変数は、私が探していたものだけでした!
Karl YngveLervåg、2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.