hiro_env

モダンな技術スタックを扱う会社のエンジニアになるまでの学習記録

Vimの操作について

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と同じ)

※ !で強制的に実行、複数のコマンドも組み合わせて使える。