Skip to main content

⚙️ Editing Workbench

z-shell/zsh-editing-workbench

Organized shortcuts for various command line editing operations, plus new operations as incremental history word completion.

KeysDescription
Alt+wDelete a shell word 1
Alt+tTranspose (swap) shell words
Alt+mCopy previous shell word, or word before that, etc. when used multiple times
Alt+MJust copy previous shell word without iterating to previous ones
Alt+.Copy last shell word from previous line, or line before that, etc. when used multiple times; can be combined with Alt+m
Ctrl+WDelete word according to configured word style 2:
Alt+rTranspose (swap) words according to configured word style (cursor needs to be placed on beginning of word to swap)
Alt+/Complete some word 3 from history
Alt+h, Alt+HComplete shell word from history (custom version)
Alt+JBreak line
Alt+_Undo

Install Zsh Editing Workbench

Add the following to .zshrc. The config files will be available in ~/.config/zew.

~/.zshrc
zi load z-shell/zsh-editing-workbench
Configure terminals
  • XTerm

To make Alt key work like expected under XTerm add XTerm*metaSendsEscape: true to your resource file, e.g.:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources
  • Konsole

To make Alt key work like expected under Konsole add Konsole*keysym.Meta: Meta to your resource file, e.g.:

echo 'Konsole*keysym.Meta: Meta' >> ~/.config/konsolerc

Footnotes

  1. A shell word is a text that Zsh would see as single segment. For example $(( i + 1 )) is a single shell word.

  2. A word style defines a way Zsh recognizes segments (words) of text in commands that want to use the style information. The style can be configured in zew.conf to be one of:

    • bash words are built up of alphanumeric characters only.
    • normal as in normal shell operation: word characters are alphanumeric characters plus any characters present in the string given by the parameter $WORDCHARS.
    • shell words are complete shell command arguments, possibly including complete quoted strings, or any tokens special to the shell.
    • whitespace words are any set of characters delimited by whitespace.
    • default restore the default settings; this is the same as 'normal' with default $WORDCHARS value.
  3. Some word is in general a sophisticated word, but not a shell word, because of limitations in Zsh history word completion. Some word is rather not build from special characters, it works well for normal characters.