⚙️ Editing Workbench
z-shell/zsh-editing-workbench
Organized shortcuts for various command line editing operations, plus new operations as incremental history word completion.
| Keys | Description |
|---|---|
| Alt+w | Delete a shell word 1 |
| Alt+t | Transpose (swap) shell words |
| Alt+m | Copy previous shell word, or word before that, etc. when used multiple times |
| Alt+M | Just 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+W | Delete word according to configured word style 2: |
| Alt+r | Transpose (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+H | Complete shell word from history (custom version) |
| Alt+J | Break line |
| Alt+_ | Undo |
Install Zsh Editing Workbench
- Zi
- Zgen
- Standalone
Add the following to .zshrc. The config files will be available in ~/.config/zew.
zi load z-shell/zsh-editing-workbench
Add zgen load z-shell/zsh-editing-workbench to .zshrc and issue a zgen reset (this assumes that there is a proper zgen save construct in .zshrc). The config files will be available in ~/.config/zew.
After extracting ZEW to {some-directory} add the following two lines to ~/.zshrc:
fpath+=( {some-directory} )
source "{some-directory}/zsh-editing-workbench.plugin.zsh"
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
-
A shell word is a text that Zsh would see as single segment. For example
$(( i + 1 ))is a single shell word. ↩ -
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
$WORDCHARSvalue.
-
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. ↩