LifeホームサイトについてプログラミングWeb/ブログゲーム開発環境サービス/製品その他ホーム開発環境Vimエディタを選ぼう:Vimの場合スポンサーリンクVim2017.08.06開発環境で大事な物の一つがTextEditor。昔からあるVimやEmacs、最近ではSublimeText、Atom、VisualStudioCodeといったモダンなエディタも台頭してきています。そんな中で、僕が選択するエディタはVim。Vimなのか、今回はVimの魅力を僕の観点でお伝えしていきます。まとめスポンサーリンク前提知識Vimの魅力をお伝えするにしても、1からVimの解説をしたいわけではないので、最低限知っておきたい知識をあらかじめ書いておきます。Vimにはモードという概念があります。ノーマルモードでは、主にテキスト編集向けの操作ができます。ノーマルモードではテキスト入力はできません。テキスト入力をするには、インサートモードというテキスト入力用のモードに切り替える必要があります。以上、前提知識でした。Vimの魅力Vimがなぜエディタとして魅力的か、要素を挙げていきます。キーバインドノーマルモードで行うテキスト編集のキーバインドが良いです。キーバインドの中でも特段重要なのが、最も使う操作の一つ、カーソル移動。これがVimでは[h,j,k,l]キーにアサインされています。ホームポジションに手を置いたまま、右手だけで快適なカーソル移動を可能とします。こんなに頻繁に使う操作を、ホームポジションから手を動かす必要があった状態から開放してくれます。p,n,f,b]でカーソル移動が可能ですが、押しにくいです。カーソル移動に両手を使うなんてナンセンスです。その他にも、モードという概念があるゆえ、ノーマルモードで、単一キーで様々なテキスト編集操作が、ホームポジションのまま(CtrlやShiftキーを必要とせず)実行できる、多くのキーバインドがあるのがVimの魅力の1つです。先に挙げたキーバインドには、大きく分けて、「編集操作の選択」と、「対象範囲の選択」があります。Vimではこれらを組み合わせて、一つのテキスト編集操作を実行します。編集操作の選択がない場合は、対象範囲の選択はその範囲のカーソル移動になります。わかりやすい例をあげてみましょう。ないなら、1文字移動、1単語移動。いう具合に、「編集操作の選択」と「対象範囲の選択」をかけ合わせた数だけ、実行できるテキスト編集操作があるのです。「編集操作」を一つ覚えれば、それまでおぼえた、対象範囲数だけできるコマンドが増えたことになります。できることが、おぼえたことの掛け算で増えていく。いうテキストそのものの単位区切り、ではなく、そのテキストが構成されている内容から対象範囲を決定する概念です。簡単な例を見てみます。}」つまり、「ブレース括弧を含むブレース括弧範囲」を選択対象としたり、といった、テキスト(コード)の構成に基づいた対象範囲選択が可能です。この構成に基づいた対象をテキストオブジェクトと呼びます。これは、プログラムコード等を書いている際には、かなり強力な概念です。引数宣言をまるっと入れ替える、関数の中身をまるっと書き換える、HTMLタグの中身だけを書き換える・・など、プログラムで扱いたい単位で処理をできるのですから。Vimに慣れてきたらまず使ってみてほしい機能の1つです。対象範囲の選択」によって一つの編集操作=コマンド、が実行されます。これは、実際にテキストがどう編集されたかではなく、どのようなテキスト編集を意図したかがコマンドでラップされます。これにより、Vimでは1度行ったコマンドの再利用性があるのです。dwというコマンドを実行した場合、「削除」を「1単語」行います。この1単語は3文字かもしれないし、5文字かもしれないし、10文字かもしれません。それは関係ありません。どの単語でもdwで単語を削除できます。dwをというコマンドは、何度でもどこでも同じように使えるのです。この考えを、さらに拡張したのがマクロです。コマンドの羅列を記録し、そのコマンドの羅列を再度実行します。Vimでは、かなり手軽にマクロを記録し、即時実行することが可能です。dwdwdwというように3単語削除したコマンドを記録してしまえば、3単語削除コマンドがあっというまにできあがったわけです。関数宣言の末尾に移動してconstを付与する、とかよくありそうな編集操作をマクロとして記録して、他の箇所に速やかに同じ編集を適用することができます。コード編集は似たようなことの行っていることが多いものです。マクロを使えば、同じことを繰り返さずに、スマートなコード編集が可能となるでしょう。拡張性エディタを選ぶ際の基本として、拡張性があることは、一般的に重要であるとされます。使いやすいエディタを選ぶということは、自分でさらに使いやすくすることができることも重要であるということです。この点でVimは、Vimscriptを用いたプラグインによる拡張が可能です。歴史も長く既にたくさんのプラグインが作られており、必要な機能の多くが既存のプラグインから見つけることが可能だと思います。エディタの設定(Preference)もVimscriptによって行います。vimrcというファイルにVimscriptを直接記述して設定します。下手にGUIやjsonなどの設定ファイル形式になっていないので、自由度が高いです。単純な、タブ幅やフォントなどの設定から、テキストを開いたときに追加実行するコマンドの設定など、設定ファイルだけでも多くのことができます。拡張性と設定の自由度、両方を兼ね備えたエディタであるといえます。VimのデメリットとはここまでVimの良い点をお伝えしてきました。これだけ良い点があれば、みんな使えばいいような気がしてきます。それにもかかわらず、誰しもがVimを使っているわけではありません。それにももちろん理由があります。モードという概念が、一般的なテキストエディタとあまりに異なる操作を強いるためです。キーボードを打てば文字が入力される、という常識が覆され、恐怖とともにそっとVimを閉じて2度と近づかなくなります。次に、コマンドが豊富だが、覚えなければ使えない点。これも「一般的なテキストエディタと違うから」というのが理由の本質ではありますが、触り始めでおぼえることが多い印象になってしまうのは否めません。次に、自由度の高いカスタマイズ性と引き換えに、設定のしやすいカスタマイズUIではない点。設定の変更やプラグインの導入にも、かっこいいGUIが用意されているわけではなく、自分で設定ファイルをゴリゴリ書くの基本です。モダンなエディタになれてしまうとこれがつらいと感じてしまう人もいるでしょう。僕が思いつくのはこんなものです。いってしまえば、初期学習コストが高いことと、便利なGUIなどはないことです。その分、初期学習コストを乗り越えれば、それだけ快適かつ効率的なテキスト編集が可能となりますし、便利なGUIない代わりに多大な自由度のカスタマイズ性があるのです。考えると、当然のコストがあるだけ。Vimにデメリットなどないのです。(極論すぎる笑)Vimのさらなる魅力を知る今回は、約4年程Vimを使ってきた僕からみた、Vimの魅力的な特徴をお伝えしてきました。具体的なキー操作などは基本的にお伝えしておりません。そちらは、vimのヘルプ等をご参照ください。Vimには今回述べたこと以外にもまだまだたくさんの機能、魅力がつまっています。それがわかりやすく書かれているのが以下の本です。Vimの機能を以下に使いこなすか、網羅的かつ効果的に記述されていますので、一度見てみると参考になると思います。自分の使いやすいエディタを、自分で納得して使いましょうということをいいたかっただけです。コメントをキャンセルメールアドレスが公開されることはありません。(1)お問い合わせタイトルとURLをコピーしました。