Vim
2021-11-15 (月) 13:13:03
Vim とは †
- Vi Improved
- Linuxで利用できるテキストエディタ
- viエディタを機能拡張したもの
- コマンドモードと入力モードを切り替えながら使う
viの操作 †
viの起動 †
- vi <file-name> ※ファイル名を指定して起動
- vi -R <file-name> ※読み取りモードで起動(編集不可)
- vi ※空の新規ファイルを開いて起動
ファイルの操作(Exコマンド) †
- 保存
:w :w <file-name>
- 終了
:q ※変更がある場合は保存するか確認する
- 保存しないで終了
:q!
- 保存して終了
:wq :x
- ファイルを開く
:e <file-name>
- 最後に保存した状態に復帰する
:e!
- 指定したファイルの内容をカレント行の下に読み込む
:r <file-name>
- シェルコマンドを実行
- viを終了しないでシェルコマンドを実行
:!<command>
- viを終了しないでシェルコマンドを実行
- シェルコマンドを実行して実行結果をカレント行の下に挿入する
:r!<command>
ファイルの操作 †
- 保存して終了
ZZ ※:wqと同じ
カーソルの操作 †
- 上下左右 ※カーソルキー(↑↓←→)も同じ
j ※上に移動 k ※下に移動 h ※左に移動 l ※右に移動
- 数字に続けて入力すると指定した回数分繰り返す
2h ※2文字左に移動
- 数字に続けて入力すると指定した回数分繰り返す
- 単語
b ※前の単語の先頭 e ※単語の末尾 w ※次の単語の先頭
- カーソル行
0 ※先頭 ^ ※先頭(先頭が空白の場合は、先頭の文字) $ ※末尾
- カーソル行の前行/次行
- ※前の行の先頭 [Enter] ※次の行の先頭
- 画面の最上行/下行
H ※最上行 M ※中央行 L ※最下行
- ファイルの先頭/末尾
- 先頭
gg :0
- 末尾
G :$
- 先頭
- 指定した行
数字 ※カーソル行から指定した数 :数字 ※行番号 数字G ※ファイルの先頭行番号
- 括弧の開始/終了
% ※カーソル位置の括弧に対応する括弧の開始/終了
画面の操作 †
- 1画面
Ctrl+b ※上 Ctrl+f ※下
- 半画面
Ctrl+u ※上 Ctrl+d ※下
文字の編集 †
編集の操作 †
- 元に戻す
u
- やり直し
Ctrl+r
- 直前の操作の繰り返し
.
文字の挿入(入力モード) †
- カーソル位置で入力モード
i ※カーソル位置の左 a ※カーソル位置の右
- 行の先頭/末尾で入力モード
I ※カーソル行の先頭 A ※カーソル行の末尾
- 行を追加して入力モード
o ※カーソル行の下に行を追加 O ※カーソル行の上に行を追加
文字の上書き †
- 1文字のみ
r[char] ※カーソル位置の1文字を、入力した1文字に
- 入力した文字列に ※Escで文字列の入力を終了
R[string] ※カーソル位置の文字から右に、入力した文字列と同じ文字数を入力した文字列に s[string] ※カーソル位置の1文字を、入力した文字列に S[string] ※カーソル行全体を入力した文字列
文字の削除 †
- 1文字を削除
x ※カーソル位置の1文字 X ※カーソル位置の左の1文字 dl ※「x」と同じ
- 数字に続けて入力すると指定した回数分繰り返す
3x ※カーソル位置の文字を含む右の3文字
- 単語を削除
dw ※カーソル位置の単語を削除
- 行を削除
dd ※カーソル行全体を削除(改行含む)
- 数字に続けて入力すると指定した回数分繰り返す
3dd ※カーソル行を含む下の3行
- 数字に続けて入力すると指定した回数分繰り返す
- カーソル位置から同じカーソル行の指定した場所までを削除
- 行頭/行末まで
d^ ※行頭までを削除 d$ ※行末までを削除
- 左右の最も近いキー入力した文字までを削除
df[char] ※順方向(右) dF[char] ※逆方向(左)
- 行頭/行末まで
検索 †
文字列 †
- キー入力で指定した文字列を検索
/[string] ※下方向 ?[string] ※上方向
- カーソル位置の文字列を検索
* ※下方向 # ※上方向
- 次の文字列を検索する
n ※順方向 N ※逆方向
文字 †
- カーソル行のみ
f[char] ※順方向(右) F[char] ※逆方向(左)
文字列の置換 †
- 置換対象:カーソル行のみ
:s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ :s/[検索文字]/[置換文字]/g ※全ての文字列
- 置換対象:全ての行
:%s/[検索文字]/[置換文字]/ ※最初に検出した文字列のみ :%s/[検索文字]/[置換文字]/g ※全ての文字列
- 置換対象は指定した範囲の行
:[開始行番号],[終了行番号]s/[検索文字]/[置換文字]/g
- 検索文字列が複数あった場合
- 末尾に"g"なしは、最初に検出した文字列のみ
- 末尾に"g"ありは、全ての文字列
コピー、削除、ペースト †
- 編集内容を指定する1文字を入力後に、カーソル操作で対象範囲を指定する。
- 編集内容のどれを指定しても、対象範囲で指定した対象の値はバッファに保存され、ペーストすることができる。
編集内容を指定 †
y ※コピー d ※削除 c ※削除(削除後に入力モード)
対象範囲を指定(行単位の操作) ※編集内容がコピー(y)の例 †
- 編集内容と同じ文字を2回入力した場合は、カーソル行全体を指定
yy
- カーソル操作で対象範囲を指定
yj ※カーソル行と下の1行 yk ※カーソル行と上の1行 y数値j ※カーソル行と、下の指定した数分の行 y数値k ※カーソル行と、下の指定した数分の行
対象範囲を指定(文字単位の操作) ※編集内容がコピー(y)の例 †
- カーソル操作で対象範囲を指定
yh ※カーソル位置の左1文字 yl ※カーソル位置の右1文字 y数値h ※カーソル位置の左、指定した数分の文字 y数値l ※カーソル位置の右、指定した数分の文字 y0 ※カーソル位置の左、全ての文字(「y^」と同じ) y$ ※カーソル位置の右、全ての文字
ペースト †
- 行単位の操作の場合
p ※カーソル行の下にペースト P ※カーソル行の上にペースト
- 文字単位の操作の場合
p ※カーソル位置の右にペースト P ※カーソル位置の左にペースト
- 複数個のペースト
- pまたはPの前に数値を指定すると、指定した数分をペーストする。
補足 †
cc[string] ※カーソル行全体を削除(改行は削除せず、入力モード) cw[string] ※ cf[char] [string] ※ D ※「d$」と同じ。カーソル位置の右、全ての文字を削除 C ※「c$」と同じ。カーソル位置の右、全ての文字を削除(削除後は入力モード)
範囲指定 †
範囲指定(ビジュアルモード) †
- v ※ビジュアルモードに切り替わり、カーソル操作で範囲を指定する
- d ※指定した範囲の文字を削除
範囲指定(マーク) †
- 下記操作による範囲指定後に、各編集の操作を実施
- 範囲の開始行で:ms
- 範囲の終了行で:me
- 複数行のコピー [#a4a4bf1b]
- 「:'s,'ey」と入力し、Enter押下
- 貼り付け先で:Shift + p
- 複数行の削除 [#a69d6aff]
- 「:'s,'ed」と入力し、Enter押下
- 範囲指定の置換 [#d307a0c6]
- 「:'s,'es/置換される文字列/置換する文字列/g」と入力し、Enter押下
入力補完 †
Ctrl+p
設定 †
viを起動中のみ(終了すると設定が消える) †
- 行番号
- 表示
:set number :set nu
- 非表示
:set nonumber :set nonu
- 表示
- タブ幅
:set ts=<number>
常時の設定 †
- 設定ファイル
/.exrc ※viエディター
/.vimrc ※Vim
- 設定ファイルへの記述
- コマンドの頭":"を除いた状態で記述する
チュートリアル †
- vimtutor
- viエディタの操作をチュートリアルで学習できる
- パッケージ
- vim-enhanced パッケージ ※CentOS
- vim パッケージ ※Ubuntu