diff --git a/shell/zsh/keybinds.zsh b/shell/zsh/keybinds.zsh index 40a04464..645e0f6d 100644 --- a/shell/zsh/keybinds.zsh +++ b/shell/zsh/keybinds.zsh @@ -20,22 +20,24 @@ zle -N change-surround surround bindkey -a cs change-surround bindkey -a ds delete-surround bindkey -a ys add-surround -bindkey -M visual S add-surround -# add vimmish text-object support to zsh +# <5.0.8 doesn't have visual map if is-at-least 5.0.8; then - autoload -U select-quoted; zle -N select-quoted - for m in visual viopp; do - for c in {a,i}{\',\",\`}; do - bindkey -M $m $c select-quoted - done + bindkey -M visual S add-surround + + # add vimmish text-object support to zsh + autoload -U select-quoted; zle -N select-quoted + for m in visual viopp; do + for c in {a,i}{\',\",\`}; do + bindkey -M $m $c select-quoted done - autoload -U select-bracketed; zle -N select-bracketed - for m in visual viopp; do - for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do - bindkey -M $m $c select-bracketed - done + done + autoload -U select-bracketed; zle -N select-bracketed + for m in visual viopp; do + for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do + bindkey -M $m $c select-bracketed done + done fi # Open current prompt in external editor @@ -66,13 +68,13 @@ bindkey '^[[B' history-substring-search-down # C-z to toggle current process (background/foreground) fancy-ctrl-z () { - if [[ $#BUFFER -eq 0 ]]; then - BUFFER="fg" - zle accept-line - else - zle push-input - zle clear-screen - fi + if [[ $#BUFFER -eq 0 ]]; then + BUFFER="fg" + zle accept-line + else + zle push-input + zle clear-screen + fi } zle -N fancy-ctrl-z bindkey '^Z' fancy-ctrl-z @@ -82,32 +84,32 @@ bindkey -M viins '^x^f' fasd-complete-f # C-x C-f to do fasd-complete-f (only f bindkey -M viins '^x^d' fasd-complete-d # C-x C-d to do fasd-complete-d (only directories) # Completing words in buffer in tmux if [ -n "$TMUX" ]; then - _tmux_pane_words() { - local expl - local -a w - if [[ -z "$TMUX_PANE" ]]; then - _message "not running inside tmux!" - return 1 - fi - w=( ${(u)=$(tmux capture-pane \; show-buffer \; delete-buffer)} ) - _wanted values expl 'words from current tmux pane' compadd -a w - } + _tmux_pane_words() { + local expl + local -a w + if [[ -z "$TMUX_PANE" ]]; then + _message "not running inside tmux!" + return 1 + fi + w=( ${(u)=$(tmux capture-pane \; show-buffer \; delete-buffer)} ) + _wanted values expl 'words from current tmux pane' compadd -a w + } - zle -C tmux-pane-words-prefix complete-word _generic - zle -C tmux-pane-words-anywhere complete-word _generic + zle -C tmux-pane-words-prefix complete-word _generic + zle -C tmux-pane-words-anywhere complete-word _generic - bindkey -M viins '^x^n' tmux-pane-words-prefix - bindkey -M viins '^x^o' tmux-pane-words-anywhere + bindkey -M viins '^x^n' tmux-pane-words-prefix + bindkey -M viins '^x^o' tmux-pane-words-anywhere - zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' completer _tmux_pane_words - zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' ignore-line current - zstyle ':completion:tmux-pane-words-anywhere:*' matcher-list 'b:=* m:{A-Za-z}={a-zA-Z}' + zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' completer _tmux_pane_words + zstyle ':completion:tmux-pane-words-(prefix|anywhere):*' ignore-line current + zstyle ':completion:tmux-pane-words-anywhere:*' matcher-list 'b:=* m:{A-Za-z}={a-zA-Z}' fi # Vim's C-x C-l in zsh history-beginning-search-backward-then-append() { - zle history-beginning-search-backward - zle vi-add-eol + zle history-beginning-search-backward + zle vi-add-eol } zle -N history-beginning-search-backward-then-append bindkey -M viins '^x^l' history-beginning-search-backward-then-append @@ -120,6 +122,6 @@ bindkey "^[[3~" delete-char bindkey -sM vicmd '^[' '^G' bindkey -rM viins '^X' bindkey -M viins '^X,' _history-complete-newer \ - '^X/' _history-complete-older \ - '^X`' _bash_complete-word + '^X/' _history-complete-older \ + '^X`' _bash_complete-word