vim-operator-furround で LaTeX/XML 編集

LaTeX みたいなのだと, \begin{hoge} と \end{hoge} で囲みたいのでこういうのを変換できると便利なことはありそうな感じですが, これこそピンポイントすぎる気がしたので対応していません. 自分が使わないし.

hoge() で囲みたい症候群 - vim 初心者の作業メモ

syngan
html系は考えましたが、自分が使わないのでいらないになりました。
(この記事書いてる時に、textobj の色つけるところで使いたかったですが。。)

vim-jp – Lingr

LaTeX などを vim で編集するときはだいたい \begin{xxx} こぴってきて, 2 回ペーストして, begin->end して... としていて, 意外と使えそうな....
ということで, 数日前に自分でいらないといっていた機能ですが, ほしくなったので実装してみました. ヤンクしている文字列の最後が, 括弧始まり(({[<|'"`)でない場合に機能します.

前回と同様に

    map H <Plug>(opeartor-furround-append)

などとしておいて,

  : カーソル位置

i am a pen.

という状態であるとします.

LaTeX モード

デフォルトで有効です. b:operator_furround_latex または, g:operator_furround_latex を 0 に設定することで, 無効にできます.

例えば, "\begin{center}" をヤンクしている状態で, Hiw すれば

i am a \begin{center}pen\end{center}.

例えば,

\begin{table}[htb]
\begin{center}
\begin{tabular}{c|l}

を yank している状態で, VH すれば

\begin{table}[htb]
\begin{center}
\begin{tabular}{c|l}
i am a pen.
\end{tabular}
\end{center}
\end{table}

となります. (改行有無は motion=line かどうかで判断)

XML モード

デフォルトは無効です. b:operator_furround_xml または, g:operator_furround_xml を 1 に設定することで, 有効にできます.

例えば, "<p>" をヤンクしている状態で, Hiw すれば

i am a <p>pen</p>.

例えば, "<p><q key=value><r>" をヤンクしている状態で Hiw すれば

i am a <p><q key=value><r>pen</r></q></p>.

となります.便利. こっちは改行しません.