# vi .vimrc
set number
set nowrap
set tabstop=4
set shiftwidth=4
set autoindent
set background=dark
syntax enable
colorscheme solarized
let g:solarized_termtrans = 1
環境とシェル
コマンド
説明
:set
現在セッションのオプションを表示
:set nu
(number) 行番号表示をオン
:set tabstop=4
タブの長さ
:set shiftwidth=4
インデントシフトの初期値
:set autoindent
自動インデントモード
:set hlsearch
検索時のハイライト表示をオン
:set wrap
長文を折り返す
:set showmatch
()や{}の対応表示をオン
:set list
タグや空白などの見えない文字が確認できる
:set all
全てのオプションを表示
:sh, ^D
シェルを起動、終了
:!command
コマンドを実行
:n,m!command
n行目から m行目まで command でフィルタ処理
:r !date
日時情報がカレント行に書き込まれる
起動とファイル操作
コマンド
説明
vi file1 file2 file3
file1とfile2をオープン
:r file1
現在行直下にfile1を全てコピー
:5r file1
5行目にfile1を全てコピー
:w! newfile
書き込み権限がない場合の一時しのぎ
画面分割
コマンド
説明
^w s, :sp file
(split) file を横分割で開く
^w v, :vs file
(Verticle Split) file を縦分割で開く
^w o, :on
(only) 編集中ファイル以外を全て閉じる
^w q
現在のウィンドウを閉じる
Ctrl + w + j/k/l/h
下/上/右/左のウィンドウに移動
Ctrl + w + [+/-]
ウィンドウの横軸を1行広げる/縮める
Ctrl + w + [3>/3<]
ウィンドウの縦軸を3つ広げる/縮める
:ar
起動中のファイルをリスト表示
:n
(next) 次のファイルへ移動
:rew
先頭のファイルへ移動
:last
最後のファイルへ移動
:e file2
file2を編集する
:e#, Ctrl + ^
直前のファイル編集へ戻る
テキスト移動
コマンド
説明
h, j, k, l
左、下、上、右
w, W, b, B
前、後の単語(大文字は大きいジャンプ)
e, E
単語の末尾(大文字は大きいジャンプ)
), (
次、前の文章へ
}, {
次、前の空行で区切られたブロックへ
%
括弧の終端へ
行移動
コマンド
説明
[Enter]
次の行
0, ^, $
カレント行の先頭、文字先頭、末尾
+
下の行の文字先頭
-
上の行の文字先頭
H
(Head) 画面の最上行
M
(Middle) 画面の中央行
L
(Lass) 画面の最下行
nH, nL
上、下から n行目
z[Enter]
カーソル位置を画面の一番上に
z.
カーソル位置を画面中央に
z-
カーソル位置を画面の一番下に
スクロール
コマンド
説明
Ctrl + y, Ctrl + e
1行ずつ上、下にスクロール
Ctrl + u, Ctrl + d
半画面ずつ上、下にスクロール
Ctrl + b, Ctrl + f
1画面ずつ上、下にスクロール
検索
コマンド
説明
tx
カレント行内でカーソルより後方にある x の直前にジャンプ
Tx
カレント行内でカーソルより前方にある x の直前にジャンプ
fx
カレント行内でカーソルより後方にある x にジャンプ
Fx
カレント行内でカーソルより前方にある x にジャンプ
;, ,
カレント行の文字検索を前方、後方に繰り返す
/pattern
前方にパターンを検索
?pattern
後方にパターンを検索
*
カーソル上のテキストを検索
n, N
直近の検索を前方、後方に繰り返す
置換
コマンド
説明
:s/old/new/
カレント行の最初の old を new に置換
:s/old/new/g
カレント行の全ての old を new に置換
:5s/old/new/g
5行目の全ての old を new に置換
:23,44s/old/new/g
23~44行目内の全ての old を new に置換
:%s/old/new/, :1,$s/old/new/
ファイル全ての old を new に置換
:%s/old/new/c
ファイル全ての old を逐一確認しながら new に変換
:%s/\(That\) or \(this\)/\2 or \1/
ホールドバッファ1,2によりthis or That と置換
~
大文字/小文字に変換
パターンマッチング(正規表現)による高度な置換は『vi入門83~107p』を確認
ジャンプ
コマンド
説明
Ctrl + G
ファイル名、状態、カレント行番号の表示
gg
ファイル先頭にジャンプ
G
ファイル末尾にジャンプ
23G
23行目にジャンプ
:N
N行目にジャンプ
mx
現在位置を x でマーク
'x
x がある行の先頭にジャンプ
`x
x にジャンプ
挿入と変更
コマンド
説明
i, a
カーソルの前、後にテキストを挿入
I, A
行の先頭、末尾にテキストを挿入
O, o
カーソルの上、下にテキストを挿入
s, S
1文字、カレント行をテキストに変更
r
一文字変更
cw
単語変更
cc
カレント行を変更
c + [motion]
モーションで指定した場所までを変更
c + nG
カレント行からn行目までを変更
C
行末まで変更
R
重ね書き
10i#-
#- の組み合わせを10回入力。Vim によるテキスト編集はプログラミング
Ctrl + t
(挿入モード)右にインデント
Ctrl + d
(挿入モード)左にインデント
>>
右にインデント
3<<
3行まとめて左にインデント
:5,10 <<
5~10行まとめて右に2インデント
削除とヤンク
コマンド
説明
Ctrl + w, Ctrl + u
入力中の単語を削除。入力中の行を削除
x, X
文字を前方、後方に削除
dw
単語を直後の空白とセットで削除
de
単語のみを削除
dd
カレント行を削除
D
行末までを削除
d + [motion]
モーションで指定した場所までを削除
d + 7G
カレント行から7行目までを削除
yw
単語のヤンク
yy, Y
カレント行のヤンク
y + [motion]
モーションで指定した場所までをヤンク
y + 7G
カレント行から7行目までをヤンク
P, p
削除、ヤンクしたテキストをカーソルの前、後にペースト
レジスタの活用
コマンド
説明
:reg
レジスタ一覧
"a5Y
レジスタa にカレント行から5行を登録
"AY
レジスタa にカレント行を追記
"bp
レジスタb の内容をペースト
Ctrl + r + a
(挿入モードで)レジスタa をペースト
Ctrl + r +
(挿入モードで)クリップボードをペースト
exエディタの活用
コマンド
説明
%, 1,$
ファイル内全ての行
0, ., $
ファイルの先頭、カレント行、最終行
x-n
xのn行前
x+n
xのn行後
Q
exエディタを起動
:vi
viモードへ戻る
:3,5d
3行目〜5行目を削除
:.,$d
カレント行からファイル最終行までを削除
:3,5m0
3行目〜5行目をファイル先頭に移動
:3,5m10
3行目〜5行目を10行目に移動
:13i → text → .
13行目に text を挿入
:12c → text → .
(change) 12行目を text で置き換える
その他
コマンド
説明
.
直近の編集コマンドの繰り返し
v, V
文字、行の選択
ggVG
ファイル内全てを選択
u, U
アンドゥ、カレント行の復元
Ctrl + r
リドゥ
J
2行の連結
:ab IBM International Business Machines
IBM を入力すると勝手に正式名称を展開してくれる
:ab
ab に登録されている略語の一覧
:unab
ab に登録されている略語を解除
保存と終了
コマンド
説明
ESC, Ctrl + [
挿入モードへ
:e!
一番最初の状態へ戻す
:w, :w!, :wa
保存、強制的に保存、オープンしているファイルを全て保存
:3,5w newfile
3〜5行目を newfile として保存
:3,5w>>file
3〜5行目を file に追記
ZZ
保存して終了
:q, :q!
終了、変更を破棄して終了
Q
viモードを終了して exモードに切り替える
:vi
viモードに戻る
注意
上記以外のさらに細々とした vimコマンドやオプションを覚え始めると「手段が目的に」なりそう。とりあえず上記を十分に使いこなせれば十分。あと vi はあくまでも港管理のための基本的な手段。