この記事は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を書きましょう!