I have a couple of questions regarding the emacs-like keyboard bindings in Zsh. As background to all the questions: I have Emacs-like keybinding activated with bindkey -e
(activated by default)
Copying and region highlighting:
In Emacs, if you run C-space
(set-mark
), select a region and then copy it using M-w
, Emacs puts the region in the kill ring and stops selecting text (i.e. if I move the point, no more text is selected).
However, I can't get the same behavior in ZLE. Once I copy a region with M-W
, the selection mode is still on, and if I move my cursor, the selection keeps changing.
Stop selection:
In Emacs, if I am selecting a region, and press C-g
, the selection stops (the current mark is killed). In Zsh, by default, C-g
starts a new line in the shell. So is there a ZLE command that I can bind to (maybe using something different from C-g
) to stop an ongoing selection?
Best Answer
To deactivate the selection, run
set-mark-command
with a negative argument:ESC - Ctrl+Space
.To copy the region and deactivate the selection, write a function that performs the two actions, then declare it as a widget with
zle -N
and bind that widget to a key.