Linux コマンド vi エディタ操作

Linux

本記事では「毎回は使わないけど、知っていると便利な vi の機能」について備忘録として残していこうと思います。

はじめに

vi にはコマンドモードと入力モードがある。
現在がどちらのモードか迷ったら [esc] を押してコマンドモードに戻ってから作業を再開すること。

入力モードとコマンドモードの切り替え

コマンドモード へ切り替え

[esc]         # コマンドモードへ切り替え

入力モード へ切り替え

i             # 現在のカーソル位置      から入力 insert
a             # 現在のカーソル位置の後ろから入力 after

o             # (小文字)現在のカーソル位置の行の 次 の行から入力
O             # (大文字)現在のカーソル位置の行の 前 の行から入力

コマンドモードの操作

画面に行番号の表示

:set number   # 行番号の表示
:se nu        # 行番号の表示(省略版)

カーソル移動(行内移動)

^             # 現在の行の 行頭 へ移動(空白がある場合、先頭文字まで移動)
0             # 現在の行の 行頭 へ移動(空白がある場合でも先頭まで移動)

$             # 現在の行の 行末 へ移動

fa            # 現在の位置から行末に向けて最初に登場する a まで移動(find の f ?)
fh            # 現在の位置から行末に向けて最初に登場する h まで移動(find の f ?)
fr            # 現在の位置から行末に向けて最初に登場する r まで移動(find の f ?)

カーソル移動(行移動)

:1            #  1行目に移動
:50           # 50行目に移動
:88           # 88行目に移動

:$            # 最終行に移動

検索

/hogehoge     # 現在のカーソル位置から末尾に向かって文字列 hogehoge を検索

?hogehoge     # 現在のカーソル位置から先頭に向かって文字列 hogehoge を検索

# 次の検索結果に行くには [n]
# 前の検索結果に行くには [Shift] + [n]

画面移動

[ctrl] + [f]  # ファイル末尾に向かって1画面スクロールする forword
[ctrl] + [b]  # ファイル先頭に向かって1画面スクロールする back

削除

x             # 現在のカーソル位置の文字を削除
3x            # 現在のカーソル位置から3文字を削除

dd            # 現在のカーソル位置の行       を削除(切り取り)
5dd           # 現在のカーソル位置の行から5行を削除(切り取り)

コピー & 貼り付け

yy            # 1行コピー
3yy           # 3行コピー

p             # (小文字)カーソル行の下に貼り付け
P             # (大文字)カーソル行の上に貼り付け

元に戻す・やり直し

u             # 最後に実行した編集の取り消し(元に戻す)
.             # 最後に実行した編集の繰り返し(やり直し)

保存・終了

# w:(write)編集中のメモリの内容をファイルに保存
# q:(quit)メモリ上の編集データをすべてファイルに書きこみしてあれば終了

:w            # 保存
:w!           # 保存(強制)

:q            # 終了
:q!           # 終了(強制)

:wq           # 保存して終了
:wq!          # 保存して終了(強制)