検索

コマンド vi ( テキストエディタ )

コマンド vi はUNIX系サーバーの設定ファイル編集に必須です. 基本操作は必ず覚えておきましょう.
command vi

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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

もくじ