Edited at

Vim の operator プラグインをまとめた

More than 5 years have passed since last update.

この記事はVim Advent Calendar 2012 : ATND 292日目の記事になります。

今回はoperatorプラグインのまとめ記事です。

以前に、@manga_osyoによるVim の textobj プラグインをまとめたもありました。

まぁなので、その相方をまとめてみようかと思います。


operatorプラグイン

以下、すべてmapとしてますが、実際にはnmapだったりvmapだったりします。

この辺はそのhelpなどを読んでうまく調整してください。mapをそのまま使用するのは危険です。

また、{lhs}は任意の文字列に書き換えて使ってください。


1. emonkak/vim-operator-comment

これは選択したテキストオブジェクトをコメント/アンコメントするオペレーターです。

NeoBundle 'emonkak/vim-operator-comment'

map {lhs} <Plug>(operator-uncomment)
map {lhs} <Plug>(operator-comment)


2. emonkak/vim-operator-sort

これは選択したテキストオブジェクトに対して、ソートするオペレーターです。

NeoBundle 'emonkak/vim-operator-sort'

map {lhs} <Plug>(operator-sort)


3. kana/vim-operator-replace

これは選択したテキストオブジェクトに対してレジスタを汚さない文字列置換するオペレーターです。

NeoBundle 'kana/vim-operator-replace'

map {lhs} <Plug>(operator-replace)


4. pekepeke/vim-operator-normalize-utf8mac

これは選択したテキストオブジェクトに対してiconv(v:val, "utf-8-mac", "utf-8")をするオペレーターです。

NeoBundle 'pekepeke/vim-operator-normalize-utf8mac'

map {lhs} <Plug>(operator-normalize_utf8mac)


5. pekepeke/vim-operator-shuffle

これは選択したテキストオブジェクトの各文字をランダムに並び替えるオペレーターです。

NeoBundle 'pekepeke/vim-operator-shuffle'

map {lhs} <Plug>(operator-shuffle)


6. pekepeke/vim-operator-tabular

これは選択したCSV形式なテキストオブジェクト、もしくはTSV形式なテキストオブジェクトを

Markdown,Textile,Backlogのテーブル書式に変換するオペレーターです。

NeoBundle 'pekepeke/vim-operator-tabular'

" Requires
NeoBundle 'pekepeke/vim-csvutil'

" Markdown
map {lhs} <Plug>(operator-md_tabularize_tsv)
map {lhs} <Plug>(operator-md_tabularize_csv)
map {lhs} <Plug>(operator-md_untabularize_tsv)
map {lhs} <Plug>(operator-md_untabularize_csv)

" Textile
map {lhs} <Plug>(operator-textile_tabularize_tsv)
map {lhs} <Plug>(operator-textile_tabularize_csv)
map {lhs} <Plug>(operator-textile_untabularize_tsv)
map {lhs} <Plug>(operator-textile_untabularize_csv)

" Backlog
map {lhs} <Plug>(operator-backlog_tabularize_tsv)
map {lhs} <Plug>(operator-backlog_tabularize_csv)
map {lhs} <Plug>(operator-backlog_untabularize_tsv)
map {lhs} <Plug>(operator-backlog_untabularize_csv)

例:

" 変換前のテキスト

aaa,bbb,cc
aiueo,kaki,kukekosashi
aiueo,kaki,kukekosashi

" Markdown
aaa |bbb |cc
-----|----|-----------
aiueo|kaki|kukekosashi
aiueo|kaki|kukekosashi

" Textile
aaa |bbb |cc
aiueo|kaki|kukekosashi
aiueo|kaki|kukekosashi

" Backlog
|aaa |bbb |cc |h
|aiueo|kaki|kukekosashi|
|aiueo|kaki|kukekosashi|


7. rbtnn/vim-operator-quickhl.vim

これは選択したテキストオブジェクトに対してQuickhlAddをするオペレーターです。

NeoBundle 'rbtnn/vim-operator-quickhl.vim'

" Requires
NeoBundle 't9md/vim-quickhl'

map {lhs} <Plug>(operator-quickhl)


8. rhysd/vim-clang-format

これは選択したテキストオブジェクトに対してclang-formatコマンドを使ってコードを整形するオペレーターです。

参照: http://rhysd.hatenablog.com/entry/2013/08/26/231858

NeoBundle 'rhysd/vim-clang-format'

map {lhs} <Plug>(operator-clang-format)


9. rhysd/vim-operator-surround

これは選択したテキストオブジェクトに対して括弧やクォートなどを追加・削除・変更するオペレーターです。

ただし、(2013/09/20の時点で)開発途上なのでまだ未実装なところがあります。

NeoBundle 'rhysd/vim-operator-surround'

map {lhs} <Plug>(operator-surround-append)
map {lhs} <Plug>(operator-surround-replace)
map {lhs} <Plug>(operator-surround-delete)


10. rhysd/vim-operator-evalruby

これは選択したテキストオブジェクトをRuby式として評価して、その結果で置き換えるオペレーターです。

NeoBundle 'rhysd/vim-operator-evalruby'

map {lhs} <Plug>(operator-evalruby)


11. rhysd/vim-operator-filled-with-blank

これは選択したテキストオブジェクトの各文字をスペースに置換するオペレーターです。

NeoBundle 'rhysd/vim-operator-filled-with-blank'

map {lhs} <Plug>(operator-filled-with-blank)


12. rhysd/vim-operator-trailingspace-killer

これは選択したテキストオブジェクトの末尾のホワイトスペースを削除するオペレーターです。

NeoBundle 'rhysd/vim-operator-trailingspace-killer'

map {lhs} <Plug>(operator-trailingspace-killer)


13. sgur/vim-operator-openbrowser

これは選択したテキストオブジェクトを引数にしてopenbrowser#smart_search()を行うオペレーターです。

NeoBundle 'sgur/vim-operator-openbrowser'

" Requires
NeoBundle 'tyru/open-browser.vim'

map {lhs} <Plug>(operator-openbrowser)


14. tek/vim-operator-ag

これは選択したテキストオブジェクトを引数にしてg:operator_ag_cmdのコマンドを行うオペレーターです。

Agコマンド目的で作られているが、普通に他のコマンドでも使えそう。

NeoBundle 'tek/vim-operator-ag'

map {lhs} <Plug>(operator-ag)
map {lhs} <Plug>(operator-agg)


15. tek/vim-operator-assign

これは選択したテキストオブジェクトを代入式へ分離させるオペレーターです。

NeoBundle 'tek/vim-operator-assign'

map {lhs} <Plug>(operator-assign)

例:

" 変換前

call func(str . 'foo')

" 変換後
let bar = str . 'foo'
call func(bar)


16. thinca/vim-operator-sequence

これは複数のオペレーターから1つの新しいオペレーターを作成する補助プラグインです。

参照: http://d.hatena.ne.jp/thinca/20110415/1302879419

NeoBundle 'thinca/vim-operator-sequence'


17. tyru/operator-camelize.vim

これは選択したテキストオブジェクトをsnake_caseやcamelCaseに変換するオペレーターです。

NeoBundle 'tyru/operator-camelize.vim'

map {lhs} <Plug>(operator-camelize)
map {lhs} <Plug>(operator-decamelize)


18. tyru/operator-html-escape.vim

これは選択したテキストオブジェクトに対してHTMLエスケープ/アンエスケープを行うこオペレーターです。

NeoBundle 'tyru/operator-html-escape.vim'

map {lhs} <Plug>(operator-html-escape)
map {lhs} <Plug>(operator-html-unescape)


19. tyru/operator-reverse.vim

これは選択したテキストオブジェクトを反転するオペレーターです。

NeoBundle 'tyru/operator-reverse.vim'

map {lhs} <Plug>(operator-reverse-text)


20. tyru/operator-star.vim

これはthinca/vim-visualstarのオペレーターです。

NeoBundle 'tyru/operator-star.vim'

" Requires
NeoBundle 'thinca/vim-visualstar'

map {lhs} <Plug>(operator-*)
map {lhs} <Plug>(operator-g*)
map {lhs} <Plug>(operator-#)
map {lhs} <Plug>(operator-g#)


21. vimtaku/vim-operator-ppd

すいません、この使い道がわからなかったです。とりあえず、見つけたので載せておきます。

NeoBundle 'vimtaku/vim-operator-ppd'

map {lhs} <Plug>(operator-ppd)


22. yomi322/vim-operator-suddendeath

これは選択したテキストオブジェクトを突然死なテキストに変換するオペレーターです。

参照: http://yomi322.hateblo.jp/entry/2013/02/04/000316

NeoBundle 'yomi322/vim-operator-suddendeath'

map {lhs} <Plug>(operator-suddendeath)


終わり

以上、「Vim の operator プラグインをまとめた」でした。

この記事を書いてみて「textobjに比べてoperatorは少ないなー」って思いました。

まぁなので、皆さん、operatorプラグインをどんどん書いてVACを書きましょう!