何とは言わない天然水飲みたさ

IQ1 を支える技術(と罵る技術)

この記事は、 IQが1 Advent Calendar 2017 の16日目の記事である。

前日の記事は『IQが1』である。

この記事では、 IQ が1の人がコンピュータを使うとき助けられている(或いは馬鹿にされている)技術やテクニック、設定を簡単に紹介する。

IQ1 を支える技術

zsh は vim ではない

          # Quit zsh like vim
alias :q="exit"
# I sometimes press 'q' with Shift because ':' is Shift-; ...
alias :Q="exit"
# Edit file with vim like vim
alias :e="$EDITOR"
        
.zshrc 抜粋

zsh にいるのに (neo)vim のつもりで :q したりすることがあるので、 alias :q="exit" している。

それだけならまだしも、 Dvorak 配列でコロンは Shift+; なので、そのまま Shift キーから指が離れず qShift つきで押してしまう場合があるので、それも exit のエイリアスにしている。

はい IQ が1。

ls は l でも s でもない

          whence -p l >/dev/null || alias l="ls"
whence -p s >/dev/null || alias s="ls"
        
.zshrc 抜粋

Dvorak での ls のキーが qwerty では p; の位置にあるため、ときどき一方を押し損ねる。 ls のどちらかを普段から使うようにしてしまえば済む話なのだが、私は鯖オペの自動化が微妙だったりすることもあり、 .bashrc を弄ってない環境や POSIX sh 環境で作業することがしばしばあるので、打ちづらさを改善するエイリアスを普段使いせず ls と愚直に打っている。

はい IQ が1。

迂闊に Enter 押してファイル上書き奴

          # Prevent overwriting files by accident.
alias mv="mv -i"
alias cp="cp -i"
        
.zshrc 抜粋

cp foo/* . のつもりで cp foo/* などしてそのまま Enter を押してしまう場合がある。 結果、運が悪ければ foo 以下にあるファイルのどれかが上書きされることになる。

その対策として、 cpmv-i (interactive) オプションを使うことで、ファイルを迂闊に上書きしてしまう事故を防ぐことができる。

          $ ls
poi1  poi2
$ mv poi*
mv: 'poi2' を上書きしますか? n
$ ls
poi1  poi2
        
ありがとう

はい IQ が1。

英語できない

          # Enable typo correction
setopt correct
# Suppose to use dvorak layout at typo correction
setopt dvorak
# Set prompt
SPROMPT="(*'~\`)< Did you mean %B%F{$color_sprompt_command}%r%f%b? [nyae]: "
        
.zshrc 周辺抜粋

zsh には typo correction の機能があるので、コマンドを typo してもある程度は修正を提示してくれる。 しかも zsh には Dvorak 配列向けのモードも用意されている。

          $ sduo echo hello
(*'~`)< Did you mean sudo? [nyae]: y
larry@veg Password:
hello
$
        
はい英語できない

はい IQ が1。

存在しないディレクトリにファイル保存奴

vim foo/mod.rs などのようなことは時々やるが、肝心の foo ディレクトリを作り忘れている場合がよくある。

          "foo/mod.rs"
E212: Can't open file for writing: no such file or directory
続けるにはENTERを押すかコマンドを入力してください
        
はい

それに加えて、コロンを打つのに Shift が必要で、そのまま w も打って :W してしまう場合もあり。

          E492: エディタのコマンドではありません: W
        
はい……

そういったわけで、どうせなら W コマンドでファイル保存とディレクトリ作成を一緒にやってしまえば、これら2つの問題を同時に解決できて幸せになれるはずだ。

          " Save file and create directory if necessary.
function! SaveAndWrite()
	" FIXME: Don't mkdir normally on path starts with `sudo:`.
	!mkdir -p %:p:h
	w
endfunction
command! -bar -nargs=0 WW call SaveAndWrite()
        
init.vim 周辺抜粋
          :!mkdir -p foo
"foo/mod.rs" [新] 0L, 0C 書込み
続けるにはENTERを押すかコマンドを入力してください
        
:W 実行の結果

はい IQ が1。

IQ1 をからかう技術、罵る技術

自分で設定したパスワードも打てないやつ

          Defaults insults
        
/etc/sudoers 抜粋

insults (侮辱)オプションでこの機能が有効化される。 「侮辱をデフォルトにする」という力強い一文だ。

gentoo linux では更に、ビルド前の設定として offensive フラグを立てておく必要がある。

          $ sudo ls
larry@veg Password: (間違ったパスワード)
You type like i drive.
larry@veg Password: (間違ったパスワード)
I've seen penguins that can type better than that.
larry@veg Password: (間違ったパスワード)
sudo: 3 回パスワード試行を間違えました
$
        
「私の運転みたいなタイピングをするね」「あんたよりタイピングのうまいペンギンを見たことあるよ」

私のお気に入りは以下のメッセージ。

  • stty: unknown mode: doofus
  • I feel much better now.
  • You type like i drive.

嘘のようなホントの話:パスワード入力に失敗すると罵ってくるシステムがある』などに(もしかしたら古いかもしれないが)リストがある。 ソースから探したければ Where are sudo's insults stored? - Ask Ubuntu とかが参考になりそうだ。

はい IQ が1。

ターミナルに SL 走らす奴

みんな大好き SL である。

はい IQ が1……と言いたいところだが、前述のように dvorak では lsp; の位置にあるので、このような typo は私はしない。

あと悲しいニュース。 昔の gentoo の SL には凶悪化パッチが当たっていたが、最近のバージョンアップで当たらなくなってオリジナルに戻ってしまった。

ターミナルで GTI 走らす奴

sl の git 版といったところ。 ただし、こいつは一瞬で走り去るし、走り去ったあとちゃんと git コマンドを実行してくれるので安心(なにが)。

なお、 gti pullgti push は遅いらしい。

はい IQ が1。

まとめ

IQ が1なので、 IQ の高い人が作ってくれたものを使っていきます。