我试图映射Ctrl + s来保存我的文件,但是它不起作用。我在下角看到的是/:echo "Saved",而不是saved,当我处于普通模式时,我会看到相同的内容。我在做什么错?

这是我vimrc的最顶层,因此我的其他代码不会引起问题。我在OSX终端中运行Vim。

评论

您是否正在通过终端使用Vim? Control + S也是由终端选择的特殊键绑定,表示“停止输出” ...当我尝试使用gVim的上述两个键绑定时,它似乎起作用。
“我也在Mac终端中运行vim。”是的,我正在通过终端运行vim。使用Alt代替Ctrl或Cmd会更好吗?

顺便说一句,这个问题已经问了很多遍了;-)我没有时间写答案,但是那个链接应该可以帮助您...

要将保存绑定到OSX上的Cmd-S,您可以尝试从映射,尽管我不确定它是否可以在终端Vim中运行,而且在MacVim中它已经是默认设置!

#1 楼

为了确保即使通过单独的工具(例如git)启动Vim时,该解决方法也能正常运行,我在~/.vimrc中提供了此方法: X和MacVim。
注意事项:在Windows或任何缺少stty命令的其他操作系统上,每次Vim启动时,以上内容可能会引发错误! (silent!可能会静音。)


如果您的外壳已经禁用了该TTY设置,则当然VimLeave自动命令将再次将其重新打开! iProgram的方法通过在启动时检测设置来管理该问题。
为了避免在stty -gstty --save之间进行选择,您可以仅对ix选项尝试以下测试。
" Allow us to use Ctrl-s and Ctrl-q as keybinds
silent !stty -ixon

" Restore default behaviour when leaving Vim.
autocmd VimLeave * silent !stty ixon


#2 楼

感谢@Carpetsmoker提供的链接。

将此脚本添加到bash_profile中对我有用。 http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files

我还必须删除:
前的空格

#3 楼

如果具有以下修补程序,它应该可以立即使用:


8.2.0852在某些系统上无法映射CTRL-S

8.2.0856 CTRL-S停止输出

尽管如此,我将重写映射:
nnoremap <c-s> :<c-u>w <bar>echo 'Saved'<cr>
inoremap <c-s> <c-\><c-o>:w <bar>echo 'Saved'<cr>