ex Editor

# exのコマンド構文
:[行範囲]command[オプション]
# オプション
<dl>
<dt>!</dt>
<dd>コマンドの振る舞いを少し変えたいときに使用</dd>
<dt>count</dt>
<dd>コマンドを繰り返す回数</dd>
<dt>file</dt>
<dd>コマンドの対象となるファイル名<br>
%は、現在のファイル名。#は、直前に編集していたファイル名</dd>
</dl>

# 行範囲
範囲指定が無い場合は、現在の行がコマンドの実行対象
数行に渡り範囲（行xから行y）を指定する場合
`x,y`または`x;y`
全行の指定`1,$`または`%`
### 行指定表現
<dl>
<dt>.</dt>
<dd>現在の行</dd>
<dt>0</dt>
<dd>ファイルの先頭</dd>
<dt>$</dt>
<dd>ファイルの最終行</dd>
<dt>n</dt>
<dd>先頭からn番目の行</dd>
<dt>+[n]</dt>
<dd>現在のn行下（nが無ければ、1行下）</dd>
<dt>-[n]</dt>
<dd>現在のn行上（nが無ければ、1行上）</dd>
<dt>/pattern/</dt>
<dd>下方に正規表現patternを探して、最初にマッチした行</dd>
<dt>?pattern?</dt>
<dd>上方に正規表現patternを探して、最初にマッチした行</dd>
<dt>x-n</dt>
<dd>行xのn行上にある行</dd>
<dt>x+n</dt>
<dd>行xのn行下にある行</dd>
<dt>'x</dt>
<dd>xという名前でマークした行</dd>
<dt>''</dt>
<dd>直前にマークした行</dd>
</dl>

### 行範囲指定表現
<dl>
<dt>x,y</dt>
<dd>行xから行yまで</dd>
<dt>x;y</dt>
<dd>行xから、現在行をxとして、見つけた行yまで</dd>
<dt>x</dt>
<dd>xで表される単一の行</dd>
<dt>%</dt>
<dd>ファイル内のすべての行</dd>
</dl>

# アルファベット順コマンド一覧
<table>
<thead>
<tr>
<th>名前</th> <th>説明</th>
</tr>
</thead>
<tr>
<td>abbrev<br>ab</td>
<td><b>ab</b> [<em>string text</em>]<br>
略語割り当て。<em>string</em>と入力した場合に<em>text</em>と解釈されるように、<em>string</em>にキーを割り当てる。<em>string</em>も<em>text</em>も省略されて場合は、現在のキーの一覧を表示。<br>
<em>text</em>に改行を含める場合、Ctrl-Vに続いて、RETURNキーを入力する。<br>
画面上は、「^M」と表示される。</td>
</tr>
<tr>
<td>append</td>
<td>[<em>address</em>]<b>a</b>[!]<br>
<em>text</em><br>
指定された行<em>address</em>に文章<em>text</em>を挿入。文章の終わりは、ピリオドだけの行で知らせる。<em>address</em>の指定が無いときは、現在の行に挿入される。[!]を指定した場合は、「自動字下げ（autoindent）」の設定が変更される。<br>有効だったら無効。無効だったら有効。</td>
</tr>
<tr>
<td>args</td>
<td><b>ar</b><br>
ファイル名引数を表示。現在編集中のファイル名は[]内に表示される。</td>
</tr>
<tr>
<td>change</td>
<td>[<em>address</em>]<b>c</b>[!]<br>
<em>text</em><br>
行範囲<em>address</em>にある行の内容を<em>text</em>に置き換える。「!」を指定した場合は、「自動字下げ（autoindent）」の設定が変更される。</td>
</tr>
<tr>
<td>copy</td>
<td>[<em>address</em>]<b>co</b>[<em>distination</em>]<br>
行範囲<em>address</em>にある行を<em>distination</em>行目の後にコピーする。
</td>
</tr>
<tr>
<td>delete</td>
<td>[<em>address</em>]<b>d</b> [<em>buffer</em>]<br>
行範囲<em>address</em>にある行を削除。<em>buffer</em>の指定がある時は、その<em>buffer</em>に削除行を保存または追加。</td>
</tr>
<tr>
<td>edit</td>
<td><b>e</b>[!][<em>+n</em>] [<em>file</em>]<br>
<em>file</em>の編集を開始。「!」が指定された場合は、現在編集中のファイルに加えた変更を破棄する。<em>file</em>が指定されてないときは、現在編集中のファイルを別バッファで編集開始。<em>+n</em>指定時はそのファイルのn行目に移動。<br>
:e#　直前に開いていたファイルの編集に戻る。</td>
</tr>
<tr>
<td>file</td>
<td><b>f</b> [<em>filename</em>]<br>
現在編集中のファイル名を<em>filename</em>に変更。<em>filename</em>が指定されていないとには、ファイルのステータスを表示。</td>
</tr>
<tr>
<td>global</td>
<td>[<em>address</em>]<b>g</b>[!]/<em>pattern</em>/[<em>commands</em>]<br>
正規表現パターン<em>pattern</em>を含む全ての行に対して、コマンド<em>commands</em>を実行する。行範囲<em>address</em>がある時は範囲内の全行に対して実行する。<em>commands</em>指定が無いときは、<em>pattern</em>を含む全ての行を表示。[!]が使用された場合は、<em>pattern</em>を含まない行に対して<em>commands</em>を実行する。<br>
:g/Name/s/tom/Tom/　Nameがある行のtomをTomに置き換える。</td>
</tr>
<tr>
<td>insert</td>
<td>[<em>address</em>]<b>i</b>[!]<br>
text<br>
指定された行<em>address</em>にの前に文章textを挿入。文章の終わりは、ピリオドだけの行で知らせる。<em>address</em>の指定が無いときは、現在の行の前に挿入される。「!」を指定した場合は、「自動字下げ（autoindent）」の設定が変更される。</td>
</tr>
<tr>
<td>join</td>
<td>[<em>address</em>]<b>j</b>[!][<em>count</em>]
<br>
行範囲<em>address</em>にある行を1行にまとめる。その後、「.」の後の空白は空白文字2個に変更し、「)」の後の空白は削除し、それ以外の空白は1つの空白に置き換えられる。「!」を指定すれば、この変更が行われない。</td>
</tr>
<tr>
<td>k</td>
<td>[<em>address</em>]<b>k</b> [<em>char</em>]<br>
行<em>address</em>を文字<em>char</em>でマークする。'<em>char</em>を入力すればマーク箇所に戻る。</td>
</tr>
<tr>
<td>list</td>
<td>[<em>address</em>]<b>l</b>[<em>count</em>]<br>
行範囲<em>address</em>内のタブを「^I」として、行末を「$」として表示する。効果は一時的だが、:set listコマンドと同様の動き。</td>
</tr>
<tr>
<td>map</td>
<td><b>map</b>[!][<em>char</em> <em>commands</em>]<br>
コマンド群<em>commands</em>を<em>char</em>という名のキーボードマクロとして定義。<em>char</em>には任意の1文字、またはファンクションキーを意味する。「#n」を指定。「!」を使用した場合は、入力モード内でマクロを作成する。引数指定が無いときは現在定義されているマクロを一覧表示。</td>
</tr>
<tr>
<td>mark</td>
<td>[<em>address</em>]<b>ma</b> [<em>char</em>]<br>
行<em>address</em>を任意の小文字<em>char</em>でマークする。'<em>char</em>を入力すればマークした位置に戻る。kコマンドと同じ。</td>
</tr>
<tr>
<td>move</td>
<td>[<em>address</em>]<b>m</b>[<em>distination</em>]<br>
行範囲<em>address</em>にある行を<em>distination</em>行目の後に移動する。</td>
</tr>
<tr>
<td>next</td>
<td><b>n</b>[!][[+<em>command</em>]<em>filelist</em>]<br>
編集対象ファイル一覧の中にある次のファイルの編集に移る。ファイル一覧はargsコマンドで表示される。ファイル名を<em>filelist</em>で指定した際には、編集対象ファイル一覧が置き換えられ、その中の最初のファイルの編集を始める。<em>command</em>（空白を含んではいけない）が指定された場合には、編集終了後に<em>command</em>が実行される。</td>
</tr>
<tr>
<td>number</td>
<td>[<em>address</em>]<b>nu</b>[<em>count</em>]<br>
行範囲<em>address</em>にある行を、行番号付きで表示。numberコマンドの略記としてはnuに加えて、「#」も有効。行数<em>count</em>には<em>address</em>以降の何行を表示するか指定できる。</td>
</tr>
<tr>
<td>open</td>
<td>[<em>address</em>]<b>o</b>[/<em>pattern</em>/]<br>
行範囲<em>address</em>にある行または<em>pattern</em>に一致する行を表示し、オープンモードに移る。オープンモードを開始、終了するにはQを入力する。オープンモードでは通常のviコマンドが使用できるが、その対象は1度に1行に限る。</td>
</tr>
<tr>
<td>preserve</td>
<td><b>pre</b><br>
現在編集中のバッファを、システムがクラッシュした時と同じように保存する。</td>
</tr>
<tr>
<td>print</td>
<td>[<em>address</em>]<b>p</b>[<em>count</em>]<br>
行範囲<em>address</em>で指定された行を表示。<em>address</em>を単一行にして、<em>count</em>で行指定することもできる。略記にはpに加えてPも使用できる。<br>
:100;+5p　100～105行目を表示。</td>
</tr>
<tr>
<td>put</td>
<td>[<em>address</em>]<b>pu</b> [<em>char</em>]<br>
名前付きバッファ<em>char</em>に保存されている、削除またはコピーされた行を行<em>address</em>の次の行に貼り付ける。<em>char</em>の指定がないときは、直前に削除またはコピーされた行を貼り付ける。</td>
</tr>
<tr>
<td>quit</td>
<td><b>q</b>[!]<br>
現在編集中のセッションを終了。「!」を指定すると最後の書き込み時以降になされた変更を保存せずに終了する。編集ファイルリスト内に一度もアクセスされなかったファイルがある場合はqを2度入力するかq!で終了する。</td>
</tr>
<tr>
<td>read</td>
<td>[<em>address</em>]<b>r</b> [<em>file</em>]<br>
ファイル<em>file</em>を読み込み、指定された行の後ろに挿入。ファイルfileの指定が無ければ現在編集中のファイルが読み込まれる。</td>
</tr>
<tr>
<td>read</td>
<td>[<em>address</em>]<b>r</b>!<em>command</em><br>
Linux <em>command</em>の実行結果を、行<em>address</em>の後ろに読み込む。</td>
</tr>
<tr>
<td>recover</td>
<td><b>rec</b><br>
システム保存領域から、ファイルfileを復旧する。</td>
</tr>
<tr>
<td>rewind</td>
<td><b>rew</b>[!]<br>
編集ファイルリスト内の最初のファイルの編集に戻る。「!」が指定された場合は、未保存の変更を書き込まずに先頭のファイルに移動する。</td>
</tr>
<tr>
<td>set</td>
<td><b>se</b> <em>parameter1 parameter2</em> ...<br>
オプションに値を設定。引数<em>parameter</em>が指定されてないときは、デフォルト値と違う値が設定されているオプションを表示。有効か無効かになるオプションは<em>parameter</em>としてoptionあるいはnooptionと表記すれば設定できる。その他のオプションはoption=valueという形で設定する。allを設定すれば現在の設定を表示する。</td>
</tr>
<tr>
<td>shell</td>
<td><b>sh</b><br>
新たなシェルを起動。シェルを終了すると編集が再開される。</td>
</tr>
<tr>
<td>source</td>
<td><b>so</b> <em>file</em><br>
ファイル<em>file</em>を読み込み、その中にあるexをコマンドを実行。</td>
</tr>
<tr>
<td>substitute</td>
<td>[<em>address</em>]<b>s</b>[/<em>pattern</em>/<em>replacement</em>/][<em>option</em>][<em>count</em>]<br>
行範囲<em>address</em>内のパターン<em>pattern</em>を別のパターン<em>replacement</em>に置き換える。<em>pattern</em>も<em>replacement</em>も省略された場合には前回の置換を繰り返す。<em>count</em>を使う場合には、行<em>address</em>から何行に対して置換を実行するか指定する。<br>
option<br>
<dl>
<dt>c</dt>
<dd>置換実行前に確認。</dd>
<dt>g</dt>
<dd>行内のすべての<em>pattern</em>を置換。</dd>
<dt>p</dt>
<dd>置換を行った最後の行を表示。</dd>
</dl>
</td>
</tr>
<tr>
<td>t</td>
<td>[<em>address</em>]<b>t</b><em>distination</em><br>
行範囲<em>address</em>にある行を、行<em>distination</em>の後にコピーする。<br>
copyコマンドと同じ。</td>
</tr>
<tr>
<td>tag</td>
<td>[<em>address</em>]<b>ta</b> <em>tag</em><br>
編集対象を、タグ<em>tag</em>で見つけたファイルに変更。</td>
</tr>
<tr>
<td>unabbreviate</td>
<td><b>una</b> <em>word</em><br>
abbreviateで定義した略語を<em>word</em>を削除する。</td>
</tr>
<tr>
<td>undo</td>
<td><b>u</b><br>
直前の編集コマンドでなされた変更を取り消す。</td>
</tr>
<tr>
<td>unmap</td>
<td><b>unm</b>[!]<em>char</em><br>
mapで定義されたキーボードマクロの内、<em>char</em>を削除する。入力モード用マクロの解除には「!」を指定する。</td>
</tr>
<tr>
<td>v</td>
<td>[<em>address</em>]<b>v</b>/<em>pattern</em>/[<em>commands</em>]<br>
パターン<em>pattern</em>を含まない行に対してコマンド<em>commands</em>を実行。<em>commands</em>の指定が無いときは、<em>pattern</em>を含まない行をすべて表示。</td>
</tr>
<tr>
<td>version</td>
<td><b>ve</b><br>
エディタのバージョンを表示。</td>
</tr>
<tr>
<td>visual</td>
<td>[<em>address</em>]<b>vi</b>[<em>type</em>][<em>count</em>]<br>
ビジュアルモード（vi）に移り、<em>address</em>で指定した行に移動。終了には、<b>Q</b>コマンドを使用する。位置を決める<em>type</em>には「-」「^」「.」のどれかを指定する。引数<em>count</em>はウィンドウのサイズ。
</td>
</tr>
<tr>
<td>vi</td>
<td><b>vi</b>[<em>+n</em>]<em>file</em><br>
ビジュアルモード（vi）で、指定したファイル<em>file</em>の編集を始める。オプション指定時は<em>file</em>の<em>n</em>行目に跳ぶ。</td>
</tr>
<tr>
<td>write</td>
<td>[<em>address</em>]<b>w</b>[!][[>>]<em>file</em>]<br>
行範囲<em>address</em>で指定された行を<em>file</em>に書き込む。<em>address</em>指定が無いときは、現在行だけでなくバッファ全体の内容を書き込む。<em>file</em>指定が省かれたときは、バッファの内容を現在のファイルに書き込む。「>><em>file</em>」と指定した場合にはファイルの終わりにバッファの内容を追加する。「!」フラグを指定した時は強制的に書き込む。</td>
</tr>
<tr>
<td>write</td>
<td>[<em>address</em>]<b>w</b>!<em>command</em><br>
行範囲<em>address</em>で指定された行をLinux <em>command</em>に渡す。</td>
</tr>
<tr>
<td>wq</td>
<td><b>wq</b>[!]<br>
ファイルに書き込み後、終了する。「!」指定時は強制的に書き込む。</td>
</tr>
<tr>
<td>xit</td>
<td><b>x</b><br>
前回の書き込み以降に変更されていたら書き込みをして、終了。</td>
</tr>
<tr>
<td>yank</td>
<td>[<em>address</em>]<b>ya</b>[<em>char</em>][<em>count</em>]<br>
行範囲<em>address</em>で指定された行をバッファ名<em>char</em>にコピーする。<em>char</em>が指定されていないときは現在のバッファにコピーする。<em>count</em>を使う場合には、行<em>address</em>から何行に対してコピーするかを指定。</td>
</tr>
<tr>
<td>z</td>
<td>[<em>address</em>]<b>z</b>[<em>kind</em>][<em>count</em>]<br>
行<em>address</em>で指定して行を先頭にしてテキストを表示。<em>count</em>に、表示する行数を指定できる。<br>
kind<br>
<dl>
<dt>+</dl>
<dd>指定行をウィンドウの先頭に置く（デフォルト）</dd>
<dt>-</dt>
<dd>指定行をウィンドウの末尾に置く。</dd>
<dt>^</dt>
<dd>1画面上にスクロールする。</dd>
<dt>=</dt>
<dd>指定行をウィンドウの中央に置き、それを現在行とする。</dd>
</td>
</tr>
<tr>
<td>!</td>
<td>[<em>address</em>]<b>!</b>[<em>command</em>]<br>
シェル上でLinuxコマンドを実行。行範囲<em>address</em>が指定されたら、その行を<em>command</em>の標準入力に渡す。結果として、その行が<em>command</em>の実行結果で置き換えられる。<br>
:10,20!sort -f　10～20行目をソートする。
</td>
</tr>
<tr>
<td>=</td>
<td>[<em>address</em>]<b>=</b><br>
<em>address</em>で指定された行の次の行が何行目かを表示する。<em>address</em>の指定がないときは最終行の行番号を表示する。</td>
</tr>
<tr>
<td><></td>
<td>[<em>address</em>]<b><</b>[<em>count</em>]<br>
[<em>address</em>]<b>></b>[<em>count</em>]<br>
行範囲<em>address</em>で指定された行を左（<）または右（>）にずらす。左シフトのとき、空白とタブは削除される。<em>count</em>を使う場合には、行<em>address</em>から何行に対してシフトを実行するかを指定する。</td>
</tr>
<tr>
<td><em>address</em></td>
<td><b><em>address</em></b><br>
行範囲<em>address</em>で指定された行を表示。</td>
</tr>
<tr>
<td>RETRUN</td>
<td><b>RETURN</b><br>
ファイル内の次の行を表示する。</td>
</tr>
<tr>
<td>&</td>
<td><b>&</b>[<em>option</em>][<em>count</em>]<br>
直前の置換コマンド（s）を繰り返す。<em>count</em>を使う場合には、行<em>address</em>から何行に対して置換を行うかを指定する。</td>
</tr>
<tr>
<td>~</td>
<td>[<em>address</em>]<b>~</b>[<em>count</em>]<br>
行範囲<em>address</em>を対象に、直前に使った正規表現を、直前に使った置換コマンド（s）で使った置換パターンで置き換える。</td>
</table>