Vimの基本的な操作についての備忘録記事です。
内容はvimtutorを参考にしています。(実践ということでVimを使って記載)
個人的な話ですが、
- 忘れないように身につくまでは週に何回かvimtutorをやる
- VSCにプラグインを入れて使う
以上の2つを実践していきます。
モードについて
vimには4つのモードがある。
ノーマルモード
Vimを開いた時のデフォルトのモード コピー、ペースト、削除が簡単に実行できる。
主な操作
コマンド | コマンドの意味 |
---|---|
k | 上の行に移動 |
j | 下の行に移動 |
l | 右に移動 |
h | 左に移動 |
yy | 1行yank |
dd | 1行delete(切取) |
dw | 1単語切取 |
d + (数字) + w | 数字分の単語を切取 |
d + (数字) + b | 数字分の単語を逆方向に切取 |
p | 次の行にput |
P | 前の行にput |
c | c+wや$で指定範囲の編集(change) |
gg | 一番上の行に移動 |
G | 一番下の行に移動 |
数字+G | 指定した行数に移動 |
0 | その行の先頭まで移動 |
$ | 行末まで移動 |
数字+l/h | 指定した文字数分左右に移動 |
数字+w(以下数字なく単体でも使用可) | 指定した単語をスキップして次の単語の最初の文字に移動 |
数字+e | 指定した数の単語の最後の文字に移動 |
数字+b | 指定した単語分逆方向にスキップして単語の最初の文字に移動 |
数字+ge | 指定した単語分逆方向に移動して単語の最後の文字に移動 |
※補足
yyやddは2ddのように頭に数字をつけることでその行数分実行できる。また、$は行末までを意味する。
下記aの先頭で3wを実行するとaaa bbb cccをスキップしてdの先頭まで、3eを実行するとcの最後の文字までカーソルを移動する。
aの最後にカーソルを合わせて3eとするとdの最後になるが、これはvimが空白で単語を認識しており、カーソルがある場所(その場所は除く)から数えて3つ目の単語の最後の文字がdになるからである。
一方でaの最後で3wを実行してもdの先頭に移動する。これは前述の通り単語がスペース区切りで認識されているため、自身を除いて(次の文字から)3つ分のスペースをスキップしながら3つ目の単語の先頭を指すという挙動をしているためである。
[aaa bbb ccc ddd]
インサートモード
文字列を入力できるモード 実際に文字を入力する際はこのモードを使う。 ノーマルモードでiやaを押すことで移行でき、ノーマルモードに戻るにはEscを押す。
主な操作
コマンド | コマンドの意味 |
---|---|
i | カーソルの前からインサート(insert) |
a | カーソルの後からインサート(append) |
o | 次の行からインサート(open a new line) |
ビジュアルモード
視覚的にテキストの選択を行うことができ、指定した範囲に対して操作を行うことができる。 ノーマルモードでvを押すことで起動でき、Escでノーマルモードに戻る。
コマンドラインモード
ファイルの保存や終了を実行することができる。 ノーマルモードで:を押すことでコマンドを入力することができる。
主な操作
コマンド | コマンドの意味 |
---|---|
:w | セーブする(wirte) |
:q | vimを終了する |
:wq! | 強制的にセーブして終了 |
:set number | 行数を表示する |
:数字 | 指定した行数まで移動(normalの数字+Gと同じ) |
※ !で強制的に実行、複数のコマンドも組み合わせて使える。