vi (vim 日本語を扱う )
FreeBSD サーバーを SSH でログインして CUI でコントロールします.
vi コマンドは、UNIX系の設定ファイルを編集する時に使いますが、クセのあるテキストエディターなので慣れが必要です.
[ ESC ] キーを使ってモードを戻すところが、面白いところです.
起動
基本 $ vi ファイル名 ...指定して起動 $ vi ファイル名1 ファイル名2 … ファイル名n ...複数ファイル起動 $ vi -R ファイル名 or $ view ファイル名 ...読み込み専用で起動 初期表示位置を指定して起動 $ vi + ファイル名 ...最後の行から表示 $ vi +行数 ファイル名 ...指定行から表示 $ vi +/文字列 ファイル名 ...文字列が最初に見つかった場所から表示 その他 $ vi -r ファイル名 ...壊れたファイルをリカバリする
カーソル移動
1文字移動 [←] or [h] or [BackSpace] [→] or [l] or [Space] [↑] or [k] or [Ctrl]+[p] [↓] or [j] or [Ctrl]+[n] 数字指定移動 数字[←] or 数字[h] or 数字[BackSpace] 数字[→] or 数字[l] or 数字[Space] 数字[↑] or 数字[k] or 数字[Ctrl]+[p] 数字[↓] or 数字[j] or 数字[Ctrl]+[n] 行移動 [^] ...現在行の先頭位置へ [$] ...現在行の末端位置へ [G] ...最終行の先頭位置へ [-] ...前行の先頭位置へ [Enter] ...次行の先頭位置へ :数字 ...指定行へ 移動 [w] ...1語次へ [b] ...1語前へ [e] ...単語末尾へ
画面スクロール
画面移動 [H] ...画面先頭へ(H: Header の意味) [M] ...画面中央へ(M: Midle の意味) [L] ...画面最終行へ(L: Lower の意味) 1画面分 [Ctrl]+[f] … (f: Foward の意味) [Ctrl]+[b] … (b: Back の意味) 半画面分 [Ctrl]+[d] … (d: Down の意味) [Ctrl]+[u] … (u: Up の意味)
終了
終了 :q ...書込みを行わず終了(quit の意味) :q! ...書込みを行わず強制終了 :wq ...書込み後終了 :wq! ...書込み後強制終了
ファイル操作
書込み (上書き) :w ...書込み保存(w: write の意味) :w! ...強制書込み :w ファイル名 ...別名で書込み :w! ファイル名 ...別名で強制書込み :数字,数字 w ...n行目からn行目までを保存 複数ファイルを編集中に :n ...次のファイルの編集に移る(n: next の意味) :n! ...次のファイルの編集に強制的に移る :rew ...先頭のファイルに移る :arg ...現在何番目のファイルを編集中かを確認 :args ...編集中ファイルの一覧を確認 :rewind ..現在のファイルの変更内容を保存して、リストの最初から編集をやり直す :rewind! ...現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す :e# ...直前の編集ファイルに戻る 読み込み :e ...現在開いているファイルを再度読込み(e: edit の意味) :e! ...現在開いているファイルを再度強制読込み :e ファイル名 ...ファイルを編集用に読込み :e! ファイル名 ...ファイルを編集用に強制読込み
編集
開始 [a] ...カーソルの右から入力開始(a: Add の意味) [A] ...行末から入力開始 [i] ...カーソルの左から入力開始(i: Insert の意味) [I] ...行頭から入力開始 [o] ...現在の行の下に1行挿入し、その行頭から入力開始 [O] ...現在の行の上に1行挿入し、その行頭から入力開始 *入力モードに入る前に入力済みの文字が挿入される 挿入 :r ...現在行の直下に現在のファイルの内容を挿入(r: read の意味) :r ファイル名 ...現在行の直下に別ファイルの内容を挿入 :r! コマンド ...現在位置の直後にシェルコマンドの結果を挿入(ex: !!hogehoge)
削除
削除 [x] ...カーソルの文字を1文字削除 数字[x] ...カーソルから後ろに指定数分削除 [X] ...カーソル直前の文字を1文字削除 数字[X] ...カーソル直前の文字を指定数分削除 行削除 [D] ...カーソルから行の終端までの文字を削除 [d$] ...カーソルから行の最後までを削除 [d^] ...カーソルから行の先頭までを削除 [dd] ...カーソルの行を1行削除 数字[dd] ...カーソルの行をn行削除 :行番号[d] ...指定行削除 :開始行,終了行[d] ...指定範囲行削除 :g/文字列/d ...指定文字列のある行を全て削除 ワード削除 [dw] ...1ワード削除(ワード:前後を空白かTABに挟まれた文字列) 数字[dw] ...指定ワードを削除 [de] ...1ワード削除(dwと異なる点は区切り文字(空白 or TAB)を削除しない) 数字[de] ...指定ワードを削除 [df文字列 ...カーソルから最初に見つかった指定文字列までを削除
コピー&ペースト
行コピー [yy] ...カーソル位置の現在行をコピー 行数[yy] ...カーソル位置の現在行から指定行数分をコピー ワードコピー [yw] ...カーソル位置から1ワード分コピー 数字[yw] ...カーソル位置から指定ワード分コピー その他コピー [yl] ...1文字分コピー [y0] ...カーソル位置から行頭までコピー [y$] ...カーソル位置から行末までコピー ペースト [p] ...コピーした内容をカーソルの後にペースト [P] ...コピーした内容をカーソルの前にペースト
検索
[/]文字列 ...カーソルの後方に検索を行う [?]文字列 ...カーソルの前方に検索を行う [n]文字列 ...次の検索該当文字列へ([/]→後方に [?]→前方に) [N]文字列 ...前の検索該当文字列へ
置換
1文字だけ [r]文字 ...カーソルの文字を1文字だけ違う文字に変更(r: Replace の意味) 数字[r]文字 ...カーソルから指定文字分を違う文字に変更 [R] ...カーソルのからESCを押すまでの文字を上書き更新 ワード(c系) [cw] ...カーソルから1ワード分をESCを押すまで入力した文字に置換 数字[cw] ...カーソルから指定ワード数分をESCを押すまで入力した文字に置換 [ce] ...カーソルから1ワード分をESCを押すまで入力した文字に置換(区切り文字を置換しない) 数字[ce] ...カーソルから指定ワード数分をESCを押すまで入力した文字に置換 [cf]文字列 ...カーソルから最初に見つかった指定文字列までをESCを押すまで入力した文字に置換 [C] ...カーソルから行の最後までをESCを押すまで入力した文字に置換 指定(s系) [s] ...カーソルの文字をESCを押すまで入力した文字に置換 数字[s] ...カーソルから指定文字数分をESCを押すまで入力した文字に置換 [S] ...カーソルから行の最後までをESCを押すまで入力した文字に置換 :s/文字列1/文字列2/ ...カーソル行で最初の「文字列1」のみを「文字列2」に置換する(s: Substitute の意味) :s/文字列1/文字列2/g ...カーソル行の「文字列1」を全て「文字列2」に置換する(g: Global の意味) :s/文字列1/文字列2/c ...カーソル行で最初の「文字列1」を「文字列2」に置換する前に確認が入る(c: Cheange の意味) :行数s/文字列1/文字列2/ ...指定行で最初の「文字列1」のみを「文字列2」に置換する :行数s/文字列1/文字列2/g ...指定行で「文字列1」を全て「文字列2」に置換する :%s/文字列1/文字列2/g ...全ての行で「文字列1」を全て「文字列2」に置換する :開始行,終了行s/文字列1/文字列2/ ...指定範囲行内で各行の最初の「文字列1」を「文字列2」に置換する :開始行,終了行s/文字列1/文字列2/g ...指定範囲行内の「文字列1」を全て「文字列2」に置換する :開始行,$s/文字列1/文字列2/g ...指定開始行から最終行までの「文字列1」を全て「文字列2」に置換する :&, & ...直前のsコマンドの繰り返し 小文字、大文字 ~ ...カーソル行の大文字⇔小文字を置換 (置換完了のESCは不要) 数字~ ...カーソルから指定文字分の大文字⇔小文字を置換 (置換完了のESCは不要) 結合(改行をスペースに置換) [J] ...現在行と直下の行を結合する 数字[J] ...現在行から指定行数下を結合する
取り消し
[u] ...直前の操作をやめる(u: Undo の意味) [U] ...行全体に操作を取りやめる [.] ...直前の変更操作の繰り返し Ctrl-[R] ...取り消しの取り消し
ウインドウ操作
:sp ファイル名 ...ウインドウを横に分割 :vs ファイル名 ...ウインドウを縦に分割 :q,:only ...カーソルのあるウインドウ以外を全部閉じる :new ...空の横ウインドウを開く :vnew ...空の縦ウインドウを開く Ctrl-w w ...次のウインドウに移動 Ctrl-w p ...前のウインドウに移動 Ctrl-w o ...現在のウインドウ以外を閉じる
バッファ
:ls ...バッファリストの表示 :b ...バッファ バッファを表示 :bn ...次のバッファを表示 :bp ...前のバッファを表示 :bd ...バッファ削除 バッファ番号指定は :bd 5などで指定可能
その他
:set nu ...行番号を表示する :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 ファイル名 ...今のファイルと、他のファイルとの差分を取るコマンド
改行コード入力
^M : ctl + v ctl + m