When I hit Ctrl+x, Ctrl+e in
zsh, I can edit the current command line in by
$VISUAL. However, I'd like to use
nano, and to get syntax highlighting for shell syntax there, I have to pass
-Y sh, as
nano doesn't recognise shell syntax automatically when editing the command line (
/tmp/random-name without a
.sh extension to pass to
I can execute
EDITOR='nano -Y sh' VISUAL="$EDITOR"
and then press Ctrl+x, Ctrl+e to get the desired result. However, other programs use
$VISUAL, too. If I set
$VISUAL as above, and then do (for example)
git commit, the commit message is highlighted as shell syntax, which I want to avoid.
I also tried
EDITOR='nano -Y sh' fc
which did work, however that seems a little verbose to type out each time (I might put it in a function though). Also,
fc prepopulates the command line with the last history command line, and to use it, I have to type out the command. That means I could not type out some long command in
zsh and then decide to edit it in
nano as I could with the keyboard shortcut.
So, is there a way for me to tell
zsh the editor/flags to use only for editing the command line when pressing Ctrl+x, Ctrl+e that other programs ignore? I would love some environment variable that I can set in
~/.zshrc and then forget about.