今回はエディタの使い方です。エディタといっても大昔(1980年代)とは異なり、使いやすい様々なエディタがあります。VSCodeのようなプログラム開発に便利なエディタもありますし、原稿を書くのに適したエディタもあります。基本的にはエディタは自分が使いやすいものを使えば良いのですが、状況によっては好きなエディタを使うことができない場合もあります。UNIX系ではviまたはEmacsが大昔から使われてきましたが、現在でもこれらのエディタに頼るところはあります。WindowsやMacからUNIX系OSをリモートで操作する場合、viのお世話になることもあります。
・vi
https://ja.wikipedia.org/wiki/Vi
・Emacs
https://ja.wikipedia.org/wiki/Emacs
今回扱うのはviですが、現在ではより高機能なvimになっている場合はほとんどです。特にvimでも問題はありませんので、ここではvimの使い方について説明します。以後、viと記述されている場合はvimを示すものとします。
今回説明するのはviの最低限の操作方法です。どうしてもviを使わないといけない場合が発生した際に、最低限の操作方法・コマンドだけ知っていれば、どうにかなるというレベルです。viは高機能であり令和の時代の雑誌でも取り上げられるほどです。viが肌に合わないという人はnanoやEmacsなどUNIX系で使われる他のエディタも検討してみてください。
・nano今回もこれまでのようにサンプルで利用するファイル・ディレクトリはデスクトップのsampleディレクトリとしています。デスクトップにsampleディレクトリがない場合は作成しておいてください。(コマンド入力ならmkdir ~/Desktop/sampleとして作成することができます)
https://ja.wikipedia.org/wiki/Nano_(テキストエディタ)
以後の画面はmacOSのターミナル画面となっていますが、他の環境でも基本的には変わりません。なお、要注意事項としてキーボードのcaps lockはオンになっていないものとします。これはviでは大文字と小文字でのキー入力結果が異なるというのが1つと、macOSではshiftキーと英文字キーを押した場合の動作がUNIX/Windowsと異なるためです。なお、WindowsではGUI版のVimがありますので、コマンドライン版がインストールできない場合はそちらを利用してみてください。
起動して終了する
最初に覚えるのはviの起動方法です。コマンドラインからviとだけ入力するとエディタが起動します。
vi
起動したら最初にやることはエディタを終了させることです。何もせずに終了させます。終了させるには半角記号の:(コロン)のキーを押してから半角英文字のqのキーを押します。qのキーを押したらリターンキーを押します。
無事に終了すると元の画面に戻ります。ところが、このように入力(:q)しても終了しない、できない場合があります。なぜ?とは深く考えずに次のように入力しましょう。
(1) escキー
(2) :キー
(3) qキー
(4) !キー
(5) リターンキー
viにはモードという考えがあります。viのモードは結構多くあります。モードの種類については以下の公式ページを参照してください。
https://vim-jp.org/vimdoc-ja/intro.html#mode-switching
覚える最低限のモードは3つです。escキーを押した場合に戻るモードが「ノーマルモード」です。特に設定していない場合、viを起動するとノーマルモードになっています。他に覚えるのは文字入力・編集を行うための「挿入モード(インサートモード)」とコマンドを入力する「コマンドモード」です。コマンドモードで処理させなければいけないのに挿入モードになっていると:qと入力しても、そのまま:qの文字が入力されてしまいます。
viを終了させるにはコマンドモードにしないといけません。コマンドモードはノーマルモードで:キーを押します。確実にコマンドモードにするにはescキーを一回押しノーマルモードにします。その後で順番に:qと入力しリターンキーを押せばviが終了します。
運悪く何らかの原因でこれでも終了しないこともあります。
そんな場合はプロセスを終了させるという方法があります。
プロセスを終了させる
viに限りませんが、特定のプロセスを停止・終了させたい場合があります。プロセスをKillする、プロセスを殺すなど物騒な言い回しがされますが、要はプロセスを強制的に完全に停止し終了させるということです。
それでは早速やってみましょう。viを起動します。
この起動したviのプロセスを終了させてみます。viを開いたウィンドウとは別に新しいウィンドウでターミナルを起動します。大昔のマシンであればファンクションキー(か何かの修飾キーと数値キーだったか)で切り替えができたような記憶もありますが、とにかく別のターミナルから操作する必要があります。
まず、viが動いているプロセスを確認しましょう。プロセスの確認にはpsと入力します。viが起動していない方のターミナルを使ってコマンドを入力してください。オプションなしでコマンドを入力すると自分のプロセスが表示されます。
ここで、ポイントとなるのが一番左側に表示されているプロセス番号です。この番号をキーにしてviのプロセスを終了させます。
プロセスを強制的に終了させるにはkillコマンドを使います。名前からして物騒なコマンドですが、以下のようにすると指定した番号のプロセスを強制的に終了させることができます。
kill -KILL プロセス番号
先ほどpsコマンドで表示したviのプロセス番号は75349なので以下のようにコマンドを入力するとviが終了します。
kill -KILL 75349
プロセス番号は固定ではありません。viを起動するたびに番号が割り当てられます。このプロセス番号はすでに存在するプロセス番号と同じものは割り当てられません。割と使われる用語で書くと、ユニークな番号、唯一無二の番号ということになります。以下の図は新たにviを起動した後にpsコマンドを実行した結果です。先ほどのviとは異なるプロセス番号が割り当てられています。
実行しているシェルやプロセス、ジョブが多いとpsコマンドで表示されたリストの中からviだけをピックアップするのは面倒になります。そんな時はgrepと併用します。grepは正規表現で指定した文字列を検索して返します。grepについては、また別の機会に説明したいと思います。
以下のように入力するとプロセスの中からviの文字を含むものだけが表示されます。
ps | grep "vi"
grepでもviの文字を使っているため結果の1つとして表示されてしまいます。それが嫌な場合は以下のように指定する方法もあります。
ps | grep "vi$"
とりあえず、このようにps,killコマンドを使えば終了できなくなった自分のプロセスを強制的に終了できます。これでも駄目な場合は権限があればsudoで、さらに強制的に終了させる方法もあります。
ファイル名を指定してviを起動
viはファイルを編集するのが目的となる事が多いかと思います。以下のようにviの後に編集したいファイル名(ファイルパス)を指定すると、そのファイルが読み込まれ内容が表示されます。ファイルの権限によっては見ることはできても書き込みができない場合があります。編集前にlsコマンドで編集可能かどうか確認しておきましょう。
viの後に指定したファイルが存在しない場合は新規にファイルが作成されます。(保存する時に作成されます。保存しなければ作成されません)
それでは、カレントディレクトリに1.txtという名前のファイルをviで編集してみましょう。この段階ではファイルが存在しませんので新規ファイルを作成することになります。
vi 1.txt
文字を入力する
それではviで文字を入力してみましょう。起動直後は(特に設定変更していなければ)ノーマルモードになっています。
ここでiのキーを一回だけ押します。すると、挿入(インサート)モードになります。画面下に図のように表示されていれば文字を入力することができます。なお、iはIの大文字で入力しても問題ありません。
それでは何か英文字か数字を入れてみてください。キーボードで入力した文字が、そのまま挿入されていきます。
文字の途中に挿入したい場合はカーソルキーを使います。カーソルキーの上下左右でカーソルを移動させることができます。
viではカーソルキー以外でもノーマルモードで以下のキーを押してもカーソルを上下左右に移動させることができます。
h 左に移動
j 下に移動
k 上に移動
l 右に移動
文字を削除する/編集を終了する
文字を削除するにはdeleteキーを押します。これは普通のエディタと同じなので特に問題ないでしょう。単語単位や行単位で消したりすることもできますが、これは次回説明します。
編集を終了させてコマンドモードに戻るにはescキーを押します。escキーは何度押しても問題ありません。escキーを連打すればとにかくノーマルモードに戻れるということになります。
保存して終了する
文字の編集が終わったら保存して終了しましょう。保存して終了するにはノーマルモードの状態で以下の順番でキーを押します。
(1) :キー
(2) wキー
(3) qキー
(4) リターンキー
無事に保存されるとカレントディレクトリ(今回はいつもと同じなのでデスクトップ上にあるsampleディレクトリ)に1.txtというファイルが作成されます。
再度編集する場合は以下のようにviの後に半角空白で区切ってファイル名(ファイルパス)を指定します。
最低限の操作まとめ
ここまでが最低限のviの操作です。まとめると以下のようになります。
■コマンドラインからの入力
vi ファイル名
指定したファイルを編集
■ノーマルモードで:q または :q!
viエディタを終了
■ノーマルモードでi
文字を挿入できるようにする(挿入モード・インサートモード)
■escキー
ノーマルモードに戻る
■ノーマルモードで:wq
保存して終了
■ノーマルモードで:q!
保存せずに終了
viの操作は最低限これだけ知っていれば何とかなります。とはいえ、viには便利な機能があり知っていれば、より素早く編集できます。これについては次回に説明します。
著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。