Saving with CTRL-s in vim

5,382

See this wikia.com article for the exact thing you're tyring to do: http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files

In a nutshell you need to do the following.

1. Add this to ~/.vimrc

" If the current buffer has never been saved, it will have no name,
" call the file browser to save it, otherwise just save it.
nnoremap <silent> <C-S> :if expand("%") == ""<CR>browse confirm w<CR>else<CR>confirm w<CR>endif<CR>

2. Disable terminal's interpretation of Ctrl+S

# bash
# No ttyctl, so we need to save and then restore terminal settings
vim()
{
    local ret STTYOPTS="$(stty -g)"
    stty -ixon
    command vim "$@"
    ret=$?
    stty "$STTYOPTS"
    return "$ret"
}

# zsh
vim() STTY=-ixon command vim "$@"
Share:
5,382

Related videos on Youtube

Soumen Das
Author by

Soumen Das

Updated on September 18, 2022

Comments

  • Soumen Das
    Soumen Das over 1 year

    I have added this line in .vimrc so that pressing ctrl-s saves the current file

    :nmap <C-s> :w!<cr>
    :imap <C-s> <esc>:w!<cr>
    

    But this is not working. Any suggestions about what I am doing wrong?

    • Admin
      Admin over 11 years
      I would encourage you to not use these kind of mappings, but learn the vim shortcuts. Once you use a vim on a different system, you will get lost.
  • Soumen Das
    Soumen Das over 11 years
    The solution given above works fine and solves my problem. But Here is another probelm. <TAB> doesn't work now in insert mode. When in press <TAB> cursor returns to first column of current line!! Any solutions?