Vimは魅力的なエディタ

この記事は久留米高専プロラボ部 Advent Calendar 2018 - Adventarの14日目として書かれています.

 

 

 

自己紹介

はじめまして,杏にんです.Google先生から飛んできた人はもとよりラボ部の人からも「お前誰や」となっていそうなのでちょっとだけ自己紹介します.

久留米高専1Sで,部活では一番左の机の出口側から3番目の机によく座っています.きらら民です.杏仁豆腐好きです.コミュ障なので先輩とほとんど関われてませんが,もっと関わりたいです.

 

まあ,自己紹介はこれくらいにして,本題に入りたいと思います.みなさんエディタおよびIDE何を使ってますか?.

部活で先輩たちを見ているとVSCodeだったり,競プロerの方々はCode::BlocksやNotepad++などがいらっしゃると思います.

 

私も夏休みまでVSCodeを使っていたのですが,Vimに出会い,素晴らしいエディタでしたのでこの記事で私の思うVimの良いところを書きたいと思います.

ただ私もVimを使い始めて数ヶ月で,プロから見たら「なんだこの記事は」と思うかもしれませんが,その辺は多めに見てください.

 

 

 

Vimの特徴

やっぱりVimの素晴らしいところは,マウスを全く使わずにプログラミングできることです.カーソルの移動にも矢印キーを使いません.どうやって移動するかというとキーボードを使って移動します.具体的にいうと,キーボードの’j’を押すとカーソルが下に行きます.上への移動は’k’です.

 

f:id:annin401:20181214232911p:plain

 

 

初めてこのことを知った人は,なぜ矢印キーを使わないのかと不思議に思うと思います.確かになれないうちは,カーソルの移動が難しいと感じます.

しかし,この移動に使う'j''k''h''l'のキーはタイピングでいうホームポジションの真下にあります.つまりVimはカーソルの移動をほとんど手を動かさず行うことができるのです.

f:id:annin401:20181214084145p:plain

出典元:ひよこでも出来るタイピング練習講座 | タイピング練習の「マイタイピング」

 

カーソルの移動に手を動かさなくて良くてとてもエコだと思いませんか?

 

 

モードについて

 また,「'h'や'j'キーで移動するならどうやってコードを記述するんだよ.」と思うと思います.これはVimのモードを切り替えることで記述できます.

Vimはまず”ノーマルモード”というのがあります.これは,'j'キーで下に移動など,キー一つ一つに別の役割が与えられているモードです.このノーマルモードで'i'を押すと”インサートモード”に入ることができます.

インサートモードはコードを記述するモード,つまり通常のキーボードの使い方をするモードです.

 
 

 

ノーマルモードは移動するだけのモードではありません.文字の削除や検索,など様々なことを行えます.

例えば「あ,この行の下にコードを1行追加したい.」と思った時に,普通のエディタならマウスを握って追加したい場所の上の行の行末に移動し,Enterキーを押さないといけません.

しかしVimならマウスを握らず移動し,追加したい行の上で'o'キーを押せばいいのです.

 

 

f:id:annin401:20181214202418g:plain



行の上に追加したいなら,シフトキーを押しながら'O'を押しましょう.

 

 

他にも「あ,変数追加しなきゃ」と思った時はシフト’G’ですぐにプログラムの最上段まで移動できますし,’u'で取り消し(いわゆるCtrl+Z),’y’でヤンク(コピー)’p’でペーストなど,よく使う動作を高速に行うことができます.

 

 

レジスタとは

実はデフォルトのVimクリップボードを使いません.ヤンク(コピー)したコードはレジスタと言われる場所に保存されます.

このレジスタとても多機能で,ヤンクした内容が保存されるレジスタとは別に,名前付きレジスタといい明示的に保存場所を指定して保存できる場所があります.

つまり複数のクリップボードを使うみたいなことができるのです.

他にも最近消したものを保存するレジスタもあります.

 

 

キーマッピング

キーボードで操作できると言ってもキーボードなので,ホームポジションから離れたキーは押しずらいですよね.

例えばインサートモードからノーマルモードに戻る時などに使う,非常に使用頻度の高いキーにescapeキーがあります.このキー,すごく打ちづらいです.

そう思った時はキーマッピングです.キーマッピングではあるキーを別のキーストロークに置き換えることができます.bashエイリアスのようなものです.

私はこちらの記事(vim中級者未満が捗った設定やプラグイン[gif付き] - Qiita)を参考にjjと押すだけでノーマルモードに戻れるようにしています.めっちゃくちゃ楽です.

 

 

.vimrc

Vimは細かい設定を.vimrcというファイルに書き込んで行います.本当の本当にまっすろ(真っ白)なVimは行数すら表示されていません.

.vimrcに"set number"と記述することで表示するようになります.このような調子でシンタックハイライトの設定やファイルエンコードの設定を簡単にすることができます.

 

この設定方法良いところは,"他の言語の知識がいらない”という点です.

VSCodeを悪く言うつもりはありませんが,以前(まだプログラミングを初めて間もない頃)使っていた時,まず英語のGUIにつまずき,プラグインを入れた後の設定がわからず,ググっても分かりやすい記事が見つからず,とても困ってました.

しかしVimは設定を.vimrcに書き込むだけで簡単にでき,CUIなので英語のGUIより断然分かりやすく,何よりググれば大体求めている情報にたどり着けます(記事が多い).この辺もVimが好きな理由の一つです.

 

 

その他

CUIなので簡単に自動化できる点も好きです.私はコンパイルと実行をコマンド一つでしています.競プロでは必須です.Linuxを触ったことがある人なら簡単に書けるぐらい簡単なコードです.後日上げようと思います.

 

 

まとめ

今思う私のVimの良いところを書いてきました.あれっ,全然競プロer向けの記事になってない…(この記事を書き始めた当初は競プロer向けに書くつもりでした.)

しかしVimは他のエディタとは一味も二味も違うエディタだとわかってもらえたんじゃないかと思います.

この記事で紹介した機能以外にもたくさんの機能が標準でついており,プラグインを入れればもっと快適になると思います.みなさんもVimを使ってみませんか?

 

明日はむーちょさんです.