zshのbindkeyをイジってワンストロークでエディターを起動する

zsh使う人なら割とよく知られてるっぽい技

function cdup() {
   echo
   cd ..
   zle reset-prompt
}
zle -N cdup
bindkey '\^' cdup

「^」キーを押すと, どんどん上のディレクトリーに動く

「^」自身を入力するには, ^V^みたいなかんじ


ホームディレクトリーに「~」で移動する設定

function cdhome() {
  echo
  cd ~
  zle reset-prompt
}
zle -N cdhome
bindkey '~' cdhome

これはかえって邪魔かもしれない.




他に使えないかなぁ... って考えてたところ, 一週間前にこれを思いつきました.

function starteditor() {
  exec < /dev/tty
  $=EDITOR
  zle reset-prompt
}
zle -N starteditor
bindkey '\@' starteditor

使用頻度の低いアットマークを, エディターの起動に割り当てるのです.

これ, 慣れたら病み付きになります.

alias v='vim'とかザコ...

いやほんと. ワンストロークvimを起動できる手軽さパない.

これも, アットマーク自体をいれるには^V@で. ぼくは, ほとんどいらないけど.

或いは,

bindkey '\\\@' self-insert

みたいにして, 「\@」で@が入力されるようにしてもいいかも.




追記: exec < /dev/tty の行は必要です. コレなかったらちょっと大変なことになります(にこにこ

追記: さすがに@を割り当てるのは, 色々と問題があるので, 今は<C-^>を割り当てています.

function starteditor() {
  exec < /dev/tty
  $=EDITOR
  zle reset-prompt
}
zle -N starteditor
bindkey '^\^' starteditor

追記: widgets can only be called when ZLE is activeというエラーが出る場合は、zle reset-prompt の行を zle && zle reset-prompt にするとよさそうです。