blob: 0d63dcef658a5cd6c76fe64a526e595b50db59ea (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
bindkey -v
bindkey -M menuselect 'h' vi-backward-char
bindkey -M menuselect 'k' vi-up-line-or-history
bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -s '[32;2u' ' '
bindkey '[127;2u' backward-delete-char
bindkey -s '[225;2u' ' '
bindkey -v '^?' backward-delete-char
bindkey -v '' backward-delete-char
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"
}
# Does anyone actually use the execute prompt in zsh? Rebind to go directly to
# the neovim command prompt.
nvim-cmd-mode() {
if [[ -z "$NVIM" ]] ; then
# fallback to original behavior.
zle execute-named-cmd
else
nvim-feed-keys ":"
fi
}
quote-escape() {
sed "s/'/'\"'\"'/g" <<< "$1"
}
expand-last-file() {
local before_cursor=$LBUFFER
local after_cursor=$RBUFFER
local after_cursor_first_word=${after_cursor/ *}
local after_cursor_remaining=${after_cursor[${#after_cursor_first_word}+1,-1]}
local before_cursor_last_word=${before_cursor//* }
local before_cursor_remaining=${before_cursor[0, -${#before_cursor_last_word}-1]}
local file="${before_cursor_last_word}${after_cursor_first_word}"
if [ -f "${file}" ] ; then
local catted_file="$(cat ${file})"
catted_file="'$(quote-escape "${catted_file}")'"
local new_l_buffer="${before_cursor_remaining}${catted_file}"
BUFFER="${new_l_buffer}${after_cursor_remaining}"
CURSOR=$#new_l_buffer
fi
}
zle -N nvim-move-pane
zle -N nvim-cmd-mode
zle -N expand-last-file
bindkey -M vicmd '' nvim-move-pane
bindkey -M vicmd ':' nvim-cmd-mode
bindkey -M viins '' expand-last-file
|