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"
zsh にいるのに (neo)vim のつもりで :q
したりすることがあるので、 alias :q="exit"
している。
それだけならまだしも、 Dvorak 配列でコロンは Shift+; なので、そのまま Shift キーから指が離れず q も Shift つきで押してしまう場合があるので、それも exit
のエイリアスにしている。
はい IQ が1。
ls は l でも s でもない
whence -p l >/dev/null || alias l="ls"
whence -p s >/dev/null || alias s="ls"
Dvorak での ls
のキーが qwerty では p;
の位置にあるため、ときどき一方を押し損ねる。
l
と s
のどちらかを普段から使うようにしてしまえば済む話なのだが、私は鯖オペの自動化が微妙だったりすることもあり、 .bashrc を弄ってない環境や POSIX sh 環境で作業することがしばしばあるので、打ちづらさを改善するエイリアスを普段使いせず ls
と愚直に打っている。
はい IQ が1。
迂闊に Enter 押してファイル上書き奴
# Prevent overwriting files by accident.
alias mv="mv -i"
alias cp="cp -i"
cp foo/* .
のつもりで cp foo/*
などしてそのまま Enter を押してしまう場合がある。
結果、運が悪ければ foo 以下にあるファイルのどれかが上書きされることになる。
その対策として、 cp
や mv
の -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]: "
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()
:!mkdir -p foo "foo/mod.rs" [新] 0L, 0C 書込み 続けるにはENTERを押すかコマンドを入力してください
:W
実行の結果はい IQ が1。
IQ1 をからかう技術、罵る技術
自分で設定したパスワードも打てないやつ
Defaults insults
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 command on linux - YouTube
- SL 改造計画のパッチをあててみた - YouTube
- mtoyoda/sl: SL(1): Cure your bad habit of mistyping
みんな大好き SL である。
はい IQ が1……と言いたいところだが、前述のように dvorak では ls
は p;
の位置にあるので、このような typo は私はしない。
あと悲しいニュース。 昔の gentoo の SL には凶悪化パッチが当たっていたが、最近のバージョンアップで当たらなくなってオリジナルに戻ってしまった。
ターミナルで GTI 走らす奴
sl
の git 版といったところ。
ただし、こいつは一瞬で走り去るし、走り去ったあとちゃんと git コマンドを実行してくれるので安心(なにが)。
なお、 gti pull
と gti push
は遅いらしい。
はい IQ が1。
まとめ
IQ が1なので、 IQ の高い人が作ってくれたものを使っていきます。