VimってVimだったんだ(editorについての閑話)

最近、YouTubeそれにAmazonの書籍の案内メールでVimってのを見かけたんだけど、またまた私の知らないモダンなweb開発で使われる、新しいツールなのかな?っと最近まで思ってました。(歳を取るとツール、フレームワーク等の単語を覚えるだけでも大変)

YouTubeやAmazonの書籍の案内読めば判るんだけど…私の知らない新しい技術じゃなくってeditorのVimだったんですね。

せっかくなのでeditorについてのお話を・・・

私が使用しているUbuntuではviがインストールされています。 Vimをインストールするには「sudo apt install vim」でインストールする必要があるようです。 しかしながら、viをたどっていくと、実際には/usr/bin/vim.tinyにたどり着いてしまいます。 要するにvimの簡略版を使っていたのですね。 (RaspberyPiも同様です)

vi(Vim)の話をしていきましょう。

今回、この記事を書くにあたってWikiで確認したところ、Vimって人名のように最初が大文字、さらにヴィムのように一単語として発音するそうです。 ヴイアイエムじゃなかったんです。

組込みLinuxシステムでは、一般にBusyBoxのviを使うことが多いようです。  Vimはyoctoレシピや、Buildrootのmenuconfigにて指定することになります。


自己紹介のときに紙テープでのソース修正の話を少ししましたが、私が最初に仕事で買ったUNIX(SORDのUNIBOX、メインメモリ1MiB+増設1MiB)で、プログラムのソース入力でお世話になったエディタはviでした。  シリアルポートにPC(FM-7)を接続し、自作のターミナルソフトを使用してコンソールとして使用してました。

当時のUNIX(UNIBOXではSystem V)には目的毎にいくつかのエディタが用意されていました。
1.ストリームエディタ(sed)
2.ラインエディタ(ed)
3.スクリーンエディタ(vi)

ストリームエディタはスクリプトやコマンドにおいて、パイプと組み合わせてストリームテキストを自動編集するのに多く使用されています。 sedとawk,tr,sortなど色々なフィルターを使用して様々な処理も可能です。

ラインエディタですが、少なくとも私の周りには現在も使ってる人は一人も居ません。でも現在のUbuntuでも使用可能です。 このエディタの凄いところは、テレタイプ端末で使用可能なエディタです。 テレタイプ端末では表示は用紙に印刷する形式ですから、一旦印刷した文字を書き換えることはできないので、常にラインに対しての編集となります。
現在での用途として、スクリーンエディタを動かす全段階の手順としてedにて各種ファイルを編集するときに使用します。 と言うのは後述のスクリーンエディタも端末によっては環境変数を修正しないと正常に動かないことが有るからです。

初期のPC環境では、高額なテレタイプ端末でなく、家庭用TVをディスプレイとして用いてスクリーンエディタを使用できたのは、画期的だったと記憶してます。(当時、仕事で使ってた自動機のPDP-7はテレタイプ端末でした)

スクリーンエディタの代表的なものとしては、viとemacsが挙げられます。 そのほかvi系は初心者向きではないため、nanoが紹介されています。

画像2

ベテランのUNIXエンジニアならば、ここで熱くemacsについて語るところです。
でも、すみません
私、emacsほとんど使ってないです。


現在は何を使っているかと言うと、プログラム開発については各種IDEのエディタ機能を使用しています。単独で使用するときはgeditが多いです。(RaspberryPiではmousepadか、Double Commander内の組込エディタを使用しています。)


さて、ここでvi(Vim)の用途について説明したいと思います。 Linux環境下では沢山のエディタ、IDEがインストール可能です。 では、なぜ一部の人はvi(Vim)を習得しなければならないのでしょうか? 

以下のようなケースでviが必要となります。(edでも良いですが…)

1. LinuxやUNIXの環境設定などをする場合
2.組込みLinuxの開発をする場合(特にアプリケーション起動までの環境設定)

クラウド関係のサーバはLinuxが使われていることが多く、それらの設定にVimが使われているようです。 その影響で書籍が増えていると思わます。

yocto, buildrootなどでルートファイルシステムを構築し、実機にて(一時的に)調整するときにはviは必須です。

画像1

組込みLinuxの場合、シリアルコンソールにて操作するのが基本です。 (実機ではコネクタだけで実装しないことも多い) u-bootで何らかの操作をしたり、カーネルのパラメータをコマンドで指定する場合などは、シリアルコンソールのみでしかできません。 多くの組込みLinuxではGUI無しであり、結果としてエディタはスクリーンエディタが基本になります。

telnetやssh接続ができるのはLinuxカーネルが起動してからです。  viもカーネルが起動してからとなります。  telnetやsshが使用できるようにネットワーク、ターミナルなどの環境設定するには、シリアル接続したターミナルから、各種設定ファイルをviで編集しなければなりません。

このような場合vi(Vim)が必要ですが、基本的な操作ができればなんとかなります。私もviで操作してたときは、色んなコマンドを使いこなしてましたが、最近はほとんど忘れてしまいました。 put/yankも使わず、そのままホスト側のPCのコピペを使っていたりして(汗;

テキストによる編集のコツ
1.少量あるいは規則性のない編集
 人海戦術でがんばりましょう。
2.規則性のある編集
 正規表現を覚えましょう。
3.正規表現では対応できない編集
 プラグインなどで編集スクリプトを書きましょう。
 (Pythonなどのプログインの使えるエディタも有ります)
4.自動編集
 sedなどを覚えましょう。
5.複雑な編集、あるいは大量データの編集
 スクリプトあるいはGiBサイズならコンパイラ系言語で自動編集させましょう。










いいなと思ったら応援しよう!