見出し画像

viはASCII配列に限る

今回は超マニアックな号外です。
(いやいやでも)viを使わざるを得ないプログラマには是非読んでいただきたい。
逆にviとかASCII配列ってなんのこっちゃ?という一般ピーポーには全く意味不明な内容です。


viとは何か?

viというのは主にUNIX上で使われるテキストエディタです。
が、UNIXのテキストエディタというのはどれもこれも変態です。
その中でもviの変態さは群を抜いています。

その変態さには、WindowsやMacintoshでフツーにテキストエディタを使っていた人でも面喰らうほどです。
なにせ、最初は文字入力ができません。
じゃあ、終わろうかと思いきや、終わり方すらわかりません。
さらに(初期のviは)矢印キーすら使えません。
ひどい変態ぶりです。

このあたりの使いづらさはあちこちで書かれていますし、本題ではないので割愛します。

ところで、viの悪口を言っている筆者ですが、viギライなのでしょうか?
いえいえ、とんでもない。
確かに初めて使ったときは「誰がこんな変態エディタを考案したんや」と憤慨したものです。(ちなみに作ったのはビル・ジョイという天才プログラマらしい)
ですが、その設計哲学に触れ、慣れとともに使いやすさに感動し、今では
viがなければ生きていけないというレベルのviラバーです。(まさに真正の変態!)

デフォルトのキーバインド変じゃない?

ある程度、viを使い込んできたころの話です。
日常的に使う分にはそれほど困らなくなっていて、むしろviがお気に入りになってきたころの話です。

それでもいくつかの機能がものすごく使いづらい場所にあって、「なんでこうなってるんだろ」と思うものがありました。
例えば、あらかじめつけておいた「しおり」へのジャンプ機能がそうです。
その機能は「’」キー(キーボードのSHIFT+7のキー)に割り当てられています。
キーボードを見ればわかりますが、SHIFT+7って、ものすごく押しにくい場所にあるんですよね。(個人的にはSHIFT+6の次に押しにくい)
「しおり」機能は便利なのに、なんでこんな押しにくい場所にレイアウトしたんだろうって不思議でした。

また、入力している内容をキャンセル(消去)してしまうというものすごく迷惑な機能があります(今のvimではデフォルトでは無効になっています)。これ、@キー(Pの右にあるキー)に割り当てられてるんです。Pと押し間違えると、その行が全部消えてしまいますので、かなりストレスでした。

他にも、コマンドモードに入る「:」キーが繰り返し検索をする「;」キーの隣にレイアウトされてたりと、キーバインドに関しては「なんだかな」と思うことがいくつかありました。

ですが、これは完全な思い違いだったんです。

ASCII配列前提だったのか…

ひょんなことで、作業に使う端末としてASCII配列のキーボードを使う機会がありました。
会社に多数のX端末(といっても年寄りしかわからんでしょうが、今のシンクライアントみたいなものです)が導入されたときに一つだけASCII配列のがありました。

誰もがJIS配列のキーボードを選んだので、その端末は余ってました。
私は当時Macintoshユーザだったのですが、そのころはASCII配列のみでしたから、さほど違和感なく余っていたASCII配列の端末を使うことにしました。

するとですね、ダメダメと思ってたviのキーバインドが実によく練られたものだったことに気づいたのです。

まず、最初の疑問「しおり」へのジャンプですが、これはJISキーボードでいう「:」キーの位置、つまり右小指のホームポジションの一つ右隣です。
しかもSHIFTは要りません。めちゃくちゃいいポジションです。

また@キーはSHIFT+2ですから、そうそう押し間違う場所ではありませんし、:キーは「SHIFT+;」なので、これも押し間違うことはないのです。

軽い気持ちでASCII配列を使いだしたら、「ひょうたんから駒」でviの使い勝手が劇的に向上しました。

それ以来、私はずっとASCII配列を使い続けています。WindowsでもUNIX(Linux)でもマシンを手に入れて最初にやることはキーボード配列をASCII配列にすることです。

余談ですが、筆者は自分のPCではたいがいPFUのHappy Hacking Keyboardを使っていますので、最初からASCIIで認識されることが多いです。面倒なのは国産のノートマシンを入手した時くらいですね。

一度、ASCII配列を試してみて!

もし、今までJIS配列で「使いにくいな」と思われている方がおられましたら、是非一度ASCIIで使ってみていただきたいと思います。

ただし、ASCIIには、慣れるのに大変なワナがいくつかあります。
最大のワナはカッコ記号の位置がズレている点です。

JISでは「(」が、SHIFT+8で「)」がSHIFT+9ですが、ASCIIでは一つだけ右にズレ、「(」がSHIFT+9、「)」がSHIFT+0になります。
プログラマは(LISPerやSCHEMArは特に)カッコをめちゃくちゃ使いますので、これはものすごいストレスでした。

これ以外にも、「:」や「@」、「”」、「’」といった特殊記号の位置が違っていますが、カッコに比べればずっと使用頻度が低いので大した問題にはならないと思います。(むしろviラバーにはうれしい変化)

また、ASCII配列は英語圏の配列ですから、「変換」キーや「無変換」キーはありません。筆者は「変換」は「空白」キーで代用し、「無変換」は他のキー(改行とか)に割り当てるので問題になりませんが、人によってはつらいでしょうね。

最近はWindowsでもUNIX系OS(Linuxなど)でもキーボードレイアウト変更がソフト的にできますので、JISキーボードでありながら、ASCII配列にすることも可能です。(逆はムリ。物理的にキーが足りない)

一度おためしあれ。

この記事が気に入ったらサポートをしてみませんか?