前回は文字列の検索と置換を説明しました。これで,Windowsのメモ帳が持つ機能の大半を,viでも実現できるようになります。今回は,アンドゥやリドゥ,時刻の挿入などの残りのめぼしい機能を取り上げていきます。

元に戻すと取り消す(アンドゥとリドゥ)

 文字列の入力,カット,ペーストなどの動作を取り消すのが,メモ帳用語で言う「元に戻す」です。メモ帳の場合は直前の動作を元に戻すことができますが,2つ以上前の動作を元に戻すことはできません。「元に戻す」の直後に「元に戻す」を実行すると,最初の「元に戻す」を取り消し,つまり何もしなかったのと同じことになります。

 以降「元に戻す」を“アンドゥ”,「元に戻す」の取り消しを“リドゥ”と呼び,話を続けます。アンドゥを実行するには,通常モードで[u]キー(undoの略)を押します。アンドゥすると,カットやペースト,置換,挿入モードに入ってから挿入モードを抜けるまでの一連の文字入力など,ファイル中の文字に影響を与えた動作を1つ取り消せます。

 なお,vimではアンドゥを繰り返すことでさらに1つ前の動作を取り消すことができます。ただし,viにはアンドゥできるのは直前の動作のみという制限があり,アンドゥの後にアンドゥを実行するとメモ帳と同様にアンドゥの処理が取り消されます。

 リドゥを実行するには,通常モードで[Ctrl]キーと[r]キーを同時に押します。リドゥすると,直前のアンドゥが取り消されます。アンドゥと同様,vimではリドゥを繰り返すことでさらに1つ前のアンドゥを取り消せます(図1)。アンドゥのところで説明した通り,viでは[u]キーを2回押すとリドゥになりますから,[Ctrl]キーと[r]キーを同時に押すことは意味がありません。

図1●アンドゥとリドゥ<br>アンドゥを実行するには,通常モードで[u]キー(undoの略)を押します。リドゥを実行するには,通常モードで[Ctrl]キーと[r]キーを同時に押します。
図1●アンドゥとリドゥ
アンドゥを実行するには,通常モードで[u]キー(undoの略)を押します。リドゥを実行するには,通常モードで[Ctrl]キーと[r]キーを同時に押します。
[画像のクリックで拡大表示]

時刻の挿入(シェル・コマンド実行結果の取り込み)

 viに時刻挿入専用のコマンドはありません。その代わり,もっと汎用的に“シェルからコマンドを実行した結果を取り込む”ことができるようになっています。

 シェル実行結果の取り込みは,コマンド・モードから実行します。書式は(図2)の通りです。本連載第1回で出てきた,ファイルを保存せずに終了する「:q!」などで使う「!」と同じ文字ですが,こちらの!はコマンド実行を意味します。!の後に実行したいシェルのコマンドを入力して[Enter]キーを押すと,カーソルのある行の下の行に,実行結果が挿入されます。

図2●シェル実行結果の取り込む書式
図2●シェル実行結果の取り込む書式
「!」はコマンド実行を意味します。

 図3にdateコマンド実行結果の一例を示しました。dateコマンドのほかにもexprコマンドで計算結果を取り込む,catコマンドなどで他のファイルの内容を取り込むなどの用途が考えられます。

図3●dateコマンド実行結果<br>(例),カーソルのある行の下の行に,日時が挿入されます。
図3●dateコマンド実行結果
(例),カーソルのある行の下の行に,日時が挿入されます。
[画像のクリックで拡大表示]