Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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?

share|improve this question
add comment

1 Answer

up vote 3 down vote accepted

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.

copy-region-as-kill-deactivate-mark () {
  zle copy-region-as-kill
  zle set-mark-command -n -1
}
zle -N copy-region-as-kill-deactivate-mark
bindkey '\ew' copy-region-as-kill-deactivate-mark
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.