When I hit Ctrl+x, Ctrl+e in zsh, I can edit the current command line in by $EDITOR or $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 (zsh creates /tmp/random-name without a .sh extension to pass to nano).
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 $EDITOR/$VISUAL, too. If I set $EDITOR/$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.