vi

突然ではあるが、viの話である。

巷で、viは「伝説のエディタ」っていうことになっているらしい。
伝説って「都市伝説でもあるまいし」。
でも、viでの編集方法を習得すると「えらい勢いでコーディングが可能になる」ということらしい。
そんなエディタだったかなぁviって。

まぁいいか。そういうことにしよう。
なぜなら、かくいう私は、vi使いである。毎日使ってますよ。vi。なので、

  えらい勢いでコーディングが可能なのである。

本当か?
端から見ているとそう見えるだけでは?
と思ってしまうが…

私が、スーパーハッカーかどうかはとりあえず置いておくとして、viの変なところなどを紹介したい。Macでもvi使えるしね。

viの一番の特徴は、なんといっても「モードの切り替えがある」ということ。
viには以下の二つのモードがある。

 ・閲覧モード
 ・入力モード

モードがあると、切り替えが面倒。
そうなのです。文字を入力しようと思っても、いちいちモードを切り替えないといけない。
ここがワープロとか、普通のテキストエディタと違うところかな。

細かい操作の方法は、別のサイトで調べてもらうとして(手抜きですみません)。
次。

 マウスや、ファンクションキーは基本使わない。

これもviの特徴かも知れない。
昔のエディタというか、コンピュータには、ファンクッションキーってなかった。
あるものは、あったかも知れないが、viが生まれた当時では、「端末」っていうのが一般的だった。
端末っていうキーワードは今では効かないよね。
端末は、ディスプレイとキーボードから構成されるが、今みたいに、たくさんのキーは付いていない。
アルファベットと数字と数個の記号だけ。

えーと検索してみたが、こんな感じか。

私がよく使っていたのは、vt100端末。なつかしー、vt100。
DECだよ。Digital Equipment。
キーを叩くとベコベコいうやつ。そうそう、こんなんだった。

今でも「VT100エミュレーション」みたいなことを聞いたことはないですか?
ありませんか。そうですか。年寄りになったなぁ…

気を取り直して、viの話に戻ろう。

vt100には、テンキーは付いているが、ファンクッションキーは存在しない。
矢印キーを見ることができるが、当時は、矢印キーをUNIXで使うことができなかったような…

そうそう、今のvimとかでは、矢印キーやらマウスホイールも当然のように使えるが、vt100時代のミニコンでは、矢印キーは使えないのである。vt100にはマウス付いてないしね。ははは。

当時のDECのミニコンって、今聴くと「はぁあぁぁ」っていうスペックなのである。80386とかで高性能とか、信じられない。
そんな中viを使ってプログラムのソースコードを編集していたわけである。ペコペコ言いながら。
端末は、今でいうPCのサイズであるわけであるが、本体のミニコンは、ミニコンという割には「でかくて」。ミニという割には大きい、ミニクーパーのCROSSOVERみたいな…詐欺じゃんみたいな。

viとESCキー

冒頭で言った通り、私は、vi愛好者である。
UNIXでソースコードを書くのはもっぱらvi。
でも、Windowsだとvi入ってないし。秀丸かな。プログラムを組むときは、Visual Studioだったり、2025年現在では、VS Codeとか、Cloud9とかだけど。

Macには、vi入っているけど、ちょっとした文書は、テキストエディットかな。
Macでソースコードは書かないし。ターミナルをあげていたら、スクリプトを書くのに、vi使うかなぁ。

C言語のソースコードを書くときは、viで書いて、:w!してから、:makeするとプログラムをビルドしてくれる。コンパイルエラーがあれば、そこにジャンプしてくれる。これが結構便利。
今ではIDEが発達、整備された感があり、viでなんでも済ませてしまおうと言う考えは無くなったが…

今のところUNIX系のOS(Linuxとか)にはvimが入っているので、設定ファイルを「ちょっと編集したい」っていう場面ではvi使っちゃうよね。

そういえば、昔は「vi vs emacs」って言うのがあって、どっちのエディタの方が優秀なんて話もあったけど、現在ではviもemacsもあまり使われてなくて、viモードとかemacsモードもしくはviキーバインドみたいな「無残り的なものがあるだけ」なのである。

vim vs emacsの秀逸なYoutube動画が以下にあるのでぜひ見て欲しい、

viでの日本語入力

日本語を入力するときは、viだとちょっと面倒。FEPの入力モードも気にしなけばならないし、viの入力モードも「切り替えないといけない」これが結構忙しいのである。

ご存知のように、viの入力モードは、escキーで終了することができる。iなりaとして、入力モードに移行して、文字を入力する。入力し終わったら、escキーで通常モードに移行するわけであるが、escが遠くにあって、打ちにくい、というのが面倒なところ。
macに限らずだが、escキーってなんか、最近のキーボードでは「ちっちゃく」なってしまって、打ちにくいのよね。

viで日本語を書こうと思うと…

まず、viを入力モードにする。
次に、FEPを「変換」モードにする。
ローマ字入力で、文書を入力していく。
漢字変換は適宜、スペースキーや矢印キー、エンターキーでやる。
ここでescキーを押しても、たいていはFEPで取られてしまうので、viに対しては効果なし。
入力し終わったら、FEPを「無変換」モードにする。
escキーを押して、viの入力モードを終了する。

無変換モードにしないと、viへの指示にはならないので、結構厄介。

さて、そんなviなのであるが、escキーでなくても、Ctrl-[でescの代用になるということを最近知ったのである。
Ctrl-Hでバックスペースになるとかは、結構有名なので知っていたのではあるが、escの代わりにCtrl-[が使えるのか。これは知らなかった、覚えておこう。

さて、何で、escキーの話をしだしたかというと、Mac Bookに新搭載のTouch Barでescがなくなっちゃったのか、ということを調べていたからに他ならない。
escキーがなかったらvi使うの大変だろうなぁ。と思ったからである。

心配することもなく、ちゃんとescキーはTouch Barの中に用意されている。起動しているアプリケーションごとにTouch Barが変化するようなので、vi使っている時は、escキーが左右に表示されたりしないかしら。Touch Barちょっと興味あり(この記事を最初に書いているのは2017年。今はTouch Barは廃止されている)。

Mac Book Airのバッテリーが少々へたり気味である。かなり使い込んだので、当然か。
Touch Bar付きのMac Bookに乗り換えちゃおうかなぁ…

Cntl-W

昔のviにはウインドウはなかった。「男は黙って画面一枚(80x25)」である。vimになってから拡張があり、一つのviの中で複数のウインドウを開けることができるようになったのである。

これって結構"画期的"でviの中だけでウインドウを行ったり来たりしてのコピペとかが簡単に、ホームポジションから手を離さずにできるようになったのである。
vimでウインドウを移動するにはCtrl-Wを使用する。Ctrl-Wを押すたびにカーソルが移動して「編集中のウインドウを切り替える」ことができる。
yyで1行をヤンクバッファに入れて、Ctrl-Wでウインドウ切り替え、pでヤンクバッファからペーストすればウインドウ間でコピペができるのである。

ここでマウスを一切使っていないことに着目して欲しい。GUI OSでウインドウ間でコピペしようと思ったら、マウスで選択してキーボードでCtrl-CしてCtrl-Vするのでキーボードから手を離す必要がある。マウスのメニュー操作だけでコピペもできるが、コピペが終わって入力を始める時はまたキーボードに手を戻さなければならないのである。

vimでウインドウを開けば、その移動はCntl-Wで移動できるので、マウス操作をする必要はない。

viで下にスクロールするのはCtrl-Dでできる。割と良く使用する操作である。
DキーとWキーはキーボードの左側の近い所にあるので、割と押しやすい。

ここまで書いたらviの良さを察して頂けたのではないかと思う。

キーボードだけで編集作業ができる。これがviの一番良い点である。

まぁ、viはマウスの無い時代のエディタなので「マウスを使わない操作が可能なのは当たり前」なんだけど。

最後に広告を入れたいのだが、vimはオープンソースのソフトウェアなので売ってない。そこで、vi使いが好んで使ってそうなキーボードを貼り付けておく。

投稿者プロフィール

asai
asai