利用者スタッフのrickyだ。
この記事は本事業所内の、仮想環境のマイクロブログに書かれたものを一般公開のために一部修正したものである。
オリジナルの原文は、所内ローカルネットワークからのみ読むことができることをここでお断りさせてもらう。
なぜ、以前の記事をここで紹介できなかったのか?
その理由は、バックナンバーの記事は、所内PCについての情報が多いことも理由の一つとして挙げられるが、
仮想環境のエミュレーター、インストールするOSの種類やバージョンのナンバリングによって、
外部に紹介するには、あまりにも再現性に乏しいと思われるからだ。
(実際、前回のpython3の記事がそうだった。
python3のmatplotlibの日本語文字列ラベルの表示が、別の環境ではリストごと入れ替わってしまうのを確認した。
それがpython3のバージョンによるものなのか、それかパッケージの違いか、原因は分からない。
)
以下本文
仮想環境の記事で、コマンドプロンプトからでも、
windowsで行っている基本的な操作自体は扱えることを説明した。
その中でも、編集内容を、新規テキストに名前を付けて保存、という項目において
echo “編集内容” > “ファイル名”
とのコマンドから行えると記述したことだろう。
しかしながら、Windowsにおいても、Linuxにおいても、
テキストの編集は、基本的な動作であり、
本来は、ユーザーの手によって、このようなコマンドを打ち込んで行うものではないのだ。
windowsにおいて、テキストファイルを編集したい場合、
まずはメモ帳のアイコンをクリックして、編集するのと同じことだ。
コマンドから、わざわざテキストを 標 準 出 力 に 表 示 さ せ て か ら 保 存 するなんて奇特な奴が居るのなら、是非お目にかかりたいものだ。
(ただし、こういった手法は、マクロを動かした時に、得られた結果をログを残すという動作におい ては、非常に役に立つことを忘れてはならない。)
そこで、本記事は
メモ帳を開いて、テキスト編集を行うというところを
Linuxの “端末” においてどうするかを記載する。
(テキストの編集においてさえも、きっちり一項目使ってまで説明するのは、
テキストの編集自体のハウツー自体が、Linux初学者の大きなハードルとなっているからだ。
これがないと、サーバの設定や、コンフィグファイルさえ触れやしない。)
Linuxにおいて、コマンドプロンプトを通しても利用できるメモ帳の中で
おそらく最初からインストールされているものでは、
以下のアプリケーションが上げられる。
・nano(初心者向け)
・vi(サーバ管理者や、プログラマ希望者向け)
まずは、多くの者にとって需要のあるであろう nano から説明する。
nanoは、コマンドから使えるメモ帳の中では、一番windowsのメモ帳に近い操作感覚で編集できるこ とから、
Linux初学者向けのメモ帳として、広く知られている。
nano “ファイルの名前”
これだけで簡単に立ち上がる。
“ファイルの名前” が同じフォルダの中に既に存在する場合、保存の動作は上書き保存となり、
存在しない場合、保存の動作を行ったときに、名前を付けて保存となる。
テキスト編集画面自体は、windowsのメモ帳の操作感と大差がないだろう。
ファイルの保存、文字列の検索といった操作自体はコマンドからとなるので、ショートカットキーが必須となるが
それも、常に下に表示されるので、覚える必要もない。
コマンドに、^ という記号がアルファベットについているのが見えるだろう。
これは、コントロールキー(Ctrl)を押しながらという意味であり、
コントロールを押しながら指定のアルファベットのキーを押せば、
期待通りの動作が行えることだろう。
例えば、以下の本文
いろはにほへと ちりぬるを
わかよたれそ つねならむ
うゐのおくやま けふこえて
あさきゆめみし ゑひもせすん
を、waka.txt という名前で保存したい場合を想定して考えてみる。
① nano waka.txt とコマンドを打つ
② 上記本文を書き込む
③ 書き込み( ctrl + O ) を打つ。
④ その状態でエンターを打つと、書き込まれる(下の表示に惑わされないこと)。
⑤ 終了( ctrl + X ) を打つ。
そうすると、現在のフォルダの中に、waka.txt というファイルが増え(ls)
中身を見ると、先ほどの編集内容が書き込まれていることが分かる。(cat waka.txt)
今度は、vi vimの説明だ。
viは、Unix/Linuxにおいて、その発祥からずっと使われてきたテキストエディタだ。
(Unixの歴史が、80年代後半から90年代前半からなので、
ざっと30年近くの歴史があるとされている。)
(※今調べてみたら、1976年が初版らしい。憶測だけで適当な事を言うものではないとはこのことである。)
そんな背景なので、Unix/LinuxのOSにはほぼ、最初から入っている。
(入っていないOSを見た場合、そのOSの開発者はモグリか、よっぽどのEmacs信者なのだろう。)
つまり、nanoや他の使いやすいエディタが最初から入っていればそれでいいが、
それが入っていないぐらい古い環境において、
これが使えなければ、OSのセットアップすらできないという事態に十分なりうる。
(他のテキストエディタを入れたくても、ネット回線に繋ぐための設定ファイルを編集できない。vi が使えなければ、ここで手詰まりだ。)
しかしながら、純粋な vi の使い方は非常に難しい。
この編集者をもってしてさえ、プラグインや環境設定によってカスタムされていない状態の
vi を使いこなせていない状態だというのが正直なところだ。
勿論、自分が使いこなせていないものを教えるわけには行かないので、
その代替として、 ここでは vim の使い方について記述していく。
vim とは、viの操作をより発展させ、高度なプラグインによる拡張と、
ユーザー自身が、環境設定を自分でカスタマイズさせていき、
より使いやすい環境を整えていけるというエディタだ。
これはただのメモ帳としてだけでなく、コード補完機能、
自動入力マクロの充実化、シンタクスハイライト(プログラミングの文法で違和感のある部分を光らせてくれる機能のことだ)
といった、統合開発環境(IDE)としても使える。
vi特有の馴染みにくい挙動を緩衝してくれるように可能な限りの設定をしている(つもりである)が、
それでもまだ扱いが難しいのは否定できない。
これ以降の記事は、それを承知で読んでもらいたい。
vim を起動するには、
vim “作成したいファイル名”
だ。
vimにおいては、いきなりキーボードを押してテキストを入力できるなどということはない。
vimに、テキストを編集したいという意思を示さなければいけない。
キーボードの a を押せば、テキスト挿入モードに入ることができる。
すると、左下のファイル名の下に — 挿入 — という表示がされるはずだ。
この状態は、キーボードからのテキストの編集を受け付ける “挿入モード” である。
もうお分かりの通り、vimには操作に応じて複数のモードがあるのだ(ややこしい限りだ)。
ここで、適当な文章を打ち込んでみる。
テキストを書きこんだ状態だ。
しかしながら、このままファイルを簡単に書き込ませてくれるほどvimは易しくない。
まずは挿入モードから出る必要がある。
Escキー(キーボードの一番左上のキーのことだ)を押すと現在のモードから抜けることができる。
すると画面左下にあった — 挿入 — が消える。
ちなみにEscキーは、挿入モードだけではなく、あらゆるモードから抜け出すことにも使える。
自分がもし何か変なキーを押してしまい、コントロールが効かなくなってしまった場合は、
とりあえずEscキーを連打してみればよい。
ファイルの保存を完遂するには、
:w
をタイプしてからエンターを押してやればいい。
通 常 モ ー ド でのコロンキーは、vimの関数の利用や、ファイルの保存、vim自体の起動や終了な どのコマンドに使うことができると覚えておけばいい。
(もしここで、テキストの中にコロンが混入するようであれば、まだ挿入モードから抜け切れていないことを意味する。
コロンキー自体が効かないようであれば、全角で入力しようとしていることが問題の可能性が高い。入力を半角英数に戻すのだ。)
そしてvimを終了させるには、通常モードの状態で
:q
とタイプしてからエンターだ。
すると、いつものコマンドプロンプトに戻り、
memo.txt という名前のファイルと、先ほどの編集内容が書き込まれたファイルが見つかるはずだ。
途中で変なキーを押してしまって、いつもの操作が効かなくなり、自分のモードも把握できなくなった場合、
Escキーを連打してから :w :q と打てば、とりあえず現在の状態を保存しつつvimを終了させられる 。
なぜ、わざわざviの代替として、vimを紹介したか?
最初からviを紹介していたら良いのではないのかと言う者が仮に居るとするなら、
viを実際に使ってみてもらいたい。(vi memo.txt だ)
オリジナルのviを薦めなかった理由、その1.
見てみれば一目瞭然だが、さっき日本語だった表示が英語表示となっている。
次にテキストの編集だ。
適当な文字を挿入してみて、いくつか改行してから、矢印キーを打ってもらいたい。
そこでカーソルが上下左右に動くことを期待するだろう。
しかしながら、viはカーソルの移動を矢印キーでは行わないという仕様がある。
なので矢印キーを押す度に、アルファベットの文字列が挿入されるのがはっきりとわかることだろう。
しかも厄介なことに、文字を間違えてバックスペースを押したとしても、文字が削除できないのだ。
文字の削除は、デリートや、通常モードのXキーにて行うことができる。
オリジナルのviを薦めなかった理由、その2.
カーソルの移動や文字の削除すら、メモ帳に慣れたユーザーにとって直感的でない。
今はまだ未実装だが、一部プログラミング言語やマークアップ言語(HTML等)の補完、
エラーチェックを行うプラグインが豊富に存在していることが上げられる。
これは、vimが開発環境として、非常に有用な可能性となりうることだと言いたいのだ。
勿論、vimに頼らなくても、インストールするだけで簡単に利用するだけならIDEの方が
手間がかからないというメリットもある。(一人だけで利用するなら、こっちの方が良いかもしれない。)
だが、こちらはリモートで簡単に開発環境をシェアできるというメリットもある。
オリジナルのviを薦めなかった理由、その3.
プラグイン次第では、あらゆるIDEを凌ぐ開発環境となる。
そして、編集者が先ほど言ったように、viはUnix/Linuxにはまず入っているアプリケーションだと述べた。
しかしながら、その半面扱いは難しく、操作にはvim以上の慣れが必要となる。
vimは、元々viの機能を拡張して開発されたものであり、
vimを使っていくうちに、vi本来の機能に習熟することが期待される。
もし希望する職種がサーバエンジニアであるならば、きっと助けになってくれるだろう。
オリジナルのviを薦めなかった理由、その4.
vimを使うことによって、viに慣れることができる。
考えられる限り、以上となる。
無論、nanoやvi,vimのみが、Linuxで使えるテキストエディタではない。
emacs という、vimとはまた別の選択肢もあることを記載しておく。
(有用らしいが、自分に扱えるだけの知識がない上に、.vimrcや、dein.vimの資産を失ってしまうのと、
自分が使ってきたOS全てにおいて最初から入っていないのを見たので、
ここでは採用していない。)
さて、ここまで読んでくれた物に課題を出そう。
nano の 例題の waka.txt の内容を
①vimにおいて書き込め
②viにおいても書き込んで、vimとの挙動の違いを確かめよ。
(方向キーは、↑:k , ↓:j , ←:h , →:l だ
文字を消すには、バックスペースではなく、デリートで消える。
ファイル名は何でもいいが、(①)とは違う名前で保存せよ。)
③(①、②)で書き込んだ文章が、同じものであるかどうかを diff コマンドにおいて検証せよ。
(diff コマンドは、ファイルの中身の違いを確かめることができる。
diff 比較対象① 比較対象②
これで使える。
ファイルの中身に食い違いがあった場合、
そこが何行目で、どういう風に違っているのかを
ピックアップして伝えてくれるというものだ。
もし、完全一致していれば何も表示されない。
ここまでの流れをよく理解しているのなら、ここで何も表示されない優秀な者もいるだろう。
だが、 diff コマンドがどういった形でユーザーに通知するのかを一度見ておいたほうがいいかもしれないので、
何も表示されなかった者は、わざと文章を間違えて打ってから再度diffをかけてみる課題を追加する。)
④今までの課題で自分が操作を行ったファイルを、全て削除せよ。
後にログインして、同じ課題に挑む者のために、操作したテキストを削除し、環境を元に戻すためだ。
(ファイルの削除の方法、及びその操作の危険性について、知らない者、覚えていない者は、仮想環境内の別記事にまとめてある。
必ず、目を通してくれ。
)