Can I set something like ctrl+s to save the file?
I don't want to use :w every time.
Can I set something like ctrl+s to save the file?
I don't want to use :w every time.
First of all stop using :w to save. Use :update instead. :update writes the file to disk only when there are changes. So, it could be really helpful especially if the file is huge.
Now to map <C-S> to :update here is how you do it
nnoremap <C-S> :update<cr>
You may also want to have this mapping in Insert mode too. For that use this
inoremap <C-S> <Esc>:update<cr>gi
This mapping goes normal mode, executes the :update command and then leaves you back where you are in insert mode.
So, that is how you remap a key.
But I have :update mapped to zz in my vimrc file. zz is far more easy to hit than Ctrl + S. Also, mapping Ctrl + S can cause issues in Unix terminals as pointed out in the comments by @Sato Katsura.
So if you wish to use zz, you can add that as follows
nnoremap zz :update<cr>
Yes, that's actually set up in the mswin.vim file that distributed with Vim 6.2 and above for windows.
It contains the following mappings:
" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
See Vim Wikia page on mapping Ctrl-S for this and other possible mappings.
With ideaVim pluging on WebStorm and prettier configured to format on save (not through File Watchers), you must use :w instead of :update.
giinstead ofa, or better yet, use<C-o>instead of<esc>. – DJMcMayhem Jul 22 '16 at 05:10Ctrl-Sis the stop character. You can usesttyto disable it, but then you won't be able to pause a program's output. RemappingCtrl-SandCtrl-Qis a really bad idea, about as bad as remappingEsc. – Sato Katsura Jul 22 '16 at 06:19Ctrl - S. I usezzfor saving. – Durga Swaroop Jul 22 '16 at 08:18atogi. But I am not really sure what<C-o>does. Can you explain why that is better than<Esc>? – Durga Swaroop Jul 22 '16 at 08:20sttyadjustments. – Sato Katsura Jul 22 '16 at 08:29sttyterminal before I am not aware of these issues. – Durga Swaroop Jul 22 '16 at 09:13sttyis a command that sets terminal parameters. It's all explained in the wiki. – Sato Katsura Jul 22 '16 at 09:23<C-o>is extremely useful for mappings. It means "Leave insert command to do a single normal mode command". – DJMcMayhem Jul 22 '16 at 14:20zzis really easy to hit. It has become a reflex for me these days. – Durga Swaroop Jul 25 '16 at 10:18<C-o>leaves the Insert mode (switches to the Normal mode), but after you do one command, it returns back. You might end up at a different position, if you want to (<C-o>^), but I don't see a problem with:updatein this regard. In other words, you might want to doinoremap <C-s> <C-o>:update<CR>. – x-yuri Dec 12 '21 at 13:18