Vi/Vim

https://www.vim.org/

vi (ヴィーアイ) は UNIX に標準搭載されているテキストエディタ。 Vim (ヴィム) は vi の発展版で、近年の UNIX 系 OS で vi を打って起動するのは Vim であることが多い。

最低限覚えておくこと

  • 起動時はノーマルモード (編集はできない)。
  • カーソル移動は (矢印キーも使えるけど) 基本 h: 左, j: 下, k: 上, l: 右 でおこなう。
  • 編集は i でインサートモード --INSERT-- に入って行う。 インサートモードではカーソル移動はなるべくしない。
  • インサートモードから抜けるには esccontrolC
  • :w で変更を保存、:q で終了
  • :wqZZ で保存して終了
  • :q! で保存せずに強制終了

設定

ノーマルモードで :set <option> もしくは ~/.vimrc

c.f. https://github.com/ymat2/dotfiles/blob/main/.vimrc

vimtutor

vim の操作を習得するための練習問題付き教材。 vimtutor で起動する。

カーソル移動
h, j, k, l (左、下、上、右)
, ◀︎, ▶︎,
起動と終了
esc でノーマルモードへ
:q! で保存せずに終了
:w で変更を保存、:q で終了
:wq で保存して終了
テキストの削除
x でカーソルの右側の文字を削除
テキストの挿入
編集箇所まで移動 (インサートモードでも移動できるけどしないつもりで)
I でインサートモードへ
編集したら esccontrolC でノーマルモードへ
テキストの追加
編集行まで移動 (行の上ならどの位置でも OK)
A でインサートモードへ。カーソルは末尾に移る。
編集したらノーマルモードへ
削除コマンド (オペレータ)
削除したい箇所の”先頭”にカーソルを移動
dw で空白を含む単語の末尾まで
de で空白を含まない単語の末尾まで
d$ でカーソル位置から行末まで
モーション + カウント
we は単体でカーソル移動コマンドとして機能する。
数字と組み合わせて使用できる。
2w で2単語先の語頭へ
3e で3単語先の終端へ
0 で行頭へ
オペレータ + カウント + モーション
d2w でカーソル位置から2単語削除
行の削除
削除する行にカーソルを移動 (位置はどこでもOK)
dd で行を削除
2dd で2行削除
操作のやり直し
u で直前の操作を取り消し
U で行全体の操作を取り消し
行の貼り付け
dd で行をカット
貼り付けたい位置のひとつ上の行へカーソルを移動
p で貼り付け
置換 (使う場面ある?後述する s///g で十分な気もする。)
置換する文字の先頭にカーソルを移動
r置換先の文字 で置換
変更
ce でカーソル位置から単語の終わりまでを削除
同時にインサートモードに移るので、編集して esc
ファイル内の移動
controlG で行番号を取得
G でファイルの最下行へ
gg でファイルの先頭へ
行番号 G で指定した行へ
検索
/ + 検索したい単語 で下方向、? + 検索したい単語で上方向に検索
n で次のヒット、N で前のヒットへカーソルを移動
対応する括弧を検索
% でカーソル位置の括弧と対応する括弧へ移動
置換
:s/old/new/g でカーソル行の “old” を “new” に置換
:#,#s/old/new/g で置換開始行と終了行を指定
:%s/old/new/g でファイル全体にわたって置換
:%s/old/new/gc でファイル全体にわたって1つ1つ確認をとりながら置換
外部コマンドの実行
:! に続けてコマンドを実行できる。(e.x. :!pwd)
Enter で終了
範囲選択
v でビジュアルモードに移行
カーソルキーを移動して範囲選択
shiftv は行選択モード、controlv は矩形選択モード
ファイル、標準出力の取り込み
:r ファイル名 でファイルの内容をカーソル位置に挿入
:r :!pwd などで、コマンドの標準出力を取り込むこともできる。
オープンコマンド
o でカーソル位置の下に行を挿入してインサートモードへ
O でカーソル位置の上に行を挿入してインサートモードへ
置換モード
R で置換モードへ
文字を打つと元々あった文字は置き換えられる。
esccontrolC で脱出
コピー
v でビジュアルモードに移行して範囲選択 → y でコピー
p でペースト
yw で1単語コピー
yy で行まるごとコピー