Viコマンド早見表


コマンド早見表

横スクロールをする

操作意味
zhN 文字分右にスクロール
zlN 文字分左にスクロール
zH半画面分右にスクロール
zL半画面分左にスクロール

行の折り返しをしている時に見た目の次の行へ移動する

操作意味
gk見た目の上の行に移動
gj見た目の下の行に移動
g0見た目の行の先頭に移動
g$見た目の行の終端に移動

常に、見た目の行数で移動させたい場合
.vimrcに以下の設定
:nnoremap j gj
:nnoremap k gk

プログラムを編集中に便利な移動

コマンド意味
[[前の関数にジャンプ
]]次の関数にジャンプ
%対応する括弧"{ }","[ ]","( )"、コメント("/* */")にジャンプ
gdローカル宣言にジャンプ
gDグローバル宣言にジャンプ
gfカーソル下の単語をファイル名として開く
gaカーソル位置の単語の文字コードを表示

分割ウィンドウ

操作意味
<C-W>r分割ウィンドウの回転
<C-W>R分割ウィンドウの回転
<C-W>o分割ウィンドウをカレントウィンドウ以外全て閉じる
:wall分割ウィンドウ全てを書き込み
:qall分割ウィンドウ全てを終了

一般

操作意味
[mメソッド移動
[Mメソッド移動
]mメソッド移動
]Mメソッド移動
<C-O>一時的にノーマルモードに移行
0行の先頭に移動
a挿入モードにはいる(カーソルの後)
A挿入モードにはいる(行末に移動)
b前の単語に戻る
B前の単語に戻る(空白のみを区切りと解釈)
^b前のページにスクロール
c次に続く移動コマンドの場所まで変更
Cc$と同じ
d次に続く移動コマンドの場所まで削除
Dd$と同じ
^d画面を半分スクロール
e単語の最後の文字に移動
E単語の最後の文字に移動(空白のみを区切りと解釈)
f行の中で指定された文字を末尾方向に探索
F行の中で指定された文字を先頭方向に探索
^f画面を1ページ分スクロール
G指定された行番号の行へジャンプ
^gカーソルのある行の行番号を表示
h左に1文字移動
H画面の一番上の行に移動
i挿入モードにはいる(カーソルの前)
I挿入モードにはいる(行の先頭に移動)
j下の行に移動
Jカーソルのある行と次の行を連結
k上の行に移動
l右に1文字移動
L画面の一番下の行に移動
m行にマークを付ける
M画面の中央の行に移動
n前に行われた検索を繰り返す
N前に行われた検索を、反対方向に繰り返す
o挿入モードにはいる(カーソルの下に新しい行を作る)
O挿入モードにはいる(カーソルの上に新しい行を作る)
pバッファの内容をカーソルの後(下の行)に挿入
Pバッファの内容をカーソルの前(上の行)に挿入
r1文字置き換え
Rカーソルの場所から上書き訂正
^r画面の表示の乱れを直す(端末によっては^l)
s1文字を別の文字列に置き換える
S1行を別のテキストに置き換える ccと同じ
t行の中で指定された文字を末尾方向に探索し、その前に移動
T行の中で指定された文字を先頭方向に探索し、その後に移動
^tタブの分だけ移動
uテキストの変更を取り消す
Uカーソルのある行の変更を取り消す
w次の単語の先頭に移動
W次の単語の先頭に移動(空白のみを区切りと解釈)
^w挿入モードで入力中、入力中の単語を削除
xカーソルのある場所の文字を削除
Xカーソルのある場所の前の文字を削除
y次に続く移動コマンドの場所までバッファに記憶
Yyyと同じ
ZZセーブ終了
^z編集を一時的に中止し、バックグラウンドジョブにする
!編集中のファイルにUNIXコマンドを適用
この後にバッファの番号または名前を指定
$行の末尾に移動
%対応する括弧に移動
&exコマンドを繰り返す
-前の行の先頭に移動
次の行の先頭に移動
大文字を小文字に、小文字を大文字に変換
/文字列の検索(テキストの下に向かって)
?文字列の検索(テキストの上に向かって)
.直前のテキスト変更を繰り返す
>及び<テキストをタブ分だけ右(左)シフト
_行の最初の空白でない文字に移動(0と微妙に違います)
:exモードになる

よく使うコマンドの組み合わせ

ddp行の交換
xp文字の交換
y$カーソルから行の最後までをバッファに記憶
cw単語1個の修正
n.特定の文字列を次々探索し、同じ修正を繰り返す
1Gファイルの先頭に移動
dGカーソルより後を全部消去する
:q!強制終了

フィルタコマンド

編集中のファイルの内容をフィルタにかける

:%! command
これで、ファイルの内容が標準入力として「command」に渡されて、その標準出力に置き換えらる

全ての行に行番号を振る

:%! cat -n


「command」に渡す内容を一部分に絞る

ビジュアルモードで行を選択してから「:」を押す
「! command」で選択範囲をフィルタにかけられるようになる
:'<,'>! command

選択範囲の先頭の単語だけを抜き出す

:'<,'>! awk '{print $1}'

選択した文字をクリップボードに入れる

set clipboard=unnamed

Vimで文字を選択しただけで、クリップボードにコピーする

set guioptions+=a

保存していなくても別のファイルを表示できるようにする

set hidden


map

操作意味
map <C-N> :bnext<CR>Ctrl+Nで次のバッファを表示
map <C-P> :bprevious<CR>Ctrl+Pで前のバッファを表示
imap <C-K> <ESC>"*pa挿入モードでCtrl+kを押すとクリップボードの内容を貼り付けられるようにする
nnoremap <C-S-J> <C-W>l<C-E><C-W><C-W>Ctrl+Shift+Jで右に表示しているウィンドウをスクロールさせる