在vim中如何把“保存”映射到ctrl-s

在vim中,如何将“保存”( :w )映射到ctrl -s

我正在尝试“映射”这个命令,但是当我按下ctrls时xterm会冻结。

如果我给CTRLVCTRLS仍然我只看到一个^ ,而不是^S

Ctrl + S是terminal停止更新的常用命令,这是一种减慢输出速度的方法,以便您可以在没有回滚缓冲区的terminal上读取它。 首先看看你是否可以configuration你的xterm来将Ctrl + S传递给应用程序。 然后这些映射命令将工作:

 noremap <silent> <CS> :update<CR> vnoremap <silent> <CS> <CC>:update<CR> inoremap <silent> <CS> <CO>:update<CR> 

顺便说一句:如果Ctrl + S冻结你的terminal,请按Ctrl + Q让它重新开始。

在与VI的Linux中,你想按下CtrlS并让它保存你的文档。 这工作对我来说, 把下面的三行放在你的.vimrc文件中 。 这个文件应该位于你的主目录: /home/el/.vimrc如果这个文件不存在,你可以创build它。

 :nmap <cs> :w<CR> :imap <cs> <Esc>:w<CR>a 

第一行说:按下文档中的CtrlS将执行:w <enter>键盘组合。

第二行表示:在“插入”模式下按下文档内的CtrlS将跳转到正常模式,执行:w <enter ,然后按a返回到插入模式。 您的光标可能在此事件中移动。

您可能会注意到,按CtrlS执行一个'XOFF',停止接收命令(如果您使用ssh)。

为了解决这个问题,把这两个命令放在〜/ .bash_profile中

 bind -r '\Cs' stty -ixon 

所做的是closuresCtrlS的绑定,并在按下CtrlS时消除任何XOFF屏幕消息。 请注意,对.bash_profile进行更改之后,必须使用“source .bash_profile”命令或注销/login命令重新运行它。

更多信息: http : //vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files

Mac OSX的terminal+ zsh?

在你的.zprofile

 alias vim="stty stop '' -ixoff; vim" 

为什么?发生了什么? 看到这里 ,但基本上对于大多数terminalctrl + s已经用于某些东西,所以这个别名vim,所以在我们运行vim之前,我们closures那个映射。

在你的.vimrc中

 nmap <cs> :w<cr> imap <cs> <esc>:w<cr>a 

为什么? 发生了什么? 这个应该是非常明显的,我们只是将ctrl + s映射到不同的击键,取决于我们是在正常模式还是插入模式。

我有一个这个职位 。

VIM

 # ~/.vimrc nnoremap <cs> :w<CR> # normal mode: save inoremap <cs> <Esc>:w<CR>l # insert mode: escape to normal and save vnoremap <cs> <Esc>:w<CR> # visual mode: escape to normal and save 

zsh(如果你使用)

 # ~/.zshrc # enable control-s and control-q stty start undef stty stop undef setopt noflowcontrol 

bash(如果你使用)

 # ~/.bash_profile or ~/.bashrc # enable control-s and control-q stty -ixon