From ec70c0c393e53004b885d146dd77b9a3f136971a Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Tue, 4 Aug 2020 16:43:32 +0200 Subject: lib: bind keys to viins and vicmd keymaps and clean up file Fixes #8468 --- lib/key-bindings.zsh | 89 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 29 deletions(-) (limited to 'lib/key-bindings.zsh') diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 0e056dc72..10053f6f3 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -15,56 +15,87 @@ if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then zle -N zle-line-finish fi -bindkey -e # Use emacs key bindings +# Use emacs key bindings +bindkey -e -bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark -bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls -bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. -if [[ "${terminfo[kpp]}" != "" ]]; then - bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history +# [PageUp] - Up a line of history +if [[ -n "${terminfo[kpp]}" ]]; then + bindkey -M emacs "${terminfo[kpp]}" up-line-or-history + bindkey -M viins "${terminfo[kpp]}" up-line-or-history + bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history fi -if [[ "${terminfo[knp]}" != "" ]]; then - bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history +# [PageDown] - Down a line of history +if [[ -n "${terminfo[knp]}" ]]; then + bindkey -M emacs "${terminfo[knp]}" down-line-or-history + bindkey -M viins "${terminfo[knp]}" down-line-or-history + bindkey -M vicmd "${terminfo[knp]}" down-line-or-history fi -# start typing + [Up-Arrow] - fuzzy find history forward -if [[ "${terminfo[kcuu1]}" != "" ]]; then +# Start typing + [Up-Arrow] - fuzzy find history forward +if [[ -n "${terminfo[kcuu1]}" ]]; then autoload -U up-line-or-beginning-search zle -N up-line-or-beginning-search - bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search fi -# start typing + [Down-Arrow] - fuzzy find history backward -if [[ "${terminfo[kcud1]}" != "" ]]; then +# Start typing + [Down-Arrow] - fuzzy find history backward +if [[ -n "${terminfo[kcud1]}" ]]; then autoload -U down-line-or-beginning-search zle -N down-line-or-beginning-search - bindkey "${terminfo[kcud1]}" down-line-or-beginning-search + + bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search + bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search fi -if [[ "${terminfo[khome]}" != "" ]]; then - bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line +# [Home] - Go to beginning of line +if [[ -n "${terminfo[khome]}" ]]; then + bindkey -M emacs "${terminfo[khome]}" beginning-of-line + bindkey -M viins "${terminfo[khome]}" beginning-of-line + bindkey -M vicmd "${terminfo[khome]}" beginning-of-line fi -if [[ "${terminfo[kend]}" != "" ]]; then - bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line +# [End] - Go to end of line +if [[ -n "${terminfo[kend]}" ]]; then + bindkey -M emacs "${terminfo[kend]}" end-of-line + bindkey -M viins "${terminfo[kend]}" end-of-line + bindkey -M vicmd "${terminfo[kend]}" end-of-line fi -bindkey ' ' magic-space # [Space] - do history expansion - -bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word -bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word - -if [[ "${terminfo[kcbt]}" != "" ]]; then - bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards +# [Shift-Tab] - move through the completion menu backwards +if [[ -n "${terminfo[kcbt]}" ]]; then + bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete fi -bindkey '^?' backward-delete-char # [Backspace] - delete backward -if [[ "${terminfo[kdch1]}" != "" ]]; then - bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward +# [Backspace] - delete backward +bindkey '^?' backward-delete-char +# [Delete] - delete forward +if [[ -n "${terminfo[kdch1]}" ]]; then + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char # [Delete] - delete forward + bindkey -M vicmd "${terminfo[kdch1]}" delete-char # [Delete] - delete forward else bindkey "^[[3~" delete-char bindkey "^[3;5~" delete-char - bindkey "\e[3~" delete-char fi +# [Ctrl-RightArrow] - move forward one word +bindkey -M emacs '^[[1;5C' forward-word +bindkey -M viins '^[[1;5C' forward-word +bindkey -M vicmd '^[[1;5C' forward-word +# [Ctrl-LeftArrow] - move backward one word +bindkey -M emacs '^[[1;5D' backward-word +bindkey -M viins '^[[1;5D' backward-word +bindkey -M vicmd '^[[1;5D' backward-word + +bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark +bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls +bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. +bindkey ' ' magic-space # [Space] - don't do history expansion + # Edit the current command line in $EDITOR autoload -U edit-command-line zle -N edit-command-line -- cgit v1.2.3-70-g09d2 From e04564d52880b39032ca6a1841a48138db185aec Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Tue, 4 Aug 2020 17:13:22 +0200 Subject: lib: add CTRL-backspace and CTRL-delete to delete whole words MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #7609 Closes #8191 Co-authored-by: Michal Grňo --- lib/key-bindings.zsh | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'lib/key-bindings.zsh') diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 10053f6f3..ac1adf2e7 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -71,17 +71,33 @@ if [[ -n "${terminfo[kcbt]}" ]]; then fi # [Backspace] - delete backward -bindkey '^?' backward-delete-char +bindkey -M emacs '^?' backward-delete-char +bindkey -M viins '^?' backward-delete-char +bindkey -M vicmd '^?' backward-delete-char # [Delete] - delete forward if [[ -n "${terminfo[kdch1]}" ]]; then bindkey -M emacs "${terminfo[kdch1]}" delete-char bindkey -M viins "${terminfo[kdch1]}" delete-char # [Delete] - delete forward bindkey -M vicmd "${terminfo[kdch1]}" delete-char # [Delete] - delete forward else - bindkey "^[[3~" delete-char - bindkey "^[3;5~" delete-char + bindkey -M emacs "^[[3~" delete-char + bindkey -M viins "^[[3~" delete-char + bindkey -M vicmd "^[[3~" delete-char + + bindkey -M emacs "^[3;5~" delete-char + bindkey -M viins "^[3;5~" delete-char + bindkey -M vicmd "^[3;5~" delete-char fi +# [Ctrl-Backspace] - delete whole backward-word +bindkey -M emacs '^H' backward-kill-word +bindkey -M viins '^H' backward-kill-word +bindkey -M vicmd '^H' backward-kill-word +# [Ctrl-Delete] - delete whole forward-word +bindkey -M emacs '^[[3;5~' kill-word +bindkey -M viins '^[[3;5~' kill-word +bindkey -M vicmd '^[[3;5~' kill-word + # [Ctrl-RightArrow] - move forward one word bindkey -M emacs '^[[1;5C' forward-word bindkey -M viins '^[[1;5C' forward-word @@ -91,11 +107,13 @@ bindkey -M emacs '^[[1;5D' backward-word bindkey -M viins '^[[1;5D' backward-word bindkey -M vicmd '^[[1;5D' backward-word + bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. bindkey ' ' magic-space # [Space] - don't do history expansion + # Edit the current command line in $EDITOR autoload -U edit-command-line zle -N edit-command-line -- cgit v1.2.3-70-g09d2 From 39c0073225194cdb11f2e42bb7d5e63cbf9e2955 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 5 Aug 2020 14:34:14 +0200 Subject: lib: remove CTRL-Backspace binding for vi keymaps --- lib/key-bindings.zsh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'lib/key-bindings.zsh') diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index ac1adf2e7..4916034b3 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -76,9 +76,9 @@ bindkey -M viins '^?' backward-delete-char bindkey -M vicmd '^?' backward-delete-char # [Delete] - delete forward if [[ -n "${terminfo[kdch1]}" ]]; then - bindkey -M emacs "${terminfo[kdch1]}" delete-char - bindkey -M viins "${terminfo[kdch1]}" delete-char # [Delete] - delete forward - bindkey -M vicmd "${terminfo[kdch1]}" delete-char # [Delete] - delete forward + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char + bindkey -M vicmd "${terminfo[kdch1]}" delete-char else bindkey -M emacs "^[[3~" delete-char bindkey -M viins "^[[3~" delete-char @@ -91,8 +91,6 @@ fi # [Ctrl-Backspace] - delete whole backward-word bindkey -M emacs '^H' backward-kill-word -bindkey -M viins '^H' backward-kill-word -bindkey -M vicmd '^H' backward-kill-word # [Ctrl-Delete] - delete whole forward-word bindkey -M emacs '^[[3;5~' kill-word bindkey -M viins '^[[3;5~' kill-word -- cgit v1.2.3-70-g09d2 From 079e7bb5e0a79171f3356d55d3f6302a82645a39 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Thu, 6 Aug 2020 08:55:29 +0200 Subject: lib: remove CTRL-Backspace key binding altogether It conflicts with normal Backspace behavior. Fixes #9155 --- lib/key-bindings.zsh | 2 -- 1 file changed, 2 deletions(-) (limited to 'lib/key-bindings.zsh') diff --git a/lib/key-bindings.zsh b/lib/key-bindings.zsh index 4916034b3..aaa73046e 100644 --- a/lib/key-bindings.zsh +++ b/lib/key-bindings.zsh @@ -89,8 +89,6 @@ else bindkey -M vicmd "^[3;5~" delete-char fi -# [Ctrl-Backspace] - delete whole backward-word -bindkey -M emacs '^H' backward-kill-word # [Ctrl-Delete] - delete whole forward-word bindkey -M emacs '^[[3;5~' kill-word bindkey -M viins '^[[3;5~' kill-word -- cgit v1.2.3-70-g09d2