2013年に書いた Vim プラグインその他まとめ
今年書いた Vim プラグインその他をリストアップしてみた.
Vim プラグイン
clever-split.vim
現在のウィンドウの縦幅や横幅,開くバッファの最大の桁数などを考慮して縦分割・横分割・新規タブの中から開き方を賢く選択肢てくれるプラグイン
conflict-marker.vim
コンフリクトマーカーをハイライト・検索してジャンプして,コンフリクトの解決をするためのプラグイン.解決法は「相手の変更を優先」「自分の変更を優先」「どちらも残す」「どちらも残さない」の4通りから.
git-messenger.vim
GVim 限定のプラグイン.マウスカーソルを乗せた行をコミットしたときのコミットメッセージを見ることが出来る.コードリーディングで「この行どうして追加したんだろう」と思った時に使える.
TokyoVim #14 に参加して git-messenger.vim を作ってみた
inazuma.vim
1つのファイルを複数ウィンドウに分割して見るプラグイン.画面が小さいノート PC で長い1つのファイルを表示したいときに使う.1つのファイルを縦分割して見ると目線がジグザグに動くので inazuma という名前になった.
migemo-search.vim
/
や ?
での検索を migemo で行うためのプラグイン.ローマ字で入力すると対応する日本語を検索出来る.ただ,migemo の起動に時間がかかる & 正規表現がとても大きくなるので,ローマ字が入力されたときのみ migemo が使われるようにした.
tmpwin.vim
一時ウィンドウをトグルで開いたり閉じたりできるプラグイン.ウィンドウの開き方や開いたウィンドウ内で開くバッファを設定できる.
一時ウィンドウを手軽に出し入れできる tmpwin.vim を作った
vim-clang-format
C, C++, Objective-C のコードを整形する clang-format という整形ツールを Vim から使えるようにする..vimrc にコードスタイルの設定ができ,オペレータマッピングが使える.
C や C++ のコードを自動で整形する clang-format を Vim で
vim-numberstar
ノーマルモードの *
で -1.23
などの小数点数も検索できるように拡張するプラグイン.マジックナンバーとかバッファ内検索するときに便利.
vim-operator-evalruby
選択範囲を Ruby のコードとして評価し,選択範囲を評価結果で置き換えるオペレータ.puts *(1..100)
とかするだけで連番とか作れるので便利.(というか,ほとんど連番系を生成するのに使っている)
vim-operator-surround
vim-surround をいじるのが辛かったので新しく作ったプラグイン.対象を特定の括弧で囲んだり,対象の一番外側の括弧を外したり,括弧を付け替えたり出来る.オペレータマッピングなので,どのテキストオブジェクトと組み合わせるかで色々な使い方ができる.特に vim-textobj-multiblock や vim-textobj-anyblock と組み合わせると便利.最初は vim-surround のクローンみたいな感じにしようと思っていたけれど,ぼちぼち他の機能も追加していく予定.
vim-operator-trailingspace-killer
対象範囲の行末スペースを削除するオペレータプラグイン.たいてい vim-textobj-entire と合わせて使う.
vim-optparse
Vim のオプションパーサライブラリ.今は vital.vim のほうに Vital.OptionParser として入っているけれど,一応こちらでスタンドアローンに使うことも出来る.
コマンドオプションを解析するライブラリ Vital.OptionParser を書いた
vim-textobj-anyblock
複数のブロックにマッチするテキストオブジェクト.vim-textobj-multiblock と機能的には似たような感じ.vim-operator-surround との連携とかを入れていく予定.
vim-textobj-continuous-line
Vim script の行継続を考慮した1行分をテキストオブジェクトにするプラグイン.
vim-textobj-denwabangou
任意の日本の電話番号にマッチするプラグイン.-
があっても無くても良いようにした.
vim-textobj-lastinserted
最後に挿入モードに入って入力したテキストをテキストオブジェクトにするプラグイン.
vim-vspec-matchers
vim-vspec の自作 matcher 集.今は関数で実装されているのでエラーメッセージがダメで,Funcref
で実装してメッセージをまともにしたい.
vim-window-adjuster
特定のウィンドウの幅をバッファに合わせるプラグイン.特に help は横80文字以内に収まっているものが多いので,ウィンドウ分割時のウィンドウ幅も80文字に抑えてほしくて作った.行番号とか sign とかを考えると地味に面倒くさかった.
wallaby.vim
wombat256.vim を自分好みに改造したカラースキーム.ワラビーはウォンバットの仲間っぽい.
wandbox-vim
Vim から Wandbox を実行するためのプラグイン.非同期で実行できるので,Wandbox にリクエストを投げてレスポンスが返ってくるまでの間も待たされることがない.
その他
zsh-bundle-exec
自動で必要なときに bundle exec
を付けてくれる zsh プラグイン.
bundle exec を打たなくて良くなる zsh プラグイン書いた
FrozenString
コンパイル時文字列.constexpr
を使ったバージョンと,テンプレートを使った型レベルのバージョンがある.
array_view
生配列や std::array
,std::vector
の const 左辺値参照を統一的に扱うための C++ ライブラリ.
outputtable
std::vector
や std::map
,boost::optional
などのコンテナを operator<<
で出力できるようにするためのデバッグ用 C++ ライブラリ.
tmux-zoom-window
tmux で特定のウィンドウを最大化したり元に戻したりするためのシェルスクリプト.tmux 1.8 以降は tmux 本体にそういう機能があるけれど,1.7 以前でも同じ機能をエミュレートする.
vttpp-zipper
variadic templates で表現した型レベルのリストを関数型のデータ構造である Zipper で操作できるようにしたもの.
まとめ
今年一年ありがとうございました.来年もよろしくお願いします.