galaxy-sixth-sensey - bindkey -vしてた人向けのauto-fu.zsh導入方法
2017/02/18
bindkey -vしてた人向けのauto-fu.zsh導入方法

 このPRで色々教えてもらったので書いときます。

 まず今まで使ってたキーバインド名、viinsafuvicmdafu-vicmdという名前に割当たります。
afuは補完機能付きviinsafu-vicmdafuvicmd(の代わり)を行き来するためのものです。

auto-fu.zshの導入前後の、zsh設定の具体的な変更内容

Before

# Use viins
bindkey -v

# Vim nize
bindkey -M vicmd '_'  vi-first-non-blank
bindkey -M vicmd 'g_' vi-end-of-line

# Emacs nize
bindkey -M viins '^n' down-history
bindkey -M viins '^p' up-history
bindkey -M viins '^a' beginning-of-line
bindkey -M viins '^e' end-of-line
bindkey -M viins '^b' backward-char
bindkey -M viins '^f' forward-char
bindkey -M viins '^k' kill-line
bindkey -M viins '^u' backward-kill-line
bindkey -M viins '^d' delete-char

After

source /path/to/auto-fu.zsh

# Use afu-vicmd
zle -N zle-keymap-select auto-fu-zle-keymap-select

# Vim nize
bindkey -M afu-vicmd '_'  vi-first-non-blank
bindkey -M afu-vicmd 'g_' vi-end-of-line
bindkey -M afu '^['   afu+vi-cmd-mode
bindkey -M afu '^X^V' afu+vi-cmd-mode  # Escでafu-vicmdに行く

# Emacs nize insert mode
bindkey -M afu '^n' down-history
bindkey -M afu '^p' up-history
bindkey -M afu '^a' beginning-of-line
bindkey -M afu '^e' end-of-line
bindkey -M afu '^b' backward-char
bindkey -M afu '^f' forward-char
bindkey -M afu '^k' kill-line
bindkey -M afu '^u' backward-kill-line
bindkey -M afu '^d' delete-char

実際にviinsafuvicmdafu-vicmdが割り当たってるのがわかるかと思います。

最後に注意

 zle -N zle-keymap-select auto-fu-zle-keymap-selectは既存のzle-keymap-selectを上書きするので、他の設定がある場合は以下のようにしましょう。

function zle-keymap-select {
	auto-fu-zle-keymap-select "$@"
	shell_kawaii_build_prompt
	zle reset-prompt
}
zle -N zle-keymap-select

(この例はauto-fu.zshとzsh-shell-kawaiiの複合設定)


この記事はこちらから修正リクエストを送ることができます。
bindkey -vしてた人向けのauto-fu.zsh導入方法 - github
ゴミ箱ボタンの左にある、鉛筆ボタンを押してね!