viコマンド(起動) | コマンドの詳細 |
---|---|
vi ファイル名 | 編集対象のファイルを開く(複数ファイルも可) |
vi +n ファイル名 | n行目から表示する |
vi + ファイル名 | 最後一画面を表示する |
vi + /文字列 ファイル名 | 文字列が存在する行から表示する |
vi -r ファイル名 | 壊れたファイルをリカバリする |
viコマンド(カーソル移動) | コマンドの詳細 |
---|---|
h, BS | 1文字左へ移動(←) |
j, Ctrl + N | 1行下へ移動(↓) |
k, Ctrl + P | 1行上へ移動(↑) |
l, SPACE | 1文字右に移動(→) |
H | 画面の最上行に移動 |
M | 画面の中央行に移動 |
L | 画面の最下行に移動 |
1G | 文頭へ |
G | ファイルの最終行に移動 |
nG | ファイルのn行目に移動 |
0 | 行の頭へ移動 |
$ | 行の最後へ移動 |
Ctrl + F | 1ページ下へ |
Ctrl + B | 1ページ上へ |
Ctrl + D | 半ページ下へ |
Ctrl + U | 半ページ上へ |
w | カーソルを1語進める |
b | カーソルを1語戻す |
e | カーソルを単語末尾へ |
^ | カーソルを行頭へ |
Enter | 次行の行頭へ |
viコマンド(入力・編集) | コマンドの詳細 |
---|---|
ESC | コマンドモードへ移行 |
a | カーソルの右から入力開始 |
A | 行末から入力開始 |
i | カーソルの左から入力開始 |
I | 行頭から入力開始 |
o | 現在の行の下に1行挿入し、その行頭から入力開始 |
O | 現在の行の上に1行挿入し、その行頭から入力開始 |
J | 次の行と現在の行とを結合する |
3J | 下の2行を現在の行とを結合する |
c系 | 対象文字列を消して文字を挿入(つまり、変更) |
C | カーソル位置から行末までを消して文字を挿入 |
viコマンド(削除) | コマンドの詳細 |
---|---|
x | カーソルの1文字削除 |
X | カーソルの左の文字を1文字削除 |
dd | 現在の行を削除(バッファにコピーされる) |
d0 | 行頭からカーソルの直前までの削除 |
ndd | n行、削除 |
dl | 1文字の削除(3文字の削除はd3l, 3dlのどちらでも可) |
dw | カーソル上の一語を削除 |
df 字 | カーソル位置から指定した字までを削除 |
d$ | カーソル位置から行の最後までを削除 |
d^ | カーソル位置から行の行頭までを削除 |
:行1,行2 d | 行1から行2を削除 |
:g/文字列/d | 指定文字列のある行を全て削除 |
viコマンド(検索) | コマンドの詳細 |
---|---|
/<文字列> | 文字列を検索する |
?<文字列> | 文字列を検索する(逆方向) |
n | 順方向へ検索する |
N | 逆方向へ検索する |
f 文字 | 文字を検索(右方向へ) |
F 文字 | 文字を検索(左方向へ) |
; | 次の検索 |
% | (,[に対して対応する ),]や}を検索 |
viコマンド(置換) | コマンドの詳細 |
---|---|
r | カーソル上の1文字を他の1文字に置換 |
R | カーソル上の文字からEscが押されるまでの文字列を置換 |
s | カーソルのある1文字を他の文字列で置換 |
S | 現在の行を他の文字列で置換 |
cw | カーソル位置からこの語の最後までを置換 |
c$ | カーソル位置から行末まで変更 |
cf 字 | カーソル位置から指定した字までを置換 |
C | カーソル位置から行の最後までを置換 |
:&, & | 直前のsコマンドの繰り返し |
:%s/置換え前/置換え後 | 置換え前の文字列を、置換え後の文字列で置換 |
もっとも近くにある文字列一つに対してのみ実行 | |
:%s/置換え前/置換え後/g | ファイルの中すべての文字列に対して、置換えを行う |
~(チルダ) | 大文字/小文字を変更する |
:1,$s/文字列A/文字列B/g | 文字列Aを全て文字列Bに置換 |
:s/文字列A/文字列B/ | 文字列Aを文字列Bに置換 |
(カーソルのある行で、最初に合致するパターンのみ置換) | |
:s/文字列A/文字列B/g | カーソル行の文字列Aを全て文字列Bに置換 |
:s/文字列A/文字列B/c | 文字列Aを文字列Bに置換 |
(カーソルのある行で、最初に合致するパターンのみ置換) | |
(置換前に確認:yで置換、nで置換なし) | |
:10,50s/文字列A/文字列B/g | 文字列Aを文字列Bに置換 |
(10行目から50行目までの間で、合致するパターン全てを置換) | |
:10,$s/文字列A/文字列B/g | 文字列Aを文字列Bに置換 |
(10行目から最終行までの間で、合致するパターン全てを置換) |
viコマンド(カット&ペースト) | コマンドの詳細 |
---|---|
yy | 現在の行をバッファにコピー |
nyy | n行分をバッファにコピー |
yl | 1文字のコピー(3文字のコピーはy3l, 3ylのどちらでも可) |
yw | 単語をバッファにコピー |
y0 | 行頭からカーソルの直前までのコピー |
y$ | カーソルの位置から行末までのコピー |
p | バッファ内のテキストを挿入 |
(文字、単語はカーソルの右に、行は現在の行の下に挿入される) | |
P | バッファ内のテキストを挿入 |
(挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される) |
viコマンド(ウインドウ操作) | コマンドの詳細 |
---|---|
:sp [ファイル] | ウインドウを横に分割 |
:vs [ファイル] | ウインドウを縦に分割 |
: q, :only | カーソルのあるウインドウ以外を全部閉じる |
:new | 空の横ウインドウを開く |
:vnew | 空の縦ウインドウを開く |
Ctrl-w w | 次のウインドウに移動 |
Ctrl-w p | 前のウインドウに移動 |
Ctrl-w o | 現在のウインドウ以外を閉じる |
viコマンド(Undo・Redo) | コマンドの詳細 |
---|---|
u | 直前の操作を取りやめる |
U | 行全体の操作を取りやめる |
.(ドット) | 直前の変更操作の繰り返し |
Ctrl-R | 取り消しの取り消し |
viコマンド(ファイル操作) | コマンドの詳細 |
---|---|
:w | 上書き保存 |
:w [ファイル名] | 現在のファイル(指定ファイル)に保存 |
:w![ファイル名] | 書き込みを強行 |
:行1,行2 ファイル名 | 行1から行2のテキストをファイルに保存 |
:w >> ファイル名 | 現行ファイルの最後に書き加える |
:r ファイル名 | 現行の行の次の行にファイルを読み込み、挿入する |
:r! xxx | OSのxxxコマンドを実行し、その結果を次の行に挿入。 |
:r | 現在の行の次の行に現在のファイルを読み込み、挿入する |
:args | 編集ファイルの一覧を表示する |
:n | 複数個のファイル編集時、次のファイルを編集対象とする |
:e# | 一つ前の編集ファイルに戻る |
:e!% | 現在のファイルを再ロードして、最初から編集をやり直す |
:e ファイル名 | 指定ファイルを編集対象とする |
:rewind | 現在のファイルの変更内容を保存して、リストの最初から編集をやり直す |
:rewind! | 現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す |
:rew | 最後のファイル→先頭のファイル(rewind) |
viコマンド(終了) | コマンドの詳細 |
---|---|
ZZ | viを終了(内容が変更されている場合は保存) |
:wq | ファイルに保存してvi終了 |
:#,# w | #行目から#行目までを保存 |
:q | viを終了(内容が変更されている場合は警告) |
:wq 別ファイル名 | 別名で保存して終了 |
:q! | viの強制終了(内容が変更されていても保存されない) |
viコマンド(バッファ) | コマンドの詳細 |
---|---|
:ls | バッファリストの表示 |
:b バッファ | バッファを表示 |
:bn | 次のバッファを表示 |
:bp | 前のバッファを表示 |
viコマンド(UNIXコマンドの実行) | コマンドの詳細 |
---|---|
:!<コマンド> | <コマンド>を実行する |
:!! | 直前の<コマンド>を再実行する |
:sh | 一時的にシェルに戻る。exitでviに戻る。 |
viコマンド(コマンドのフィルタリング) | コマンドの詳細 |
---|---|
!<コマンド> | <コマンド>を実行して結果を挿入 |
!!date | dateの結果の挿入 |
!!tr A-Z a-z | カーソル行の大文字を小文字に変換 |
viコマンド(テキスト入力の暗記) | コマンドの詳細 |
---|---|
:ab<文字列><置換え文字列> | <文字列>と入力すると<置換え文字列>に置き換えるように設定する |
:unab<文字列> | <文字列>の置き換え設定を解除する |
:ab | 一覧表示 |
viコマンド(その他) | コマンドの詳細 |
---|---|
Ctrl + G | ファイル名、修正の有無、現在の行数などの情報が表示されます |
Ctrl + L | 画面を再表示 |
[n] Shift-g | ファイル内のn行に移動(nが無ければファイル末に移動) |
Shift + Q | exで編集をする |
vi | exからviに戻る |
:h | 日本語マニュアルを表示 |
:! [外部コマンド] | 外部シェルコマンドが実行 |
viコマンド | コマンドの詳細 |
---|---|
:set number, :set nu | 行番号を表示する |
:set no number, :set nonu | 行番号の表示をやめる |
:set showmode | 現在のモードを表示する |
:set showmatch | ()や{}の対応の報告をするようになる |
:set ignorecase | 大文字/小文字の区別なく検索する |
:set autoindent | 自動インデントモード |
:set noautoindent | 自動インデントモードをやめる |
:set all | すべてのオプションを表示する |
:set ruler | ルーラー(右下に表示される行・列の番号)を表示する |
:set tabstop=数値 | タブの大きさを半角スペース数で指定 |
:set nowrap | 折り返し表示しない |
:set history=数値 | コマンド履歴の保存数 |
:set backup | ファイルを保存する時にバックアップファイルを作成する |
:set nobackup | バックアップファイルを作成しない |
:syntax on | off |カラー表示のオンまたはオフ |
:Tutorial | 30分程度のVi利用方法のチュートリアル |
:vert diffsplit [ファイル] | 今のファイルと、他のファイルとの差分を取るコマンド |