vi/vim 編集 コマンド 私的まとめ

viの私的覚書です。

移動

上下左右の移動

   k
 h   l
   j

単語毎に移動

前進する。 w
後退する。 b

行の

先端に移動する。 ^
最後に移動する。 $

段落毎に移動

前進する。 {
後退する。 }

ファイルの最初、最後へ移動

最初へ移動する。 gg
最後へ移動する。 G
現在位置を表示する。 ctrl-g
行を指定して移動する。 行数G

対応する開き括弧、閉じ括弧へ移動

括弧へ移動する。 %

検索

行内1文字検索する。(左から右) f○
行内1文字検索する。(右から左) F○
検索開始する。 /
次候補する。 n
行頭検索する。 /^○○
行末検索する。 /○○$
検索履歴を巡回する。 /上キー、下キー
単語区切りでの検索する。 /\>○○\>

マーク

マークは画面上に表記されないので注意する。

マークする。 m{a-zA-Z}
マークの場所へ行く。 '{a-zA-Z}
viが自動で覚えた場所へ行く。 '{0-9}
マークの一覧を確認する。 :marks

特殊操作

カーソル下のカッコに対応するカッコに移動する。 %
ウィンドウ範囲内の最初の文字に移動する。 h
ウィンドウ範囲内の中段の文字に移動する。 m
ウィンドウ範囲内の最後の文字に移動する。 l

タグ

カーソル直下の文字列からタグへの移動する。 ctrl-]
タグ移動を戻る。 ctrl-o
タグ一覧を見る。 :tags

スクロール

1行下を表示する。 ctrl-e
1行上を表示する。 ctrl-y
半ページ上を表示する。 ctrl-d
半ページ下を表示する。 ctrl-u
1ページ上を表示する。 ctrl-b
1ページ下を表示する。 ctrl-f

カーソル位置に対して画面を

カーソルが最上段にくるように表示する。 zt
カーソルが真ん中の行にくるように表示する。 zz
カーソルが最下行にくるように表示する。 zb

入力

入力モードへ i
入力モードから抜ける。 ESC
カーソル位置一つ右から入力モードへ移行する。 a
カーソル位置の1行下に一行挿入して入力モードへ移行する。 o

以降は入力モード中

上の行と同じ文字を反映する。 ctrl-y
下の行と同じ文字を反映する。 ctrl-e
最新の入力をカーソル位置に反映する。 ctrl-a

これは便利!以前打った単語に基づく補完。頭文字を入力し、

順送りの候補表示する。 ctrl-n
逆順送りの候補表示する。 ctrl-p

プログラムのソースなど、指定された言葉を辞書補完する。プログラマ必須の機能

ソースコードなどのの辞書補完機能を使う。*1 ctrl-x ctrl-o

インデント

カーソル行にインデントを1段つける。 ctrl-t
カーソル行のインデントを1段消す。 ctrl-d

以上まで入力モード用のコマンド

二字一音文字入力

二字一音文字一覧を表示する。 :deg
二字一音文字入力する。 入力モードでctrl-k

削除

1文字消す。(delキーのように) x
1文字消す。(バックスペースのように) X
さまざまな削除。 d-共通モーション
d$と同じ効果。 D
1行消す。 dd
改行を取る。 J

コピー

さまざまなコピーする。 y-共通モーション
1行コピーする。 yy
名前付コピーを行う。 "○上記yコマンド*2
カーソルの前に貼り付けする。 P
カーソルの後に貼り付けする。 p
名前付貼り付けを行う。 "○上記pコマンド*3

変更

指定の範囲を削除して入力モードへ移行する。(=編集) c-共通モーション
c$と同じ。 C
c1と同じ。 s
cc(1行削除して編集モードへ)と同じ。 S
カーソル位置の1文字上書きする。 r○
上書きモードへ移行する。 R
大文字小文字変換する。 ~
行を左揃えにする。 :le
行を中央揃えにする。 :ce
行を右揃えにする。 :ri

ビジュアルモード

範囲選択モードに移行する。 v
範囲選択モードに移行する。(行単位) V
範囲選択モード終了する。 ctrl-v

元に戻る、やりなおし

元に戻る。 u
やりなおしする。 ctrl-r
上記2つと:○○コマンド以外のコマンドで、以前の動作繰り返しする。 .

保存

上書き保存する。 w
名前をつけて保存する。 w ファイル名
保存せずに終了する。 q!
保存して終了する。 wq or x

他ファイル

他ファイルを開く。 :edit foo.txt
現在のファイルの変更を破棄して強制的に他ファイルへ移行する。 :edit! foo.txt
現在のファイルの変更を保存せずに他ファイルを開く。 :hide edit foo.txt

複数ファイル

複数ファイルリストを作成する。 :args five.c six.c seven.h
開いているファイルリストを変更する。(ワイルドカード指定) :args *.txt
現在開いているファイルの一覧を表示する。 :args
開いているファイルの中で、直前に変更していたファイルに戻る。 ctrl-^
複数ファイルを開いている時に、次のファイルを開く。 :next
現在のファイルの変更を破棄して強制的に次のファイルを開く。 :next!
現在のファイルの変更を保存して次のファイルを開く。 :wnext
複数ファイルを開いている時に、次のファイルを開く。 :previous
現在のファイルの変更を保存して次のファイルを開く。 :wprevious
複数ファイルを開いている際に、ファイルリストの先頭を表示する。 :first
複数ファイルを開いている際に、ファイルリストの最後を表示する。 :last
複数ファイルをまたいだコピー、貼り付けをする。 名前付コピー機能を使う。

共通モーション

現在のカーソルのある単語の単語末まで○○ ○w
現在のカーソルのある単語の単語の始まりまで○○ ○b
現在のカーソル位置から行末まで○○ ○$
現在のカーソル位置から行頭まで○○ ○^
現在のカーソル位置から段落の始まりまで○○ ○{
現在のカーソル位置から段落の終わりまで○○ ○}
現在のカーソル位置からファイルの終わりまで○○ ○]]
現在のカーソル位置からファイルの終始まりまで○○ ○[[
意味づけのある1行(例えばピリオドからピリオドまで)で○○(空白残す) ○iw
意味づけのある1行(例えばピリオドからピリオドまで)で○○ ○aw

*1:ただし、ファイルタイプの判定と辞書補完機能が有効でないとダメ

*2:ダブルクオーテーション、名前を示す数字orアルファベット、yコマンド。名前を示す数字orアルファベットは1~9は自動的にコピー履歴を差し、アルファベットは任意で使う。

*3:ダブルクオーテーション、名前を示す数字orアルファベット、pコマンド。名前を示す数字orアルファベットは1~9は自動的にコピー履歴を差し、アルファベットは任意で使う。