Posted at

zsh で連続したスペースにキーバインドを割り当てる

More than 5 years have passed since last update.

zsh で、<SPACE> <SPACE> とスペースを2つ連続で入れた時に何かしたくなった。例えばスペース2つ入れたら git に置き換わる、とか。

bindkey ' ' XXX とかしたくなるけど、それではうまくいかない。

一応動くことは動くんだけど、普通にスペースを1つだけ入れたい時でも、一回スペースを押してからちょっと待ち時間が発生してしまう。うれしくない。

そういうときはこれを .zshrc に書いておけばOK。


double_space_keybind.zsh

function _double_space_to_git() {

if [[ "${BUFFER}" == " " ]]; then
LBUFFER="git "
else
zle self-insert
fi
}
zle -N _double_space_to_git
bindkey ' ' _double_space_to_git

これで、スペースを2つ連続で入れると git に置き換わる。

git のところは好きなように変えて使ってください。