エンジニアHubPowered by エン転職

若手Webエンジニアのための情報メディア

上達したいVim初心者のための設定・プラグインの見つけ方、学び方〈エディタ実践入門〉

Vimの深淵はとても深く、学ぶことは簡単ではありません。本記事では、初心者がVimをどのように学べばよいか? を解説しています。Shougoさんの寄稿です。

post thumbnail

こんにちは。Shougo@ShougoMatsuです。今回は、Vim初心者のための記事を執筆することになりました。よろしくお願いします。

私のことを知らない人のために簡単に自己紹介しておきます。私はこれまで10年以上もの間Vimに関わっており、deoplete、dein、denite、defx、neosnippetといった各種プラグインを作成したり、ときにはVim本体にパッチを書くなどといった活動を行っています。

今回、初心者向けの記事を執筆することに決めたのは、勉強会などで「Vimをどのように学べばよいか?」について質問されることが多く、皆が同じ問題で困っているのだと気付いたからです。Vimの初心者向け講座は山のようにありますが、私はこれまでにない切り口で初心者が最短で実力を付けるための道筋を解説していきます。

ただし、今回の記事では具体的なVimの設定方法やVim scriptについての解説を行うことを目的にしていません。それらをまともに解説すると、一冊の本になってしまうほどだからです。

この記事における「初心者」ですが、今回は「Vimの:helpを読めない、読んだことがない人」と定義します。Vimの:helpを自由自在に読めるようになれば一人前なので、それを目標としていきましょう。

vimrcを極めることがVimを極める近道

vimrcとは、Vimの設定ファイルです。vimrcを設定することで、Vimの動作を好きなように変更することができます。

素のままのVimでもある程度テキストの編集作業は行えますが、Vimは互換性を非常に重視しているので、デフォルトで使える機能は少ないです。vimrcの設定を有効化することでVimの真価を発揮できます。もちろんプラグインをインストールすることでもVimを便利にできますが、Vimを極めるにはまずvimrcの設定を極めることこそが近道と言えるでしょう。そもそも、Vimのプラグインはvimrcに書いていた設定を単体で動作するようにパッケージングしたものなのです。

vimrcを扱う上で覚えるべきなのがVim scriptです。「Vimでしか役に立たないから」とVim scriptの勉強を嫌がる人がいます。しかし、vimrcはVim scriptを用いて設定するため、プラグインを書くにもプラグインを使うにもVim scriptの知識は必要なのです。Vim scriptを避けてVimを使っていると、きっとどこかでつまずきます。

世の中には「設定することは邪道、素のVimこそが至高」と考える人がいます。それも一つの考え方だと思いますが、何事も極端はよくありません。「必要な機能を取捨選択する、必要な設定のみを有効化する」ことこそが大事です。そのためにはVimの基礎を知り、自分に必要な設定とは何か考える必要があります。

最小限のvimrc

初心者がVim力を上げるには、最小限のvimrcから始めてみるといいでしょう。まっさらなvimrcにあなたの必要な設定やプラグインを加えていくのです。

このとき、「自分が理解した設定のみvimrcに加えていく」という原則を守るようにしてください。これを守ることにより、あなたのVim力は次第に向上し、「なぜこの設定をしているのか分からない」ということもなくなるはずです。

私の考える最小構成は以下のようなものです。シンタックスハイライトと、ファイルタイププラグインのみ有効化しています。

syntax enable

filetype plugin indent on

最小限の設定をもとにした:helpの調べ方〈実践編〉

チュートリアルとして、最小限のvimrcに記述したsyntax enablefiletype plugin indent onとは何なのか、実際に:helpで調べてみましょう。

まずはsyntax enableについてです。以下のように

:help :syntax-enable

と実行してドキュメントを見ると、この設定の意味が記述されています。

さすがに初心者が該当するドキュメントを直接見つけるのは難しいでしょう。その場合はまず:help syntaxと検索してhelpバッファを開きます。ここに、シンタックスハイライト全体に関する記述がされています。

helpバッファの中でsyntax enableを検索すれば、該当する項目にたどりつけるでしょう。私自身、該当する記述が見つからない場合は、ドキュメント内を検索して探すことがとても多いです。

ドキュメントを読むと、このコマンドはシンタックスハイライトを有効にするためのコマンドだと分かります。

ちなみに他の人のvimrcによってはsyntax enableではなく、syntax onと記述されているかもしれません。syntax enablesyntax onの違いについても:helpには記述されています。違いを調べるのは読者への宿題としておきましょう。

次に、filetype plugin indent onについて調べてみましょう。まず:help :filetypeで調べます。filetype plugin indent onとは:filetypeコマンドの引数にplugin indent onを指定しているということなので、まずは:help :filetypeで調べるのです。

:helpバッファの中でfiletype plugin indent onを検索すると、以下の記述が見つかるはずです。

Overview:                                       *:filetype-overview*

command                         detection       plugin          indent ~
:filetype on                    on              unchanged       unchanged
:filetype off                   off             unchanged       unchanged
:filetype plugin on             on              on              unchanged
:filetype plugin off            unchanged       off             unchanged
:filetype indent on             on              unchanged       on
:filetype indent off            unchanged       unchanged       off
:filetype plugin indent on      on              on              on
:filetype plugin indent off     unchanged       off             off

つまり、filetype plugin indent onとは、detection(ファイルタイプ検出)、plugin(ファイルタイププラグイン)、indent(インデント)を全て有効化する設定なのです。detection、plugin、indentが具体的に何をするのか調べることは、読者への宿題にしておきます。

このように:helpを調べていくだけで、芋づる式にどんどんVimの知識がついていくことが分かるでしょうか。:helpを活用する利点はここにあります。

ここでは簡単に:helpの引き方を説明しました。:helpの読み方や調べ方については、少し古いですが以下の記事が参考になるでしょう。

vim-jp » Hack #45: help を引く

vim-jp » Hack #199: :helpに慣れ親しむ

これらの記事はVim界で有名なthinca氏とtyru氏というVim Hackerが執筆しているので、信頼ができます。

信頼できる情報を収集すること

ところで、皆さんはVimの情報を得るとき、どのように検索しているでしょうか? 検索で適当に出てきた記事の設定をそのまま利用してはいないでしょうか?

本当にVimを上達したいのなら、まず誰が記事を書いたのか確認しましょう。無名の誰かの記事よりも、Vim界で活躍している、プラグインを制作している人の記事の方が、情報が間違っている可能性が低く信用ができます。

間違った情報を鵜呑みにすると、あなたのテキストエディタ生活に悪影響を及ぼすので注意しましょう。

私が:helpを読むようにアドバイスしているのも、記述されている内容の信頼性が高いからです。:helpのドキュメントを書いているのは基本的にVimの開発者です。開発者はVimの表も裏も知りつくしています。どんなWeb上の記事よりも:helpの記述の方が信用できるのです。基本的には:helpをリファレンスとし、Web上の記述は参考程度にしましょう。

Webエンジニア向けに推奨するプラグイン

人によって使っているプログラミング言語が異なるので、最適なプラグインは一人一人違います。今回の記事ではあまり具体的なプラグインは紹介しませんが、以下のプラグインのみWebエンジニアに推奨します。

vim-polyglotは各種ファイルタイプ用のプラグインをまとめたものです。私は基本的にディストリビューションプラグインは好きではないのですが、vim-polyglotはまとめられているのがファイルタイプごとのプラグインであるため、副作用が少ないという長所があります。既存の設定やプラグインと衝突する場合は、特定のファイルタイプのみ無効にすることもできます。

そもそもVimはさまざまなファイルタイプ用のプラグインを同梱しているので、プラグインをインストールしなくてもファイルの編集が可能です。しかし、新しいプログラミング言語のサポートは弱いことがあります。そんなとき各プログラミング言語のプラグインを調べる代わりに、vim-polyglotをインストールするだけでほとんどのものを代替できるのです。

プラグインを原始的にインストールする〈実践編〉

それでは、実際にvim-polyglotをインストールしてみましょう。今回はプラグインマネージャを使用せずに~/src以下にダウンロードしてみます。

$ cd ~/src
$ git clone https://github.com/sheerun/vim-polyglot

ダウンロードしたプラグインをロードするために、以下のように記述を追加します。

set runtimepath+=~/src/vim-polyglot

syntax enable

filetype plugin indent on

あとは、このvimrcを用いてファイルを開くと自動的に各種ファイルタイププラグインが有効になっています。

ここで使用されている要素である:set'runtimepath':set+=について調べるのは、読者への宿題とします。

ここではプラグインマネージャを使用しないプラグインのインストール方法とロード方法を紹介しました。最近はプラグインマネージャでプラグインを管理するのが一般的となっていますが、プラグインマネージャを使わないプラグインのインストール方法を知っておくと、プラグインや設定の問題を調査するのに便利です。

プラグインの選び方

私はこれまでに多数のプラグインを作成してきましたが、これらは自分のために作成したものであり癖が強いので、本記事の読者に使用を推奨することはしません。

ただし、プラグインを選ぶときの指標をいくつか示しておきます。

まずプラグインのユーザー数がどれくらいいるかは大事です。ユーザーが多いほど人気のある優れたプラグインであると考えられます。一つの指標としてはGitHubのスター数が分かりやすいでしょう。

情報収集方法のセクションで「本当にVimを上達したいのなら、まず記事を誰が書いたのか確認しましょう」としましたが、同じことはプラグインの選び方でも言えます。プラグインを誰が書いたのか、メンテナンスしているのかをチェックしましょう。Vimのことを分かっている人が書いたプラグインの方が基本的に優秀です。

プラグインがきちんとメンテナンスされているかも重要な要素です。プラグインのメンテナンス頻度をコミットログや更新履歴でチェックしましょう。プラグインがメンテナンスされていないと、バグが放置されたり、Vimの新機能に対応しなかったりします。広く使われているプラグインでも、作者が飽きたりユーザーへの対応に疲れてメンテナンスされていないものは意外と多いので盲点だったりします。

プラグインをインストールすることによる副作用にも注意しましょう。プラグインを入れたら重くなったという話を聞いたことはないでしょうか。プラグインとはVimの設定をまとめて単体で動くようにしたものなので、当然副作用があります。そしてプラグインのなかには副作用が大きいものと小さいものがあります。副作用がなるべく少ないプラグインを選ぶべきです。プラグインの作りにもよりますが、基本的に何でもできるオールインワンなプラグインは副作用が大きいと考えましょう。

一つ補足しておくと、私はプラグインを作るときに副作用も考えて、なるべく副作用が少なくなるように設計しています。それでも副作用自体は避けられません。

副作用が一番大きいのが、プラグインを複数まとめたディストリビューション的プラグインです。インストールするだけで使えて便利だと考える方もいるかもしれませんが、私は使用を推奨しません。

プラグインの一部機能はVimの設定で代替できることがあります。プラグインを選ぶときにもVimの知識は必要不可欠であることは心に留めておいてください。

人から「なぜこのプラグインを使っているのか?」と尋ねられたときに明確な理由を答えられるのならば、あなたにとって本当に必要なプラグインだと言えるでしょう。

Vimを勉強するための参考書籍

Vimを勉強するためには、書籍を読むのも効果的です。書籍はある程度Vimに理解のある人が執筆や内容のチェックを行っており、:helpやWebの記事よりも情報がまとまっているので、初心者に推奨します。

各種書籍を紹介しますので、参考にしてください。

実践Vim

Vimの基本を押さえるのに最適な書籍です。これを読みつつ:helpを勉強するのを推奨します。ただし、プラグインについては触れられていません。

入門 vi 第6版

Vimに関する書籍が少なかった昔は貴重でしたが、今となっては記述が古いです。Vimの基本を押さえたい場合には「実践Vim」があるので、あまり役には立たない印象です。

Vimテクニックバイブル

Vimプラグインを中心に書かれた書籍です。今となっては紹介しているプラグインが古くなっているのが難点です。

Vim scriptテクニックバイブル

Vim 7.4を対象にしており、刊行から少し時がたって古くなった記述もありますが、Vim scriptを中心に解説している唯一の書籍です。vimrcに書かれている記述やVim scriptの基本を知る上でかなりオススメの本です。

Modern Vim

「実践Vim」の作者が執筆した書籍です。Vim 8とneovimの新機能を中心に解説されています。プラグインについても一部書かれています。洋書ですがページ数は少ないので読みやすいです。「Vim scriptテクニックバイブル」に不足している情報を補完するのに使うのがオススメです。

まとめ ─ 苦労して見つけた知識こそが本物

今回の記事は、他の初心者向けの記事とは違った切り口で役立つものにすべく執筆してみましたが、いかがだったでしょうか。

Vimを学ぶのは簡単ではありません。Vimの深淵はとても深いので、熟練するには相当な時間が必要です。私は10年以上Vimを使い、ほぼ毎日Vimのことを考えていますが、それでもVimマスターにはほど遠いのが現状です。Vim界隈で有名な他の方々も、これまでかなりの時間をVimに捧げてきたのだろうと推測します。

世の中には「テキストエディタを学ぶのは時間の無駄」と主張する人がいます。本当にそうなのでしょうか。また、巷では「これを身に付けるだけで圧倒的に作業効率が上がるオススメ設定、プラグイン」を紹介している記事もあるかもしれません。そのような記事に人気があるのも、多くの方が「テキストエディタを学ぶのにできるだけ時間をかけたくない」と思っている証拠なのだろうと想像します。

しかし、私に言わせてもらうと「そのような都合のよいものはない」です。あなたの設定は自分で苦労して見つけなくてはいけないのです。皆さんはそれぞれVimを使用している環境が異なっているはずです。誰にとっても最適な設定は存在しません。誰もがインストールするべきプラグインも存在しません。魅惑的な記事には惑わされないようにしましょう。あなたが苦労して見つけた設定や知識こそが本物なのです。

もちろんテキストエディタの技術はプログラミング言語やフレームワークとは違い、あなたの仕事に直接役立てるのは難しいでしょう。しかし、逆に言うと流行り廃りのあるプログラミング言語やフレームワークとは異なり、テキストエディタの技術はずっと使うことができる知識とも言えます。

私は10年以上テキストエディタに時間を捧げましたが、それを後悔はしていません。テキストエディタを学ぶことは無駄にはならない、テキストエディタで学んだことを無駄にしない生き方を選択するべきではないでしょうか。

私は今回の記事で、自分に合ったVimの設定を“自力で発見するための道標”を示しました。ぜひとも、Vimを深く理解して、作業効率を向上させられる設定を見つけてみてください。

あなたがテキストエディタで学んだ知識を、今後の人生で存分に生かしていけるよう応援しています。

Shougo ShougoMatsu Shougo

名前
これまで10年以上をテキストエディタのために捧げてきたVimmer。プラグイン開発を中心に活動するが、必要ならばテキストエディタ本体にもパッチを書く。Vim以外の他のテキストエディタの研究にも余年がなく、最近のテキストエディタのトレンドとは何か常に考えている。
あるVimmerのブログ

関連記事

企画:中薗昴