実務でかなりよく使うのでメモ。
起動
vi [file name]* |
ファイルを開く(複数可能) |
vi +n [file name] |
n行目から表示 |
vi + [filename] |
最後一画面を表示 |
vi + /[str] [file name] |
文字列strが存在する行から表示 |
vi -r [file name] |
壊れたファイルをリカバリ |
カーソル移動
h, BS*1 |
← |
j, Ctr+N |
↓ |
k, Ctr+P |
↑ |
l, SPACE |
→ |
H |
画面の最上行(High) |
M |
画面の中央行(Middle) |
L |
画面の最下行(Low) |
G |
ファイルの最終行 |
nG |
ファイルのn行目 |
0 |
行頭 |
$ |
行末 |
Ctr+F |
1ページ下 |
Ctr+B |
1ページ上 |
Ctr+D |
半ページ下 |
Ctr+U |
半ページ上 |
入力
a |
カーソルの右から入力開始 |
A |
行末から入力開始 |
i |
カーソルの左から入力開始 |
o |
現在行の下に1行挿入し、その行から入力開始 |
O |
現在行の上に1行挿入し、その行から入力開始 |
結合
J |
次の行と現在行を結合 |
nJ |
下の(n-1)行を現在行と結合 |
削除
x |
カーソル上の1文字削除 |
X |
カーソルの左1文字削除 |
dd |
現在行を削除+バッファにコピー |
ndd |
n行削除 |
dw |
カーソル上の1語削除 |
df [str] |
カーソルからstrまでを削除 |
d$ |
カーソルから行末まで削除 |
d^ |
カーソルから行頭までを削除 |
:[num1],[num2] d |
num1行からnum2行を削除 |
検索
/[str] |
文字列strを検索 |
?[str] |
文字列strを逆方向に検索 |
n |
順方向へ検索 |
N |
逆方向へ検索 |
置換
r |
カーソル上の1文字を他の1文字に置換 |
R |
カーソル上の文字からEscが押されるまでの文字列を置換 |
:%s/[str1]/[str2] |
文字列str1を文字列str2で置換(もっとも近くの1文字のみ) |
:%s/[str1]/[str2]/g |
文字列str1を文字列str2で全て置換 |
カット&ペースト
yy |
現在行をバッファにコピー |
nyy |
n行分をバッファにコピー |
yw |
単語をバッファにコピー |
p |
バッファ内のテキストを挿入(単語はカーソル右、行は現在行の下) |
P |
バッファ内のテキストを挿入(pとは逆の位置) |
Undo・Redo
u |
直前の操作を取りやめる |
U |
行全体の操作を取りやめる |
. |
直前の操作を取りやめる |
ファイル操作
:w [file name]? |
現在のファイルに保存 |
:w! [filename]? |
強制保存 |
:[num1],[num2] [filename] |
行num1から行num2のテキストをファイルに保存 |
:w >> [file name] |
指定ファイルの最後に追加書き込み |
:r [filename] |
現行の次行にファイルを読み込み、挿入 |
:r |
現行の次行にファイルを読み込み、挿入 |
終了
ZZ |
終了(変更されている場合は保存) |
:wq |
保存+終了 |
:q |
終了(変更されている場合は警告) |
:q! |
強制終了 |
:! |
commandを実行 |
:!! |
直前のコマンドを再実行 |
:sh |
一時的にShellへ戻る。exitで終了 |
! |
commandを実行して結果を挿入 |
!!date |
日付を挿入 |
!!tr A-Z a-z |
大文字⇒小文字 |
テキスト入力の略記
:ab |
文字列str1と入力すると、文字列str2に置き換えるよう設定 |
:unab |
文字列str1の置き換え変換設定を解除 |
:ab |
置き換え一覧表示 |
その他
Ctr+G |
ファイル名、修正の有無、現在の行数などの情報表示 |
Ctr+L |
画面再表示 |
コマンド
:set number |
行番号を表示 |
:set no number |
行番号表示解除 |
:set showmode |
現在のモードを表示 |
:set showmatch |
()や{}の対応を報告 |
:set ignorecase |
大文字・小文字の区別なく検索するよう設定 |
:set autoindent |
自動インデント |
:set noautoindent |
自動インデント解除 |
:set all |
全てのオプションを表示 |
vi設定ファイル設定例
set tabstop=4
set showmode
set autoindent
set nonumber
set showmatch