-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.zshrc-keybindings.linux
135 lines (118 loc) · 4.93 KB
/
.zshrc-keybindings.linux
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env zsh
################################################################################
# Keystrokes (bash-like)
################################################################################
backward-kill-word-bash () {
local WORDCHARS=''
zle backward-kill-word
}
zle -N backward-kill-word-bash
backward-kill-dir () {
local WORDCHARS=${WORDCHARS/\/}
zle backward-kill-word
}
zle -N backward-kill-dir
kill-word-bash () {
local WORDCHARS=''
zle kill-word
}
zle -N kill-word-bash
kill-word-dir () {
local WORDCHARS=${WORDCHARS/\/}
zle kill-word
}
zle -N kill-word-dir
backward-word-bash () {
local WORDCHARS=''
zle backward-word
}
zle -N backward-word-bash
backward-word-dir () {
local WORDCHARS=${WORDCHARS/\/}
zle backward-word
}
zle -N backward-word-dir
forward-word-bash () {
local WORDCHARS=''
zle forward-word
}
zle -N forward-word-bash
forward-word-dir () {
local WORDCHARS=${WORDCHARS/\/}
zle forward-word
}
zle -N forward-word-dir
################################################################################
# Uncomment for Archlinux
################################################################################
# https://wiki.archlinux.org/index.php/Zsh#Key_bindings
# create a zkbd compatible hash;
# to add other keys to this hash, see: man 5 terminfo
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
key[Insert]="${terminfo[kich1]}"
key[Backspace]="${terminfo[kbs]}"
key[Delete]="${terminfo[kdch1]}"
key[Up]="${terminfo[kcuu1]}"
key[Down]="${terminfo[kcud1]}"
key[Left]="${terminfo[kcub1]}"
key[Right]="${terminfo[kcuf1]}"
key[PageUp]="${terminfo[kpp]}"
key[PageDown]="${terminfo[knp]}"
key[Shift-Tab]="${terminfo[kcbt]}"
# setup key accordingly
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
# Finally, make sure the terminal is in application mode, when zle is
# active. Only then are the values from $terminfo valid.
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
autoload -Uz add-zle-hook-widget
function zle_application_mode_start { echoti smkx }
function zle_application_mode_stop { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
fi
################################################################################
# Keybindings on lxqt
################################################################################
# To find out keycode: ctrl-v, then type the keys to figure-out.
bindkey "^[^H" backward-kill-word-bash # alt-backspace
bindkey "^[^?" backward-kill-word-bash # alt-backspace (TERM=linux)
bindkey "^[w" backward-kill-dir # alt-w
bindkey "^[b" backward-word # alt-b
bindkey "^[[1;3D" backward-word-bash # alt-left
bindkey "^[[1;5D" backward-word-bash # ctrl-left
bindkey "^B" backward-word-dir # ctrl-b
bindkey "^[f" forward-word # alt-f
bindkey "^[[1;3C" forward-word-bash # alt-right
bindkey "^[[1;5C" forward-word-bash # ctrl-right
bindkey "^F" forward-word-dir # ctrl-f
################################################################################
# Keybindings on tty (TERM=linux) -- choose accordingly
################################################################################
if [[ $TERM == linux ]]; then
echo
echo '#################################################'
echo '# #'
echo "# TERM=$TERM -> assume tty console. #"
echo '# #'
echo '# Unavailable shortcuts: #'
echo '# - ctrl-left for backward-word-bash #'
echo '# - ctrl-right for forward-word-bash #'
echo '# #'
echo '# See also: https://stackoverflow.com/a/7779997 #'
echo '# #'
echo '#################################################'
echo
fi