vi
vi(ヴィーアイ)は、emacs(イーマックス)と共にUNIX環境で人気があるテキストエディタです。ビル・ジョイによって開発され、名前の由来はVIsual editorないしVisual Interfaceとされる。Unix開発者もしくはユーザーではだいたいこのviかemacsのどちらかを標準のテキストエディタとして使用しています。Secure Shell(セキュアシェル)とよばれる暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルを経由した通信ではGUIが使用できない場合があるためテキストなどを編集する際は必然的にユーザーはviかemacsのどちらかを使わなければならなくなります。GUIが使えない環境とはつまり、マウスが使えないということを意味しており、viやemacsは当然としてアイコンなどなく、操作のすべてはキーボードから操作できるように設計されています。今回は比較的操作の癖が少ないviを紹介していこうと思います。環境としてはほぼ全てのUnixマシンにはあらかじめインストールされているので覚えるようにしてください。viとemacsなどのエディタはキーボードで操作と入力をコントロールするため編集モードと入力モードという機能を備えています。
コマンド入力モード切替に関するコマンド | ||
ESC | コマンド入力モードへ切り替える | |
カーソル移動に関するコマンド | ||
j | カーソルを次の行に移動する | |
k | カーソルを前の行に移動する | |
h | カーソルを前の文字に移動する | |
l | カーソルを次の文字に移動する | |
^ | カーソルを行頭に移動する | |
$ | カーソルを行末に移動する | |
テキスト入力モードへの切り替えに関するコマンド | ||
i | カーソルの前からテキストを入力する | |
a | カーソルの次の位置からテキストを入力する | |
I | 行の先頭からテキストを入力する | |
A | 行の末尾からテキストを入力する | |
o | カーソルと次の行の間にテキストを入力する | |
O | カーソルと前の行の間にテキストを入力する | |
削除、コピー、ペーストに関するコマンド | ||
x | カーソル位置にある文字を削除する。n文字のあとに入力するとカーソル位置からn文字削除する | |
X | カーソル位置の手前の文字を削除する。n文字のあとに入力するとカーソル位置の手前のn文字削除する | |
d | カーソル位置からカーソル移動コマンドで指定した位置まで切り取る | |
D | カーソル位置から行末まで切り取る | |
dd | カーソルが位置する行を切り取る。n文字のあとに入力するとカーソル位置からn行を切り取る | |
y | カーソル位置からカーソル移動コマンドで指定した位置までをコピーする | |
yy | カーソルが位置する行をコピーする | |
p | コピー、または切り取った内容をカーソルの次の行(後ろ)に貼り付ける | |
P | コピー、または切り取った内容をカーソルの前の行(手前)に貼り付ける | |
ファイル操作に関するコマンド | ||
: W | ファイルに保存する | |
: W filename | ファイルに名前filenameをつけて保存する | |
: e filename | ファイルfilenameを開く | |
: r filename | カーソルの次の行にファイルfilenameを挿入する | |
: -r filename | カーソルの前の行にファイルfilenameを挿入する | |
: wq | ファイルを保存して終了する | |
: q | viを終了する | |
文字列の検索に関するコマンド | ||
f | カーソルと同じ行にある次の文字を検索する | |
F | カーソルと同じ行にある前の文字を検索する | |
/ regex | 文字列にマッチするカーソル以降の文字列を検索する(前方検索) | |
? regex | 文字列にマッチsるカーソル以降の文字列を検索する(後方検索) | |
n | 前回と同じ方向に検索を続ける | |
N | 前回と逆方向に検索を続ける | |
文字列の書き換え、置換に関するコマンド | ||
~ | 大文字←→小文字の変換 | |
c | カーソル位置から、カーソル移動コマンドで指定した領域を書き換える | |
cc | 現在行の内容をすべて書き換える | |
C | カーソル位置から行末までを書き換える | |
r | カーソル位置の1文字を書き換える。書き換え後はコマンドモードに戻る | |
R | カーソル位置以降の文字列を範囲を指定せずに書き換える | |
s | カーソル位置の1文字を書き換える。書き換え後はテキスト入力モードに戻る | |
S | ccコマンドと同じ | |
: s/regex/string | カーソルと同じ行にある次の文字列regexをstringに置換する | |
: s/regex/string/g | カーソルと同じ行にある全ての文字列regexをstringに置換する | |
: m,ns/regex/string/g | m行目からn行目の間のすべての文字列regexをstringに置換する | |
: %s/regex/string/g | ファイル内のすべての文字列regexをstringに置換する | |
その他のviの操作に関するコマンド | ||
u | 最後に実行したコマンドを取り消す | |
. | 直前に実行したコマンドを取り消す | |
: !command | コマンドcommandを実行する | |
: r!command | コマンドcommandの実行結果をカーソルの次の行に挿入する | |
: -r!command | コマンドcommandの実行結果をカーソルの前の行に挿入する | |
: q! | 強制的に終了する | |
: w! | 強制的に書き込む | |
: e! | 強制的にファイル(バッファ)を切り替える |
emacs
emacs(イーマックス)はviと並んで代表的なエディタです。emacsでは、文字キーを押すとその文字がそのまま入力されます。カーソルの移動やファイルの書き込みなどの操作は、Ctrlキーやメタキーと文字キーを組み合わせることで行うことができます。表のESCキーは正しくはメタキーですが、一般的にESCキーに割り当てられているのでこれに従って表記しています。メタキーを押す方法には、ESCキーを押してから何らかのキーを押す方法と、Altキーと同時に何らかのキーを押す方法とがあります。たとえば、編集したファイルを保存する場合は、Ctrl+d Ctrl+s と続けて入力します。プログラムを終了する場合には、Ctrl+x Ctrl+c と入力します。また、X Window System上で動かす場合、マウスでメニューを選択することで同様の操作を行えます。
カーソルの移動に関するコマンド | |
Ctrl+b | カーソルを前の文字へ移動する |
Ctrl+f | カーソルを次の文字へ移動する |
Ctrl+p | カーソルを前の行へ移動する |
Ctrl+n | カーソルを次の行へ移動する |
Ctrl+a | カーソルを行頭に移動する |
Ctrl+e | カーソルを行末に移動する |
ESC b | カーソルを前の単語へ移動する |
ESC f | カーソルを次の単語へ移動する |
ESC a | カーソルを段落の先頭へ移動する |
ESC e | カーソルを段落の末尾へ移動する |
Ctrl+v | カーソルを1画面分次へ移動する |
ESC v | カーソルを1画面分前へ移動する |
ESC < | カーソルをファイルの先頭へ移動する |
ESC > | カーソルをファイルの末尾へ移動する |
ファイル操作に関するコマンド | |
Ctrl+x Ctrl+s | ファイルに保存する |
Ctrl+x Ctrl+w | ファイルに名前を付けて保存する |
Ctrl+x Ctrl+f | ファイルを開く |
Ctrl+x i | ファイルを挿入する |
文字列検索に関するコマンド | |
Ctrl+s | カーソル以降を前方検索(インクリメンタルサーチ)する |
Ctrl+r | カーソル以前を後方検索(インクリメンタルサーチ)する |
Ctrl+s Ctrl+k | カーソル以降を前方検索(文字列を入力後、検索)する |
Ctrl+r Ctrl+k | カーソル以前を後方検索(文字列を入力後、検索)する |
ESC | 検索を終了する |
文字列の置換に関するコマンド | |
ESC % | 文字列の置換を対話的に行う |
コピー、カット、ペーストに関するコマンド | |
Ctrl+Space | マークを設定する |
Ctrl+w | リージョンを削除する |
ESC w | リージョンをコピーする |
Ctrl+k | カーソルから行末までをカットする |
Ctrl+y | 直前にカットまたはコピーしたリージョンをペーストする |
ESC y | 繰り返し入力した分だけ過去にカット、コピーしたものをさかのぼってペーストする |
操作に関するコマンド | |
Ctrl+u | 操作を取り消す |
Ctrl+g | コマンド操作をキャンセルする |
Ctrl+x Ctrl+c | Emacsを終了する |
マルチバッファ、ウインドウの操作に関するコマンド | |
Ctrl+x 2 | ウインドウを上下に分割 |
Ctrl+x 3 | ウインドウを左右に分割 |
Ctrl+x 0 | 分割されたウインドウのうち、カーソルのあるほうを消す |
Ctrl+x 1 | 分割されたウインドウのうち、カーソルがないほうを消す |
Ctrl+x o | 分割されたウインドウ間でカーソルを移動する |
Ctrl+x b | 表示するバッファを切り替える |
Ctrl+x Ctrl+b | バッファの一覧を表示する |
Ctrl+x k | バッファを削除する |
日本語入力、漢字変換(Canna、egg-anthyの操作) | |
Ctrl+o | 入力モード切替(Canna) |
Ctrl+\ | 入力モード切替(egg-anthy) |
Space | 漢字変換 |
Enter | 決定 |
Ctrl+i | 文節を1文字長く切り直す |
Ctrl+o | 文節を1文字短く切り直す |
Ctrl+f | 次の文節に移動する |
Ctrl+b | 前の文節に移動する |
Ctrl+h | 変換の取り消し(Canna) |
Ctrl+f | 次の候補へ進む |
Ctrl+b | 前の候補へ戻る |
Ctrl+n | 次の候補画面へ進む |
Ctrl+p | 前の候補画面へ戻る |
キーボードマクロに関するコマンド | |
Ctrl+x ( | マクロ定義を開始する |
Ctrl+x ) | マクロ定義を終了する |
Ctrl+x e | 最後に定義したマクロを実行する |
そのほかのemacsの操作に関するコマンド | |
ESC x auto-fill-mode | 各行の文字数を自動的に設定する |
ESC x canna-touroku-region | 漢字と読みを新しく登録する |
ESC x goto-line | 行番号で指定した行へ移動する |