66 lines
1.9 KiB
Bash
66 lines
1.9 KiB
Bash
|
# Other conveniences
|
||
|
bindkey -M viins '^a' beginning-of-line
|
||
|
bindkey -M viins '^d' push-line-or-edit
|
||
|
|
||
|
# Up arrow:
|
||
|
bindkey '\e[A' history-substring-search-up
|
||
|
bindkey '\eOA' history-substring-search-up
|
||
|
# Down arrow:
|
||
|
bindkey '\e[B' history-substring-search-down
|
||
|
bindkey '\eOB' 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
|
||
|
}
|
||
|
zle -N fancy-ctrl-z
|
||
|
bindkey '^Z' fancy-ctrl-z
|
||
|
|
||
|
if (( $+commands[fzf] )); then
|
||
|
bindkey '^R' fzf-history-widget
|
||
|
fi
|
||
|
|
||
|
# Omni-Completion
|
||
|
if (( $+commands[fasd] )); then
|
||
|
bindkey -M viins '^x^f' fasd-complete-f # C-x C-f to do fasd-complete-f (only files)
|
||
|
bindkey -M viins '^x^d' fasd-complete-d # C-x C-d to do fasd-complete-d (only directories)
|
||
|
fi
|
||
|
|
||
|
# 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
|
||
|
}
|
||
|
|
||
|
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
|
||
|
|
||
|
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 -N history-beginning-search-backward-then-append
|
||
|
bindkey -M viins '^x^l' history-beginning-search-backward-then-append
|