fc não executará o comando se o comando do editor não tiver saído com sucesso. No Vim, há um comando para forçar isso : :cq :
:cq :cquit
:cq[uit][!] Quit Vim with an error code, so that the compiler
will not compile the same file again.
WARNING: All changes in files are lost! Also when the
[!] is not used. It works like ":qall!" :qall,
except that Vim returns a non-zero exit code.
Então, quando você não quiser executar o comando, use :cq para sair em vez de :q! . Pode ser possível fazer o Vim fazer isso se você não fez nenhuma mudança, mas isso provavelmente será mais irritante para trabalhar de maneira confiável do que apenas usar :cq .