:w
)映射到ctrl-s?我试图"map"这个命令,但是当我按下ctrl-s时,xterm会冻结。
如果我输入ctrl-v后再输入ctrl-s,我仍然只看到一个
^
,而不是^S
。:w
)映射到ctrl-s?^
,而不是^S
。Ctrl+S是终端常用的命令,用于停止更新屏幕内容,这是一种在没有回滚缓冲区的终端上减慢输出速度以便于阅读的方法。首先确定你是否可以配置你的xterm来将Ctrl+S传递给应用程序。然后这些映射命令将起作用:
noremap <silent> <C-S> :update<CR>
vnoremap <silent> <C-S> <C-C>:update<CR>
inoremap <silent> <C-S> <C-O>:update<CR>
顺便提一下:如果按下 Ctrl+S 导致终端冻结,可以输入 Ctrl+Q 来解冻。
<C-W>
通常用于窗口分割和窗口命令。 - Juve在Linux中使用VI编辑器,你想按下Ctrl-S保存你的文档。这对我起作用了,将以下三行代码放入你的.vimrc文件中。这个文件应该位于你的主目录下:~/.vimrc
。如果这个文件不存在,你可以创建它。
:nmap <c-s> :w<CR>
:imap <c-s> <Esc>:w<CR>a
第一行表示:在文档中按下 Ctrl-S 将执行一个键盘组合命令 :w <enter>
。
第二行表示:在“插入”模式下,按下文档中的 Ctrl-S 将切换到正常模式,执行一个 :w <enter>
命令,然后按下 a
恢复到插入模式。在此过程中,您的光标可能会移动。
您可能会注意到,按下 Ctrl-S 会执行“XOFF”,停止接收命令(如果您使用 ssh)。
要解决这个问题,请将这两个命令放在您的 ~/.bash_profile 文件中。
bind -r '\C-s'
stty -ixon
它的作用是关闭 Ctrl-S 的绑定并且清除按下 Ctrl-S 时出现在屏幕上的任何 XOFF 消息。请注意,在更改您的 .bash_profile 后,您必须使用命令 'source .bash_profile' 或注销/登录重新运行它。
更多信息:http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files
imap
命令?似乎只需要 imap <c-s> <Esc>:w<CR>a
就可以了。谢谢。 - gwintrobvim
# ~/.vimrc
nnoremap <c-s> :w<CR> " normal mode: save
inoremap <c-s> <Esc>:w<CR>l " insert mode: escape to normal and save
vnoremap <c-s> <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
vnoremap <c-s> <Esc>:w<CR> # 可视模式: 退出并保存
,是吗? - BlackBeltScripting.vimrc
中似乎#
不能用于注释。请使用双引号("
):"<comment txt>
- Dut A.alias vim="stty stop '' -ixoff; vim"
为什么? 发生了什么事情? 请参见这里,但基本上对于大多数终端,ctrl+s已经用于某些操作,因此此别名的作用是在运行vim之前关闭该映射。
nmap <c-s> :w<cr>
imap <c-s> <esc>:w<cr>a
为什么?发生了什么事情? 这个很明显,我们只是在普通模式或插入模式下将ctrl+s映射到不同的按键。