O comando imap funciona bem em um terminal. O problema é que um terminal trata alguns caracteres de controle especialmente, usando-os para controlar o comportamento do terminal, e não encaminha esses caracteres para o aplicativo em execução no terminal. Ctrl-S e Ctrl-Q são normalmente usados para controle de fluxo. Ctrl-C normalmente faz com que um sinal INTR (interrupção) seja enviado para o aplicativo.
Os aplicativos podem dizer ao terminal para não tratar certos caracteres especialmente e encaminhá-los. O Vim lida com o próprio Ctrl-C e você poderá imapá-lo. (Eu apenas tentei e funcionou para mim.) O Vim não diz ao terminal para encaminhar Ctrl-S e Ctrl-Q, no entanto, então você teria que dizer ao terminal para fazer isso sozinho. Uma maneira é executar este comando no prompt do shell antes de executar o vim:
stty -ixon