見出し画像

【vim】玄人になれるやさしいvim入門

こんな人向けの記事

・vimってなに?という人
・エディタ?eclipseとかVSCode?って人
・WebアプリリリースでLinux上でファイルを編集してる時にvimで恐怖を感じたことのある人
・なんかいいエディタ無いか迷ってる人

はじめに

自分はもっぱらvimを愛用しているのですが、初めて試して見た時、カラフルな画面だったり便利な機能がどうやったら使えるのか
調べるのにとても苦労しました。
だいたいvimのカスタムはここら辺がゴールだろう、って所までを一纏めにした記事があったら良いと思って書いてみましたので
皆さんもぜひvimmerになりましょう。

※導入手順等がメインですので、操作方法等は別リンクをのせています。

vimとは

vimとはターミナル上で動くエディタです。昔はviでしたので、viでもvimでも起動できます。
また、vimを使う人種をvimmerと呼ぶそうです。エディタ宗教戦争については興味があればぜひ。

みなさんはおそらく初めてvimを触るタイミングは、Linuxのサーバ上でファイルを編集する時ではないでしょうか。
しかも大抵vimのデフォルトの設定でvi ファイルパスとかで開き、よくわかんないけど編集して...ですよね。

しかしvimはこんなふうになるんです

VSCodeみたいでしょう?これはMacのターミナル上でvimを開いています。

とりあえずかっこいいvimを開く

設定ファイルについて

vimは、~/.vimrcにある、「.vimrc」というファイルを参照します。

bashやzsh、vimでは、ドットファイルといって
いきなり拡張子な「.⚪︎⚪︎rc」というファイルが設定ファイルになります。

そしてこれらは~すなわち/home/ユーザ名の位置、WindowsならC:¥Users¥ユーザ名¥..⚪︎⚪︎rcに置いてあると、起動時に読みに行ってくれます。

~/.bashrc~/.zshrc~/.vimrcといった具合ですね。

ですので、まずは~の直下に.vimrcという名前のファイルを作りましょう!
Windowsの方は、Gitを入れているならGit bashで、Macのterminalのような、tera termのようなことができるのでぜひやって見てください。

touch ~/.vimrc

で、こちらのファイルを丸ごとコピペしましょう。私があらかじめ作っておいた設定ファイルです。

https://github.com/serna37/vim/blob/master/.vimrc

右上のボタンを押してコピーします。

次にvimrcを、vimで開きましょう

vi ~/.vimrc

真っ黒な画面が開きましたね。これではいろいろ不便です。

モードについて

ノーマルモード

vimにはモードという概念がありまして、今の状態はノーマルモードです。

ノーマルモードは、カーソル移動やコピペ、削除など、どちらかというと閲覧がすばやくできるモードです(私的にはですが)

残念なことに、vimでのコピペは、vimの外からは(このままだと)できません。
パソコンのクリップボードと、vim内部のクリップボード的なもの(レジスタといいます)が別枠なんです。
もちろん設定で、クリップボードでコピペできるようにしますのでご安心ください。

インサートモード

今回は最初なので、まずは書き込みをしていきましょう。
書き込みを行うには、書き込みに特化したインサートモードを使います。

それでは、.vimrcファイルに書き込みをしていきます。iキーを押します


左下に-- INSERT --と出たら、インサートモードになった証です。
先ほどコピーしておいた内容をペーストします。
普通にCtrl+V (Cmd+V)でペーストします。

ペーストできたらEscキーを押します。これで-- INSERT --が消えればOK
Escでノーマルモードに戻りました。だいたい困ったらEsc連打すればノーマルモードに戻ります。
ここまでで、書き込みが完了しました。
簡単ですね。

コマンドモード

最後に保存をします。
:コロンキーを押し、左下にコロンが入力されます。

この状態をコマンドモードといって、ノーマルモードから:コロンを押すことでこの状態になります。
このままコマンドを入力し、Enterでコマンドが実行されるわけですが、ここでいうコマンドとは、vim独自のコマンドです。

先頭に!をつければ、shellのコマンドもできちゃうんです。とても強力な機能になっております。
例) :!echo 'test'

vimの保存コマンドはwです。そのため:コロンの後にwを入力して

このままEnterでも良いのですが、この後一度vimを終了してから再度vimを開きます。
どうせなら保存だけでなく、保存して閉じるまで一気にやりましょう!
閉じるのvimコマンドはqです。よって

:wqまで入力してEnterしましょう。複数コマンドを同時にできるんですね。

これで設定ファイルを保存できましたので、再度vimを開いて、設定ファイルが読み込まれた結果どうなったかをみて見ましょう。

ちなみにターミナルからviコマンドだけでも以下のように、空のエディタ画面が開きますが

せっかくなので先ほどの.vimrcファイルを開いて見ましょう

vi ~/.vimrc

または、viのみのコマンドで空のエディタ画面の状態で、:e ~/.vimrcとコマンドを実行で開きます

こうなりましたか?

変じゃないか!

なんか見た目違くない?と思いますよね。解説します。

ノーマルモードでのおかしな操作

まず折りたたみを開きましょう。
ノーマルモードのまま、zRを押します。z押すShift+R押すという意味です。
次に、一番上にカーソルを持っていきましょう。ggと押してください。


こうなっていると思います。
設定に書いてある" foldの部分に、折りたたみ設定が書いてあります。
これらによっていい感じにこのファイルが折りたたみ設定にされていました。5行目の{{{が犯人です。
あんま使うことないかもですが、このようなマークをつけることで折りたたみ設定を行えます。eclipseなどのように、段落ごとに折り畳み、なども設定しだいでできます。

ちなみにvimの設定ファイルの文法だと"から始まるとコメントです

さて、折りたたみは置いておいて、不思議なことが起きましたね。
通常カーソルをファイルの一番上に持っていくにはCtrl HomeやCmd ↑ですが、ggで移動できました。
これは、ノーマルモードでの操作を用いたのです。

vimが思考のスピードと言われる理由

基本的にvimではマウスを使いません。
では、例えばsakuraエディタやVSCodeでマウスなし、と言われた場合、みなさんならどうやって操作しますか?

カーソル移動:矢印キー、Home、End、PageUp、PageDownなどでしょうか。
横の単語移動:Ctrl左右や、Option左右
範囲選択:Shift押しながら移動、Ctrl+Aで全選択
だいたいこの程度でしょうか。

vimではこうです。
ノーマルモードで

さて、ここがみなさんvimを嫌がる理由の一つ目です。
カーソル移動に、キーボードのホームポジションであるjをはじめとし
下:J
上:K
を割り当てているんですね。
Hは左でLは右なんですが、なんとCtrl + →wキーだけでできちゃうんですね。
加えて、10回下に移動する(10行分下に行く)なら、10jと押せばよいんです。すごくないですか?
このように、様々な高速化をできる機能があるおかげで、慣れればぴょんぴょん移動できるようになります。

基本操作については先人たちがまとめてくださってますので、リンクを貼っておきます。

ここまでできれば、あとは操作に慣れるために
オペレータについて理解
テキストオブジェクトについて理解
しましょう

また、vimrc(vimscript)の記述を覚え、設定をカスタムしましょう

反復練習して手が操作を覚えれば完璧です。

見た目が違う理由

見た目を変えている要因は3つあります。


1️⃣カラースキームを変えている

vimにデフォルトで入っているカラースキームはこちらです。
または:colorscheme まで打ってtab補完で候補が見られます


ここにないカラースキームを入れていたため、見た目が違いました。githubから取ってきています。
最初のスクショはonedarkというカラースキームでして、他にも様々ありますので、いろいろ試してみると面白いです。molokaiなんかが人気です。

各リポジトリの手順に従ってインストールすると、基本的には~/.vim/colors/配下にカラースキーム.vimがあれば追加できていると思います。
vim内で、:colorscheme molokaiなどで適用できます。


2️⃣airlineというプラグインを入れている

vimの設定ファイルの文法、実はvimscriptという、れっきとしたプログラミング言語なんですが、これによって多くの機能を実現できるようになっています。

これらを集め、プラグインとしているものが多くあり、以下にとてもよくまとまっているのでご参考ください。

外観が違う理由はairlineというプラグインを入れているからなんですね。
これはステータスライン(下のとこ)やタブライン(上のとこ)をいい感じにかっこよく見せてくれるものです。

プラグインの導入方法は、~/.vim/pack/plugins/start/配下にプラグインのgithubのソースをクローンすれば良いです(フォルダがなければ作る)
vimが起動時に、vimrcと同様にこのフォルダを見に行くんですね。

ll ~/.vim/pack/plugins/start結果でこのように、入れたものがあればOK

また、こちらの記事もとても参考になりますのでどうぞ


3️⃣アイコンやフォントを入れている

こちらにあります設定を行い、アイコンやフォントを変えています。
これはvimはあんまり関係なくて、普通にパソコンのフォントとアイコンを追加しているだけです。
(airlineプラグインの設定で、アイコンにこれらを使う設定があり、オンにしています)


その他のプラグイン

さらに、
エクスプローラ

やファイル名で検索(ファジーファインダー)

強いGrepであるRipGrepコマンドを使うプラグインなどがあります

さらに、任意の場所に瞬間移動するものや

禅モードなんかもあります

なるほど、ファイルの操作について
エクスプローラ表示、ファジー検索
カーソルを爆速で移動、cwで編集したりywでヤンク(コピー)したり
もろもろ素早くできそうですね。

しかし、キーバインドの設定や、独特なキー操作に慣れる必要がある上、自分でプラグインを選ぶ必要があります。
裏を返せば好きにカスタムできるということなので、好き嫌いが分かれるエディタとなっております。


ところで、プログラム言語を書いている時ならば、定義元に飛んだり、エラーを教えて欲しかったりしますよね?

エディタとIDEの違い

エディタとは

ファイルを編集するためのツールです。

編集のために、カーソル位置を移動したり、範囲選択をしたり、置換したりと様々な機能を揃えています。
ここまでのvim操作や追加したプラグインでは、エディタとしてはとても便利に使えるようになりました。

gdで、そのワードが文書中最初に出てくるところにジャンプできたりしますが、さすがに開発する時って、ファイルをバンバン跨いだりして、関数の呼び出し元とかにジャンプしますよね?

IDEとは

eclipseなどのように、エディタ機能に加えて、言語ごとに便利な機能を加えたものです。

例えば関数の呼び出し元を検索、定義元にジャンプ、エラー箇所を教えてくれる、関数のdocをみられる、などなどですね

eclipseはIDEです。裏でJavaが動いており、Javaがエラーの判断や関数の定義元などを教えてくれています。
VSCodeは基本的にはエディタです。けどVSCodeでも定義元にジャンプしたりできますよね?
それは、LSP(Language Server Protocol)というものを使い、言語ごとに、文法とかをチェックしてくれるサーバを動かしているんです。
詳しくはこちら

LSを活用する

さて、IDEとは、エディタ+LSPというようなものなので
今のvimに、LSP関連のプラグインを追加することで、IDEとして動くようになります。

そのプラグインは様々ですが、こちら(vim-lspとvim-lsp-setting併用)や

こちらのcoc.nvim

がおすすめです。私のvimrcではcocを使うようにしています。
スニペット機能や補完機能が充実しており、設定も楽だったです。
cocについて紹介されているこちらの記事は、大変見やすくおすすめですので、ぜひどうぞ

おまけ

最後にちょっとしたおまけです。
いつでもvimを使いたいあなた向け

Chromeでvimっぽい操作をする


VSCodeでvimっぽく操作する

私のvim設定での操作方法をまとめたチートシート(最初のリポジトリと同じです)

README.mdのsetupセクションをやれば、冒頭のスクショと同等になります。
action cheat sheetセクションに、主にプラグインやvimscriptで変更した操作方法があります。

それではよきvimライフを

ALHについて知る



↓ ↓ ↓ 採用サイトはこちら ↓ ↓ ↓


↓ ↓ ↓ コーポレートサイトはこちら ↓ ↓ ↓


↓ ↓ ↓ もっとALHについて知りたい? ↓ ↓ ↓