Hack #2: Vimを使う前に見直しておきたいポイント
Posted at 2009/04/27ツイート
Vimが持つ豊富な機能を最大限有効に活用するためには、Vimの操作方法を自分にあったかたちに設定する必要があります。文字入力と編集にかかる時間が短くなることは、あなたの仕事を早く終わらせるだけではなく、思考を表現する際の時間差がなくなることから、成果物の質の向上を促進します。また、作業にかかる負担を減らすことがあなたの労働持続力の低下を抑えるだけでなく、文字入力と編集というもっとも基本的な動作にすらインタラクティブな楽しみを見いだすことが出来、あなたの日々の生活に潤いをもたらします。
あなたが仕事でプログラムを書くとき、使う言語、プラットフォーム、ライブラリの選択の余地がない可能性はありますが、あなたがどのエディタを使い、それをどうカスタマイズするかはあなたの自由です。もしその自由が与えられていないならば、まずはあなた自身の権利を主張し、自由を獲得するというタスクをこなす必要があります。
Vimをうまく設定することで、高速でかつ長時間に渡るの文書の入力・編集が可能になります。本書の後のHackにはVimをカスタマイズする様々な方法が掲載されています。本Hack #2では、あなたがどの設定を採用するかの選択の指針となる3つの原則を示します。
最小打鍵数の原則
よく入力するコマンドほど、短い打鍵数で実行できるよう設定することが何よりも大切です。入力頻度とそれに要する打鍵数は負の相関があるべきです。例えば編集中ファイルを保存するためには:write
またはその省略形である:w
と打鍵する必要があります。打鍵数はリターンキーを含め、3です。一方:nnoremap w :<C-u>w<Return>
などと事前に設定しておくことで、打鍵数を容易に1にまで減らすことができます。また、[Hack #36: バッファを自動的に保存する]で紹介する方法で自動保存するよう設定しておくことで、0打鍵数でファイルの保存を行うことができます。このことはあなたの文書入力にかかる時間を減らすばかりでなく、同じようなコマンドばかり入力するという精神的重圧の高い作業からあなたを解放してくれます。
初めて何らかのVim pluginをインストールしたとき、その機能を使うために提供されているインタフェースがExコマンドのみでしかもコマンド名が長い場合、不便を感じることがあると思います。これは、あなたが自分でkey mappingを定義することをそのpluginの作者が期待しているのであり、毎回長いExコマンドを入力することを必ずしも要求しているわけではないことに注意すべきです。
独自のkey mappingを定義する具体的方法についてはHack #?: Key mappingを定義するを参照してください。
最大持続時間の原則
一般的なプログラマは一日の大半を文字入力と編集に費やすことになり、それによってかかる負担は時として指に壊滅的なダメージを与えることが知られています。この指の体力をここではFP (Finger Point)と定義します。たくさんのキーを打鍵することによってあなたのFPは消耗し、逆に休憩やマッサージを行うことで回復します。
どの指を酷使することで多くのFPを消耗するかは人によって大きく異なります。ある人々は左手小指が急所となっており、それ以外の人々はそうでありません。また、親指を内側にひねって叩くのを苦手とする人もいます。これはあなたの指の長さや太さにも依存します。一般に、小指が短い人は小指のFPが少ないと言われています。あなたがどの指を酷使しても大丈夫か、また酷使してはいけないかを把握しておくことは、あなたのVimの設定に非常に重要な役割を果たします。
筆者は左手小指を酷使することを非常に苦手としており、極力Ctrlキーと左Shiftキーを使わなくて済むよう設定しています。例えばUS配列キーボードでコロンを入力するためには左手でシフトキーを押したまま右手でセミコロンキーを叩く必要があります。セミコロンよりもコロンを入力する頻度が圧倒的に高いことを考慮し、セミコロンとコロンを逆に再配置することで、左シフトキーの入力回数を減らすことに成功しました。また、Vimで最も多く利用する<Esc>またはそれと同等の<C-[>のどちらのキーを叩くべきかという選択において、筆者は左手中指で打鍵する<Esc>のみを使い、<C-[>を使わないことで左手小指を保護しています。
なお、良いキーボードを使うことや日頃からの鍛錬でFPの消耗を抑えることも無視すべきでないとても重要な事柄ですが、本書ではいかにしてVim側の設定であなたのFPを高く保つかという点のみを議論します。
直感性の原則
Vimが標準で提供する機能はキーボードの各キーに直感的に配置されています。例えばInsert modeに入る(=テキスト入力を開始する)にはi、単語(= word)単位の移動はwと、直感的に理解しやすいキーに割り当てられています。
同様にあなたが新たにkey mappingを定義する際に、直感に反しないキーに配置することによって、新たに追加された多くの割当を容易に覚えることができます。
あなたにとっての直感と、Vim環境をよく知る人たちの共通の認識の、二つの種類の直感性があります。後者を充分に尊重することで、他の人と設定を共有することが容易になります。ここで注意しておきたいことは、あなたが何をもって直感的であると感じるかどうかはあなたの経験に依存しすることです。もしもあなたが自分のことをVimのエキスパートと認識していないのであれば、はじめのうちは可能な限りVim界の常識をそのまま受け入れることを経験しておくことをお薦めします。Vimのエキスパートは日常の文字入力・編集作業における様々な障害とその克服方法を既に編み出しており、それら先人の知恵を有効活用することが望まれます。
なお、この直感性の原則よりも、前の二つの原則が優先されます。同じ打鍵数でかつ同程度のFP消費の複数のキーから選択する際にのみ、この直感性を考慮することになります。
まとめ
本Hackは後のHackに先立ってどのような設定を採用するべきかの指針を与えました。その際、あなたが効率的に文字入力・編集を行うためにどのようなVimの設定を採用するべきかを考えるときに参考になる三つの原則を示しました。
ujihisaもどる
blog comments powered by Disqus