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 …
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
$ 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
# 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
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.