在vim中如何把“保存”映射到ctrl-s
在vim中,如何将“保存”( :w
)映射到ctrl -s 。
我正在尝试“映射”这个命令,但是当我按下ctrl – s时xterm会冻结。
如果我给CTRL – V , CTRL – S仍然我只看到一个^
,而不是^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中,你想按下Ctrl – S并让它保存你的文档。 这工作对我来说, 把下面的三行放在你的.vimrc文件中 。 这个文件应该位于你的主目录: /home/el/.vimrc
如果这个文件不存在,你可以创build它。
:nmap <cs> :w<CR> :imap <cs> <Esc>:w<CR>a
第一行说:按下文档中的Ctrl – S将执行:w <enter>
键盘组合。
第二行表示:在“插入”模式下按下文档内的Ctrl – S将跳转到正常模式,执行:w <enter
,然后按a
返回到插入模式。 您的光标可能在此事件中移动。
您可能会注意到,按Ctrl – S执行一个'XOFF',停止接收命令(如果您使用ssh)。
为了解决这个问题,把这两个命令放在〜/ .bash_profile中
bind -r '\Cs' stty -ixon
所做的是closuresCtrl – S的绑定,并在按下Ctrl – S时消除任何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