aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--98-bindkeys.zsh54
1 files changed, 38 insertions, 16 deletions
diff --git a/98-bindkeys.zsh b/98-bindkeys.zsh
index 0d63dce..a68502d 100644
--- a/98-bindkeys.zsh
+++ b/98-bindkeys.zsh
@@ -16,25 +16,11 @@ autoload edit-command-line
zle -N edit-command-line
bindkey '' edit-command-line
-nvim-feed-keys() {
- keys=${1/\'/\\\'}
- keys=${keys/\\/\\\\}
- python3 - <<END
-import neovim, os
-try:
- nvim_socket = os.environ["NVIM"]
- nvim = neovim.attach('socket', path=nvim_socket)
- nvim.feedkeys('$keys')
-except KeyError:
- pass;
-END
-}
-
# This allows a ctrl-w motion with neovim, so one does not have do a terminal
# escape to switch panes.
nvim-move-pane() {
read -sk key
- nvim-feed-keys "$key"
+ nvimctl feedkeys "$key"
}
# Does anyone actually use the execute prompt in zsh? Rebind to go directly to
@@ -44,7 +30,7 @@ nvim-cmd-mode() {
# fallback to original behavior.
zle execute-named-cmd
else
- nvim-feed-keys ":"
+ nvimctl feedkeys ":"
fi
}
@@ -75,10 +61,46 @@ expand-last-file() {
fi
}
+select-nvim-reg() {
+ read -sk reg
+ ZSH_VIM_REGISTER_SEL="$reg"
+}
+
+put-after-reg-override() {
+ reg_sel="$ZSH_VIM_REGISTER_SEL"
+ ZSH_VIM_REGISTER_SEL=""
+ if [ -z "$NVIM" ] || [ -z "$reg_sel" ] ; then
+ zle vi-put-after
+ else
+ new_l_buffer="${BUFFER[0,$CURSOR+1]}"
+ new_l_buffer="${new_l_buffer}$(nvimctl getreg "$reg_sel")"
+ new_r_buffer="${BUFFER[$CURSOR+2,-1]}"
+
+ BUFFER="${new_l_buffer}$new_r_buffer"
+ CURSOR=$#new_l_buffer
+ fi
+}
+
+nvim-complete-lst() {
+ compadd "lol" "hi" "you" "apples"
+ compadd "good" "day" "sir"
+}
+
+zle -C nvim-complete menu-select nvim-complete-lst
+
zle -N nvim-move-pane
zle -N nvim-cmd-mode
zle -N expand-last-file
+zle -N select-nvim-reg
+zle -N put-after-reg-override
bindkey -M vicmd '' nvim-move-pane
bindkey -M vicmd ':' nvim-cmd-mode
bindkey -M viins '' expand-last-file
+
+# Allow selecting and pasting registers from neovim using @<reg>p
+bindkey -M vicmd '@' select-nvim-reg
+bindkey -M vicmd 'p' put-after-reg-override
+
+bindkey -M viins '' nvim-complete
+