0

CTRL+_ is used to do UNDO in console; is it possible to map that another key combination like CMD + Z?

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
Arnold Roa
  • 369
  • 1
  • 3
  • 7
  • Have you seen [this](http://unix.stackexchange.com/questions/76566/where-do-i-find-a-list-of-terminal-key-codes-to-remap-shortcuts-in-bash#76591) discussion? Maybe it can be of help. – maulinglawns Oct 04 '16 at 17:48

1 Answers1

1

Yes, but that depends on your shell. In bash, you have to use bind:

$ bind '\C-t':undo

This will bind Ctrl-t to undo. Note that you cannot bind Ctrl-z in most terminal emulators. Refer to help bind for more information.

If you want the current list of all key bindings, use bind -P | grep -v "not found".


In zsh, you have to use bindkey:

$ bindkey '\C-t' undo

Keep in mind that you probably want to remove the old bindings for whatever key you'll choose. For example, \C-t is bound to transpose-chars.

In case you're wondering where all those combinations come from: Emacs. See man 1 bash, section "Readline Command Names" for more information.

Zeta
  • 1,009
  • 6
  • 10
  • You actually *can* bind `Ctrl-z` in `zsh`. Also, this does not depend on the terminal emulator, but on the shell. While a terminal emulator *might* prevent `Ctrl-z` from being used, I think it unlikely that any terminal emulator actually does do this, as this is shortcut is generally used to send `SIGSTOP` to the running process. – Adaephon Oct 10 '16 at 13:53
  • 1
    The "inability" to bind Ctrl+z or Ctrl+c is because the terminal intercepts these and sends signals *instead*, thus the shell does not see these characters. But if you bind Ctrl+z (or Ctrl+c) *and* reconfigure the terminal (e.g. `stty susp ^Y intr ^U`) then the binding(s) will work. – Kamil Maciorowski Aug 09 '22 at 05:54
  • 1
    @Adaephon, that's `SIGTSTP` sent to the foreground process group / job, not *"`SIGSTOP` sent to the running process"*. – Stéphane Chazelas Aug 09 '22 at 06:05