Help us understand the problem. What is going on with this article?

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 のところは好きなように変えて使ってください。

mollifier
zsh, vim, vimperator, JavaScript, iOS, .NET に興味があるプログラマ
http://mollifier.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away