サーバ構築/基礎/vi操作
◆vi/vim
viの主要コマンド形態は5種類ある。
 ・動作モード
 ・移動系
 ・編集系
 ・検索置換系
 ・設定系
2017年現在、LinuxOS同梱のviはvimに置き換わっている。vi -vでバージョンとvimであることが確認できる。
- 動作モード(見辛さの都合でコロン:とピリオド.を全角にしている。実際は半角:コロン、半角.ピリオドを使用。以下、同じ。)
		| NORM | ノーマル | へ戻る | esc | 
		| NORM | ノーマル | へ戻る | Ctrl-[ | 
		| VISUAL | ビジュアル | へ入る | v | 
		| VISUAL | ビジュアル | 矩形選択 | Ctrl-v | 
		| VISUAL | ビジュアル | 矩形削除 | d | 
		| INS | インサート | 現位置 | i | 
		| INS | インサート | 右位置 | a | 
		| COMD | コマンドライン | へ戻る | : | 
		|  |  |  |  | 
		| COMD | 画面 | 横分割 | :sp [file.name] | 
		| COMD | 画面 | 横分割 | :vs [file.name] | 
		| COMD | 画面 | 次画面移動 | Ctrl+w w | 
		| COMD | 画面 | 次画面移動 | Ctrl+w p | 
		| COMD | 画面 | 閉じる | Ctrl-w o | 
		| COMD | 画面 | 他閉じる | :only | 
		| COMD | 画面 | 移動 | Ctrl+w hjkl | 
		| COMD | 画面 | 位置変更 | Ctrl+w HJKL | 
※注意
 ・矩形モード(VISUAL MODE)後の操作はコンソールによって挙動が異なる
 ・画面の縦分割はコンソールによって出来ないものもある
 ・コンソールによっては誤操作でコンソールを落としてしまう可能性がある
		| 前画面 | 1行目 | - | gg |  |  |  |  |  | Ctrl-b | 
		| 2行目 |  | {段 |  |  |  |  |  | 
		| 現在 画面域
 | 3行目 | H |  | (文 |  |  |  |  | 
		| 4行目 |  |  |  | k |  |  | Ctrl-u | 
		| 5行目 | O/^ | b/B | h | ◆現在地 | l | w/W | $ | 
		| 6行目 | M |  |  | j |  |  |  | 
		| 7行目 |  | 括% |  |  |  |  |  | 
		| 8行目 |  |  | )文 |  |  |  | Ctrl-d | 
		| 9行目 | L |  |  |  |  |  |  | 
		| 次画面 | 10行目 |  | }段 |  |  |  |  |  | 
		| 11行目 | G |  |  |  |  |  | Ctrl-f | 
		| モード |  |  |  | 
		| COMD | 挿入 | 行頭 | I | 
		| COMD | 挿入 | 行末 | A | 
		| COMD | 挿入 | 次行 | o | 
		| COMD | 挿入 | 前行 | O | 
		| COMD | 挿入 | 後半削除 | C | 
		| COMD | 置換 | 現文字 | r | 
		| COMD | 置換 | 複数 | R | 
		| COMD | 置換 | 改行SP置換 | J | 
		| COMD | 置換 | 現大小 | チルダ | 
		| COMD | 削除 | 1文字 | x | 
		| COMD | 削除 | 1行 | dd | 
		| COMD | 削除 | 1単語 | dw | 
		| COMD | 削除 | 特定1単語 | diw | 
		| COMD | 削除 | 次語まで | dt* | 
		| COMD | 削除 | 現地か行末 | D | 
		| COMD | アンドゥ | - | u | 
		| COMD | リドゥ | - | Ctrl-r | 
		| COMD | リドゥ | 直前操作 | . | 
		| COMD | インデント | 追加 | >> | 
		| COMD | インデント | 削除 | << | 
 ・
正規表現は検索、置換ともに利用できる。(:set magic?でmagicモード可否が確認できる)
		| COMD | 検索 | 後方 | / | 
		| COMD | 検索 | 前方 | ? | 
		| COMD | 検索 | 現単語後方 | g* | 
		| COMD | 検索 | 現単語前方 | g# | 
		| COMD | 検索 | 次候補 | n | 
		| COMD | 検索 | 前候補 | N | 
		| COMD | 検索モード | :very magic | \v | 
		| COMD | 検索モード | :very nomagic | \V | 
		| COMD | 置換 | 現単語 |  | 
		| COMD | 置換 | 全体 | %s/before/after/g | 
		| COMD | 置換 | 現在行 | s/before/after/g | 
		| COMD | 置換 | 指定行 | 10,20s/before/after/g | 
		| COMD | ar | ar(gs)、パターンを保存できる | 
		| COMD | args | ar(gs)、パターンを保存できる | 
		| COMD | autoindent | 改行時に前の行のインデントを継続する | 
		| COMD | autoread | 開いているがvim上で変更のないファイルについて、外部で変更があった時に自動的に読み込み直すか? | 
		| COMD | b 数値 | バッファに直接移動 | 
		| COMD | backspace | <BS>キーの影響範囲を指定。詳細はヘルプを参照。 | 
		| COMD | backup | ファイルの保存時に、保存前のファイルをバックアップするか? | 
		| COMD | cindent | C言語スタイルのインデント機能が有効 | 
		| COMD | clipboard | OSのクリップボードをどのレジスタと関連付けるか。 | 
		| COMD | cmdheight | 画面最下部(ステータス行より下)のメッセージ表示欄の行数。これを超える行数のメッセージがある場合は"-- 継続 --"のプロンプトが表示される。 | 
		| COMD | cn | エラーの発生した場所まで移動 | 
		| COMD | confirm | 保存されていないファイルがあるときに、vim を終了させようとした時に保存の確認を行うか? | 
		| COMD | ctags *.c | 指定したファイルの全てのタグの一覧表ファイルを生成 | 
		| COMD | cursorcolumn | カーソル位置の縦一桁(カラム)の背景色を変える | 
		| COMD | cursorline | カーソル行の背景色を変える | 
		| COMD | cwin | vimgrepの検索結果の一覧が表示 | 
		| COMD | cwindow |  | 
		| COMD | e ++enc=文字コード | 表示を指定の文字コードに変更 | 
		| COMD | errorbells | エラーメッセージの表示時にビープ音を鳴らす。(メッセージを伴わないエラーにはこの項目は適用されない。) | 
		| COMD | expandtab | タブ入力を複数の空白入力に置き換える (既存のタブには影響しない) | 
		| COMD | fileencoding=文字コード | ファイルエンコードを指定して保存しなおす | 
		| COMD | gdefault | 置換の時、gを指定しなくても同一行で複数回置換が行われる。 | 
		| COMD | grep |  | 
		| COMD | gvim -t a_function | 定義のある位置からカーソルが始める | 
		| COMD | helpheight | ヘルプ画面の行数 | 
		| COMD | hidden | 編集中で保存されていないファイルがあるときに他のファイルを開けるか? | 
		| COMD | history | コマンドラインモードで保存する履歴件数。履歴上のコマンドはCTRL-P/CTRL-N で再び表示することが出来ます。 | 
		| COMD | hlsearch | 検索文字列をハイライトするか? | 
		| COMD | ignorecase | 検索で大文字と小文字を区別しない。 | 
		| COMD | ignorecase と両立する。 | オン/オフ | 
		| COMD | incsearch | エンターキーで確定する前から、文字が入力されるたびに検索を行うか? | 
		| COMD | laststatus | 画面最下部のステータス行を0:全く表示しない 1:ウィンドウが2つ以上あるときだけ表示 2:常に表示 | 
		| COMD | list | 不可視文字の表示 | 
		| COMD | listchars | 不可視文字を表示する場合、表示に使われる文字 | 
		| COMD | ls | 編集中のバッファ一覧を表示 | 
		| COMD | magic | メタ文字として扱う文字を`magic`で指定(`.`,`*`,`$`,`^`,`[`などを`\`で前置なしでメタ文字として扱う) | 
		| COMD | make | makeコマンドを実行し、その実行結果を取得 | 
		| COMD | mouse | マウスによるクリックやドラッグに対してどう反応するか。 | 
		| COMD | noignorecase | 大文字と小文字を無視しない 
 | 
		| COMD | nomagic | メタ文字として扱う文字を`nomagic`で指定(`$`,`^`などを`\ `で前置なしでメタ文字として扱う) | 
		| COMD | nosmartcase | ignorecase'を上書きしない | 
		| COMD | number | 行番号表示 | 
		| COMD | ruler | 画面右下のカーソル位置表示 | 
		| COMD | scrolloff | ウィンドウの上端、下端にカーソルが移動した時に、 | 
		| COMD | scrolloff | 画面の左右の端でカーソル先の視界を何行確保するか。 | 
		| COMD | ''se nu'' | 行番号を表示 | 
		| COMD | set enc? | 文字コードを確認 | 
		| COMD | set fenc? | ファイルエンコードを確認 | 
		| COMD | set fenc=euc-jp | ファイルエンコードを指定して保存しなおす | 
		| COMD | shellslash | Windows 環境でフォルダの区切り文字をバックスラッシュ(\)の代わりにスラッシュ(/)にする。(Mac OS X / Linux では常にスラッシュ(/)でこのオプションは影響しない。) | 
		| COMD | shiftwidth | 自動インデントでずれる幅 | 
		| COMD | showmatch | カーソル位置に括弧があった場合、対応する括弧を強調表示する | 
		| COMD | sidescroll | 画面の左右の端でスクロールが発生した場合、何文字ずつスクロールするか。 | 
		| COMD | sidescrolloff | 画面の左右の端で | 
		| COMD | sidescrolloff | ウィンドウの上端、下端にカーソルが移動した時に、カーソル先の視界を何桁確保するか。 | 
		| COMD | smartcase | 検索文字列に大文字と小文字が混在した場合に限り、大文字と小文字を区別して検索。 | 
		| COMD | smartindent | 改行時に入力された行の末尾に合わせて次の行のインデントを増減する | 
		| COMD | softtabstop | 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅 | 
		| COMD | swapfile | 編集中のファイルをスワップファイルとして保存するか? | 
		| COMD | t_vb | ビジュアルベルの表示内容。空文字列なら何もしない。 | 
		| COMD | tablast | タブ 末尾画面移動 | 
		| COMD | tabnew | タブ機能(vim7.3以上) | 
		| COMD | tabnext | タブ 次画面移動 | 
		| COMD | tabstop | 画面上でタブ文字が占める幅 | 
		| COMD | vimgrep (words) [file] | file先を検索。現ファイルを検索する場合はfile名に%を使う | 
		| COMD | visualbell | ビープ音をすべて視覚表示(ビジュアルベル)に置き換える。 | 
		| COMD | whichwrap | 行頭/行末で左/右に移動した時に行をまたぐ移動が出来るかどうか。詳細はヘルプを参照。 | 
		| COMD | wildmenu | コマンドラインモードで<Tab>キーによるファイル名補完を有効にする | 
		| COMD | wildmode | コマンドラインモードでのファイル名補完の挙動を指定します。詳細はヘルプを参照。 | 
		| COMD | wrapscan | 最後尾の検索候補にたどり着いたら、次に先頭に戻る。 | 
 エスケープ文字
		| \ | 
		| . | 
		| * | 
		| + | 
		| ? | 
		| = | 
		| { | 
		| ^ | 
		| $ | 
		| ( | 
		| ) | 
		| | | 
		| [ | 
		| & | 
		| @ | 
|
		| / | 
テキストエディタ―の人気あるものだ、
VSCodeやSublimeText、Emaxなど。
IDEでは、Eclipse/日本語化版のPleiades、VisualStudioなどがある。
だがこれらは元々OSに同梱されているわけではない。
OSに同梱されているのは、Linux系OSならvi/vim。
Windowsならコマンドプロンプト/PowerShell。
MacOSならテキストエディタとターミナル。
好き嫌いに関わらずインフラ系は当然、アプリ開発系でもサーバに触れる
機会がある者は好まざるとも使わざるを得ないシーンが非常に多い。
vi/vimでの操作を迅速に行えるようにするために、1つでも多くのコマンドを覚えておく必要がある。
好まざるともと言ったのは、サーバ管理を担当するとなるとシェルのバッチ、crontabや各種コンフィグファイルも
vi/vimを使って書くことが多いからだ。
余談だがvimの作者が今ならこんなコマンド体系にはしなかったと悔やんでいた記事があった。
vimはLinuxのminimal版でさえ必ず入っているツールなので使いこなせられるレベル
までになれれば相当作業が早くなる。
ノーマル/コマンドモードとインサート(編集)モードを行き来することが非常に
多いので、編集モードからコマンドモードに戻る際はEscキーではなく、Ctrl+[を
使うようにすると少しは楽になる。
最終更新:2017年10月29日 04:57