0. 序章

Vim.それはBill Joy氏が開発したViに始まり,Bram Moolenaar氏が機能を追加したテキストエディタである.現在は更に機能を追加したNeovim や,IDEとしてカスタマイズされたSpaceVimLunarVim等も存在している.

Vimを使い慣れることでテキスト編集が高速になり,ソフトウェア・レポート等の作成も容易になることは言うまでもない.Vimを使うことで世界は一変する.いつでもVimの事を考え,どうすればより効率的な操作ができるかを調べるようになる.つまりVim-orientedな生活になるのだ.また「自分はVimを使って人よりも効率的に編集できる」という考えから他のテキストエディタ(特にVSCode)を使っている人を見下すようになる.

本ページでは,そんな素晴らしいVimの使い方を紹介する.

1. インストール

Vimを使い始めるには,Vimをインストールしなければならない.本章ではVimのインストール方法について説明する.

1.1 Ubuntu 22.04

1.2 FreeBSD 14.0

2. Vimのモード

Vimの操作方法に入る前にVimのモードについて説明する.Vimのヘルプによると7つのモードが存在している.そのうち4つのモードを紹介する.Vimの状態遷移を以下の図に示す.

Vimの状態遷移図

2.1 ノーマルモード

Vimを起動すれば,基本的にこのモードから始まる.ノーマルモードでは,カーソルの移動・テキストのコピーや削除・他のモードへの切り替え等が行える.

Vimを起動した際の画面

2.2 挿入モード

挿入モードは,文字を入力する際に使用するモードである.基本的に,このモード以外では文字の挿入は行わない.例外として,コマンドラインモードでの実行結果を入力する際や,ノーマルモードでテキストをコピペする事がある.挿入モードのときは,Vimの下部に"-- INSERT --"が表示される.

Vimの挿入モード

2.3 コマンドラインモード

コマンドラインモードは,Vimのコマンドを実行するモードである.このモードでは,テキストの検索・置換・シェルコマンドの実行等が行える.コマンドラインモードでは,Vimの下部に":"が表示される.

Vimのコマンドラインモード

2.4 ビジュアルモード

ビジュアルモードは,テキストを選択するモードである.選択したテキストに対して削除や置換を行うことができる.ビジュアルモードの際は,Vimの下部に"-- VISUAL --"が表示される.

Vimのビジュアルモード

3. Vimの操作方法

本章では,Vimの操作について説明する.Vimの操作はモードごとに異なるので,前章と同じようにモードに分けて説明する.

3.1 ノーマルモード

ノーマルモードでの操作は以下の通りである.シンプルな移動では,矢印キーの代わりにhjklの4キーを使用する.hjklキーになれると,矢印キーに指を移動させる必要がなくなるので作業効率がアップする. Vim is god.

3.1.1 モーションとオペレータ

モーションとオペレータはVimを操作するうえで重要な概念である.モーションはカーソルを移動させるコマンドである.オペレータは文字のコピペや削除などの編集を行うコマンドである.オペレータのあとにモーションを入力することで,モーション分の移動に対してオペレータを実行することが可能である.以下に筆者がよく使用するオペレータについて説明する.

3.1.2 テキストオブジェクト

Vimにはテキストオブジェクトという,プログラミングを行う上で非常に重要な概念がある.オペレータと組み合わせることで,指定した範囲を編集することができる.テキストオブジェクトは,aまたはiという接頭辞から始まる.以下にテキストオブジェクトを示す. テキストオブジェクトの例だけではわかりにくいので,オペレータを組み合わせた例を以下に示す.今回はオペレータにcを使用する.cは,選択した箇所を削除して,挿入モードに入るオペレータである.

3.2 挿入モード

このモードは,テキストを入力したいときに使用するモードである.ノーマルモードからは,i・I・a・A・o・O等の入力で挿入モードに移行する.よく使用するのは,iとAである.

3.2.1 Ctrl-[で挿入モードからノーマルモードに戻る

通常,ノーマルモードに戻るにはエスケープキーを押す.自分のモードがわからなくなったときや自分のやっていることがわからなくなった場合もエスケープキーを連打する.しかし,大抵のキーボードはエスケープキーが遠い.ホームポジションから指を離してエスケープキーを押すのは効率が悪い.そこで,エスケープキーの代替としてCtrl-[がある.Ctrl-[を使用すると,ホームポジションから指が離れないので,より効率的にノーマルモードに移動できる.

3.2.2 Vimの補完

インサートモードでは,補完を使用することができる.補完の際にはカーソルの位置に別のウィンドウが表示される.候補を移動するにはCtrl-nとCtrl-pを使う.Nは次(Next)の行に進み,Pは前(Previous)の行に進む.

3.3 コマンドラインモード

コマンドラインモードでは,ファイルの保存やVimの終了,文字列の置換等ができる.コマンドラインモードは,ノーマルモードから:を入力することで開始する.使用できるコマンド名は省略できる.

3.3.1 画面分割

Vimでファイルを編集しているとき,複数のファイルを同時に開きたいと思ったことはないだろうか?Vimにはマルチウィンドウと呼ばれる機能がある.画面を分割する方法はいくつかある.以下では,マルチウィンドウとウィンドウの移動方法について説明する. vimコマンドの段階でファイルを分割することもできる. 実はノーマルモードでも画面分割ができる. 分割した画面を移動するには,Ctrl-wのあとにhjklを入力する. ウィンドウの大きさを変えるには,Ctrl-w =+-><を入力する. ウィンドウ自体を移動させるには,Ctrl-w HJKLrRxを入力する.

3.3.2 バッファ

Vimにはバッファという概念があり,開いたファイルはメモリ上に展開される.以下では,バッファの操作方法について説明する. :lsの実行結果について以下に例を示す.
	
	:ls
	1 %a   "index.html"                   line 497
	3 #a   "index.css"                    line 1
	
  
数字/記号 意味
1 バッファ番号
3 バッファ番号
% 現在のウィンドウ
# バッファ番号を利用しなくても表せる識別子(:e #とすることで当該バッファを編集できる)
a 現在読み込まれていて表示されている

3.4 ビジュアルモード

ビジュアルモードは視覚的にテキストを選択できるモードである.選択した範囲に対してコマンド実行や,置換・削除等を行うことができる.ビジュアルモードは3種類存在するので以下の項ではそれらを説明する.それぞれのビジュアルモードを終了するにはエスケープキーやCtrl-[を入力する.

3.4.1 通常のビジュアルモード

通常のビジュアルモードは,ノーマルモードからvを入力することで開始する.そのままカーソルを移動させれば,文字の選択範囲は拡大する.選択した範囲に対して置換や削除を行うことができる.

3.4.2 行単位のビジュアルモード

行単位のビジュアルモードは,ノーマルモードからVを入力することで開始する.このモードは通常のビジュアルモードと違い,1行ごとに選択ができる.

3.4.3 矩形選択

矩形選択に入るには,ノーマルモードからCtrl-vを入力する.矩形選択では,テキストを四角形単位で選択できる.矩形選択は,連続した行をコメントアウトをするときが多い.コメントアウトしたい部分でCtrl-vを入力し,jまたはhで数行選択する.そしてIを入力してコメントアウトとなる記号を入力する.最後にエスケープキーまたはCtrl-[を入力すれば選択した行がコメントアウトできる.