読者です 読者をやめる 読者になる 読者になる

2013年に書いた Vim プラグインその他まとめ

Vim C++ zsh

今年書いた Vim プラグインその他をリストアップしてみた.

Vim プラグイン

clever-split.vim

現在のウィンドウの縦幅や横幅,開くバッファの最大の桁数などを考慮して縦分割・横分割・新規タブの中から開き方を賢く選択肢てくれるプラグイン

conflict-marker.vim

コンフリクトマーカーをハイライト・検索してジャンプして,コンフリクトの解決をするためのプラグイン.解決法は「相手の変更を優先」「自分の変更を優先」「どちらも残す」「どちらも残さない」の4通りから.

Momonga.vim #2 に行ってきた

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 にリクエストを投げてレスポンスが返ってくるまでの間も待たされることがない.

wandbox-vimで最高のC++14環境を体験

その他

zsh-bundle-exec

自動で必要なときに bundle exec を付けてくれる zsh プラグイン.

bundle exec を打たなくて良くなる zsh プラグイン書いた

FrozenString

コンパイル時文字列.constexpr を使ったバージョンと,テンプレートを使った型レベルのバージョンがある.

array_view

生配列や std::arraystd::vector の const 左辺値参照を統一的に扱うための C++ ライブラリ.

outputtable

std::vectorstd::mapboost::optional などのコンテナを operator<< で出力できるようにするためのデバッグC++ ライブラリ.

tmux-zoom-window

tmux で特定のウィンドウを最大化したり元に戻したりするためのシェルスクリプト.tmux 1.8 以降は tmux 本体にそういう機能があるけれど,1.7 以前でも同じ機能をエミュレートする.

tmux で一時的に pane を最大化する

vttpp-zipper

variadic templates で表現した型レベルのリストを関数型のデータ構造である Zipper で操作できるようにしたもの.

まとめ

今年一年ありがとうございました.来年もよろしくお願いします.