私の Vim 活記録

この記事は Vim Advent Calendar 2013@25日目 の記事です。

私が Vim を本格的に触り始めたのは、Emacs を使いすぎて、小指が痛くなり、
泣く泣く Emacs 使いとしての選手生命を断念した、2010 年の秋頃でした。


より小指にやさしい、Vim に乗り越えた私は、Emacs で鍛えられた、「エディタの
設定を妥協せず、どこまでもカスタマイズする 」という精神の元、Vim を本格的に
使い始めました。
以前なら諦めていたような、理解不能な動作に出会っても、Emacs で鍛えられた不屈の
精神を持って立ち向かい、Google 検索をし、quickrun で試し、というように格闘しながら
Vim 力を少しずつ向上させていきました。
そして、 vim-textmanip, vim-quickhl, vim-chef, といったプラグインを作成したりしました。
vim-chef を作った頃は、chef を使い始めようと、学習し始めた途端、まだ chef を使う前に、
Vim プラグインを作り始めてしまうという Vim 中毒の典型的な症状を示すほどに、Vim 依存が
進行していました。


しかし、そんな蜜月に突然おわりが訪れました。
2012年の1月のことです。私は転職をし、仕事で使うパソコンが、Linux からWindows になりました。
仕事で、プログラムを書く機会はなくなり、Vim を使うのをやめました。
それまでの1年間、あんなに毎日触っていた .vimrc を触らないまま 1年半以上が経過した今年の9月(2013年9月)に、
私はまた Vim を触り始めました。以前とは違い、純粋に趣味的な意欲で。


それから3ヶ月が過ぎました。
作成したプラグインや、追加した機能など一つ一つ紹介した気持ちと、機能実装を終え最低限の help
ドキュメントを書いたものに、また説明を加える面倒臭さの両方があります。

しかし、面倒ながらも記録には残しておきたいと思い、このエントリを書いています。
また、Vim を触らなくなってしまう日が来るかもしれませんが、少なくともこの3ヶ月間、
かなり熱心に Vim と過ごしました。

その3ヶ月間のアウトプットとして次のような成果が残りました。

                                                                                                    • -

2011年10月ー2013年12月中旬までの僕の Vim 活の記録

                                                                                                    • -

vim-unite-experiment
バッファ名を使用した、source 毎のヒストリー保持を実験的に実装


vim-quickhl
全面書き直し。主にリファクタリング
tag ハイライトの追加


vim-macvim-transparency
新規作成。小型プラグイン
macvim のGUIのウインドウの透明化を行いやすくする
透明度を変更する仮想キーマップを提供する。


vim-textmanip
全面書き直し。今や自分の作った中では大型プラグインの部類。
大きなファイル編集時の行移動のパフォーマンス向上
矩形選択範囲の複製、移動機能を追加
モードの概念の導入(従来モードはinsertモード)し、新しく replace (上書き) モードの追加。
はっきり言って開発つらかった。気合と根性としぶとさで仕上げた。


vim-mapswap
新規作成。
キーマップの一部を一時的に変更して、元に戻すプラグイン
submode と似ているが目的が異なる。
submode は設定したキー以外を入力するとサブモードから抜けてしまうが、
mapswap は特定のキーのみマッピングを差し替え、他のキーは元のままのマッピングで使える。
スワップしたキーマップはユーザーが明示的に戻す。
用途としては、読み込み専用のファイルでのみ d や u でページスクロールしたり、
diff モードの時、変更点間を移動するキーマップを有効にするといったもの


vim-ruby-xmpfilter
全面書き直し。小型プラグイン
seeing_is_believing をサポート。


vim-easymotion
カーソル移動系プラグイン(smalls) 作成の為の事前学習として本家のものを
fork して自分が理解しやすいように大幅に書き換え。
動作理解の為なので、一部の機能が動かなくなっても気にせずどんどん書き換えた。
これで easymotion のやっていることを大体理解した。


vim-smalls
新規作成。割と大型の部類。現在も開発中。
カーソル移動補助プラグイン
easymotion style のジャンプと独自のexcursion モード


vim-ezbar
新規作成。小型プラグイン。機能追加は多分ない。あとはメンテのみ。
lightline を使ってみて、設定に苦しみ(というかやりたい事ができず)
お試しで作り始めた。
自由度の高さと、色変更のやり易さが特徴


yankround.vim への pull request.
[twitter:@LeafCage] さんの yanround.vim に貼り付け範囲をハイライトする、pull request.
Emacs の頃にやっていた yank-pop のハイライトを思い出して。
smalls で矩形範囲ハイライトに慣れていたので、それを流用。
細かいところは LeafCage が直してくれた。


vim-phrase
全面書き直し。個人的には結構便利に使っているプラグイン
試しに vital も使ってみた
phrase file のフォーマット変更
もう少しちゃんとして、これは流行らせる努力をしたい。


vim-choosewin
新規作成。小型プラグイン
tmux の `display-pane` 機能を模倣するアイデアプラグイン
単にウィンドウ番号を読み取って `:{N}wincmd w` で移動するだけ。
window 番号の表示には `'statusline'` を使用する。
eazybar の機能を利用すればいい感じにウィンドウ番号を表示可能。

                                                                                                    • -

2011 年頃、Vim に熱中している僕を「このVim 野郎 」と罵った妻は、今では夜遅く寝室に入ってくる僕に
寝ぼけ眼で「 Vim ちゃんやってたの? 」と優しく声をかけてくれるまでに、僕と Vim との関係を理解
してくれています。
ますます Vim との触れ合いが捗る今日この頃です。

それではまた。