vimとはLinux向けのテキストエディタで、ターミナル(コマンドプロンプト)上でファイルの操作やコードの編集ができます。
ターミナル上で操作するための特性として全ての操作をキーボードのみで行えるよう設計されており、操作をマスターするとマウスを使うより早く操作できるようで普段のコーディングにも使用しているプログラマも多いと聞きます。
ちなみにまさに今この記事もVSCodeにvimの拡張機能を入れてvimの操作方法で書いています。
正直まだ全然慣れてないので超書きにくいです笑
3つのモードを行ったり来たりしながら操作するのが特徴
vimの特徴としてはホームポジションからあまり指が離れないまま様々な操作が出来るよう、3つのモードで操作します。
その3つとは、
- NOMALモード → ファイル内の操作(カーソル移動など)
- INSERTモード → ファイル内の入力操作
- VISUALモード → ファイル内での文字選択操作
基本的にはNOMALモードでカーソル移動などをして、
文字入力操作などをしたい時にINSERTモードに変更して終わったらまたNOMALモード、
文字の選択操作(範囲選択してコピーなど)をしたい時にVISUALモードに変更して、終わったらまたNOMALモード
みたいな感じの流れで行います。
NORMALモードからINSERTモードとVISUALモードへの行き方はそれぞれのパートで後述します。
INSERTモードとVISUALモードからNORMALモードに戻る方法は 『ESC』キーを押すと戻ります。
NORMALモード
まず通常何もしないと最初はNORMALモードになっています。つまりメインは移動操作モードです。
カーソルを移動させたり後はファイル内の検索やvimの終了などを操作します。
カーソル移動は以下の通り。
キー | 方向 |
---|---|
h | ← |
j | ↓ |
k | ↑ |
l | → |
ご覧の通り、カーソルの上下左右移動は右手のホームポジションの所にあり指をほとんど動かさなくても操作できるし上下左右の矢印がないキーボードにも左右されず操作できる。
その他NORMALモードで出来る一般的な操作
移動系
コマンド | 動作説明 |
---|---|
0 | 行頭へ移動 |
$ | 行末へ移動 |
w | 単語の末尾へ移動 |
gg | ファイルの先頭へ移動 |
nG , :n | ファイルのn行目へ移動 |
G | ファイルの末尾へ移動 |
H | 画面の最上行へ移動 |
L | 画面の最下行へ移動 |
ctrl + b | 前の画面へ移動 |
ctrl + f | 次の画面へ移動 |
削除系
コマンド | 動作説明 |
---|---|
x | 1文字削除 |
dd | 1行削除(正確にはカット状態のためペーストできる) |
dw | 1単語の削除 |
cd | 1単語の削除後、INSERTモード(dwコマンドの後、iコマンド) |
2dd | 2行削除(数字部分の数だけ行を削除) |
操作の取り消し
コマンド | 動作説明 |
---|---|
u | 操作の取り消し(Windowsのctrl+Zと同じ) |
ctrl + r | 操作の取り消しの再実行(Windowsのctrl+yと同じ) |
保存、終了系
コマンド | 動作説明 |
---|---|
:w | 保存 |
:q | 終了 |
:q! | 保存されていない内容を破棄して強制的に終了 |
:wq | 保存して終了 |
:wq! | 強制的に保存して終了 |
:e [ファイル名] | vimを終了せず、現在のファイルを閉じて指定したファイルを開く。 ただし現在のファイルが編集済みの場合は警告が表示され指定したファイルは開けない |
:e! [ファイル名] | vimを終了せず、現在のファイルを閉じて指定したファイルを開く。 ただし現在のファイルが編集済みの場合でも最後に保存した状態に戻す。ファイル名を指定しない場合は現在のファイルを最後に保存した状態に戻す |
INSERTモード
INSERTモードは文字入力したい時に切り替えるモード。
カーソル移動などをするNORMALモードからINSERTモードに行くにはいくつか方法があります。
注意:モード切替は日本語入力モードだと反応しませんので、必ず英数字入力モードで入力してください。
コマンド | 動作説明 |
---|---|
i | カーソル位置から入力開始 |
a | カーソル位置の後ろから入力開始 |
I | 行の先頭に移動してそこから入力開始 |
A | 行の最後に移動してそこから入力開始 |
O | カーソル位置の一行上に新しい行を作成して入力開始 |
o | カーソル位置の一行下に新しい行を作成して入力開始 |
ちなみNORMALモードだと無字、
INSERTモードだと下に『INSERT』と表示されますので今自分が何モードかは下を見ればわかります。(VISUALモードも『VISUAL』と表示される)
VISUALモード
VISUALモードは文字列の範囲選択ができ、その選択範囲に対して特定の操作(コピーやペーストなど)を行えます。 範囲選択の方法は、NORMALモードで選択したい範囲の先頭までカーソルを持っていき、『V』を押すとVISUALモードに入るとカーソルを移動させるとその範囲分だけ選択してくれます。
選択した範囲に対して何が出来るのかは以下の通り、
コマンド | 動作説明 |
---|---|
y | コピー (Windowsの ctrl+c と一緒) |
d | コピー (Windowsの ctrl+x と一緒) |
p | 貼り付け (Windowsの ctrl+x と一緒) |
まとめ
以上、vimの基本操作をまとめてみました。
しかし紹介した以外にまだまだ出来ることはいっぱいあってこれを使いこなせたら確かに普段遣いでも早くなるかもと思いました。
とはいえ、ここまでvimを使って書いてきましたがなかなか難しく根気強く使っていかないと身につかないですねこれ笑。