日常作業をコマンドで行う理由から、キーボード操作中毒になるまで

2020-01-27 2020-02-24

GUIに対するCUIの利点とかの話をするつもりですが、再現性のひとことで片付いてしまいます。 CUI操作はキーボード操作に一般化できるので、その魅力も語ります。

GUIが嫌い

マウスって疲れません? 画面上のマウスポインタを移動してクリックしての繰り返しが典型的ですが、 マウスポインタの位置を毎回確認するためだけに、いちいち画面を見る必要があります。 このためだけにマウスを動かして、動いたマウスポインタでようやく視認が叶うことも。

マウス操作は(キーボードと比較せずとも)再現性が皆無です。 何かしらの作業をスクリーンショットの連続で説明されると萎えますよね。 コマンドだとコピペ一発なのにとか考えたりするのも再現性の現れです。

無駄な時間を極限まで減らすという意味でも、 マウスとキーボードを往復するよりは、キーボードだけで完結させるのが良いはずです。

CUIが好き

コピペ一発もそうなんですが、シェルプロンプトで履歴が残せるのが本当に便利です。 この作業前にやったな、履歴辿るか。 zsh等履歴の頭出しが可能なシェルを使ってください。 zshだとデフォルトでM-phistory-beginning-search-backwordに割り当てられています。

zsh等のシェルはカスタマイズが超楽しいですね。 カスタマイズ自体を再現可能なものにする話はまた別に用意するつもりです。 (普通にdotfilesを用意するだけだとpowerline関係の引越しが面倒)

コマンドは覚えるのが難しい?GUI操作を覚えるよりは楽でしょう。 ls, cd, vimで大抵の作業が実は完結します。vimはiEscをループして:wqです。 というかチュートリアルこなしてください。ダメならnano。 whichgrepを使いはじめたらプロです。使い方は次の1通りしかありませんがプロを名乗ってください。

which (コマンド名)
grep '(検索語)' -nR .

新しいコマンドの覚え方ですが、man (コマンド名)で使い方が出るのでqで脱出してください。 ひとつのコマンドに対応する使い方なんて多くて2通りなので、 これだ!と思う使い方を履歴に保存してやりましょう。コマンド名以外は覚えなくていいですね。

Interactive Vim tutorial

キーボード操作が大好き

まだ無駄があります。デスクトップ画面のウィンドウ操作、これもキーボードでできます。 タイル型ウィンドウマネージャで検索して下さい。私はi3使ってます。

ブラウザも諦めません、キー操作可能です。私はVimiumを使ってます。 最近はキーボードショートカットが用意されたサイトも珍しくはありません。皆キーボード大好きなんですね。

キー配置まで弄っちゃう

この際なので諸悪の根源QWERTYも排除してしまいましょう。 そもそもQWERTY配列はタイプライター時代に入力を遅延させるため、わざと効率の悪い並び方になっています。

cf. http://mkweb.bcgsc.ca/carpalx/

私はエセProgrammer-Dvorakを愛用しています。 普通のDvorakと比較して、IUの位置を逆にしています。 vimでIキーを多用するのでホームポジションに移動。 C-uC-dがカーソル上半分下半分移動に対応しているので対称性が確保されます。 数字より記号を打ち込む機会の方が多いと判断したので、Shiftを押さないと数字が打てないようにしてあります。

@7315984026^
$[{(+%&*)}]#

数字リテラルなんてものは01とそれ以外ですから、この配置がおそらく正解でしょう。 数字キー列の中央はかなり遠いので、滅多に押さない数字と記号を割り当てています。

私は特殊キーもかなり弄ってます。 Tab, CapsLock, Shift, Ctrl, Alt, Win, Menu. Zenkaku_Hankaku, Muhenkan, Henkan, Hiragana.

CapsLockをEscapeに、左ShiftをCtrlに、左AltをBackSpaceに、MuhenkanをShiftに、HenkanをTabにしています。 気が向いたら設定ファイル晒します。

特殊キーの配置を含めて変更するのはLinuxだとかなり簡単です。 xmodmapコマンドによる古い方法と、xkbによる新しい方法があります。

cf. https://nixos.wiki/wiki/Keyboard_Layout_Customization

キー配置変更のデメリットは、QWERTY前提のショートカットに弱いことでしょう。 Dvorakはvimのキー配置とかlesskeyとかをhjklでなくhtnsにしてやる必要があります。 zxcvとかasdとかは対応不可です。どうしてもというなら、何らかの切り替え機構を用意しましょう。

キーボード自体の話

米国キーボードを持て囃すような風潮がありますが、私は上記の理由で日本語キーボードを愛用しています。 親指付近のキー数が多いというのが主な理由ですね。印字はどうでもいいでしょ。

私なんとErgoDox EZを所持しています。 ほぼ理想配置の分割キーボード、加えてキーごとに軸の変更が可能です。 キー配置がオープンソースなので、自分の指が過学習しても良いというのが安心ですね。 あんまり触れてないので、xmodmapから移行する序でにまた弄り倒してやろうかな。 (ErgoDoxがチョットでかいのでHelixが気になってる)