6

I've been trying to get Vim to remap CTRL+S (or ^S) to :w by editing my .vimrc file, however it doesn't work.

This is my current ~/.vimrc configuration:

nmap <c-s> :w<CR>
imap <c-s> <Esc>:w<CR>
imap <c-s> <Esc><c-s>

I read that CTRL+S can run a command which freezes the terminal, however I don't seem to experience this.

If I do press CTRL+S, nothing happens. If I then do ESC and :q I'm informed that I haven't already saved changes.

:current tells me that user vimrc file: "$HOME/.vimrc".

1 Answer 1

8

In the whole <C-a> -> <C-z> range, <C-s> and <C-q> are the only two that can't be mapped in CLI Vim because they are intercepted before they reach the editor.

What they are meant to be used for, flow control, is mostly an artefact of the relatively long history of terminals and networked computing and not really relevant today.

The simplest way to get back the full alphabet for your Ctrl mappings is to add this line to your *rc:

stty -ixon
3
  • 1
    Thanks- I had that at the very end of my .bashrc moved it to the top and CTRL<S works.
    – user183714
    Apr 28, 2013 at 19:04
  • Though there may be applications that require terminal flow control (CTRL-S). Just something to be aware of in case of problems.
    – suspectus
    Apr 28, 2013 at 19:14
  • I haven't come across any before, hopefully I won't though.
    – user183714
    Apr 28, 2013 at 21:57

You must log in to answer this question.