Editing long command lines in a shell is very slow and boring. Wouldn’t it be cool, if you could utilize the full power of Vim (or your editor of choice) instead? Well, it is not only possible, it is also incredibly easy to set-up …
EDITOR
If you haven’t done so already, it is now time to set your EDITOR
environment variable. For instance, I have the following line in my ~/.zshrc
:
$ export EDITOR=vim # or emacs or nano or ...
EDITOR
specifies the editor, zsh
depends on for its the magical “edit command line” feature, you’ll see in a minute. Basically, all editors are fine for this.
To configure Z Shell, append following snippet to your ~/.zshrc
:
# Use ESC to edit the current command line:
autoload -U edit-command-line
zle -N edit-command-line
bindkey '\033' edit-command-line
With that in place you can press ESC
to open Vim, which is automatically pre-filled with the content of your current command line. Edit the command as you like and quit Vim with :wq
. Afterwards, you are back at the point where you started Vim, but your command line is changed :)
You may notice a small delay after pressing ESC
and before your editor opens. Setting KEYTIMEOUT
to a lower value fixes this problem. I’ve set the environment variable to 1
in my personal ~/zshrc
:
export KEYTIMEOUT=1
Disclaimer: This post is about Z Shell – I know the same thing is possible with bash
and I don’t care!
Software: Ubuntu v15.04, Z Shell v5.0.7, and Vim v7.4.