将⌘S重新映射为在VIM中保存文件

4

我最近从使用MacVim转换为在命令行上使用Vim。 我想念的一个功能是能够使用⌘S保存文件,而不必返回正常模式然后输入:wq

我正在iTerm2中使用Vim。 有没有办法在插入模式和正常模式下都使用⌘S来保存文件?


3
好的,我会尽力进行翻译。以下是需要翻译的内容:Just curious, why'd you switch from MacVim?只是好奇,你为什么从MacVim换掉了? - Robert Speicher
4个回答

5
您可以使用iTerm2将Cmd-S映射到一些其他组合键,这样shell和Vim就能够识别(例如Ctrl+S),然后您只需像Andrew所指出的那样通过.vimrc文件简单地映射该命令即可。
总结一下:
  • 编辑iTerm2 Keys,新增一个条目将Cmd-S映射到Ctrl+S
  • 添加命令将Ctrl+S映射到vimrc文件(如Andrew所述)或者像此网站中描述的那样。

1
非常感谢您的提示。我想让它更具体一些。我将cmd-s映射到发送十六进制代码0x1b 0x4f 0x51,对应于F2。然后,在vimrc中,我添加了imap <F2> <C-O>:update<CR>。 - Piti Ongmongkolkul
+1 for iTerm2。它是一个非常棒的终端仿真器,具有许多额外的好功能,使其非常适合在控制台中使用vim。 - JeremyFromEarth
@PitiOngmongkulkul,你是怎么得到F2的十六进制代码的?我只能找到F2对应的键码是0x78,但不知道如何将其转换为转义十六进制代码。 - SystematicFrank
我记得我在vi中打印出了我按下的键,但是不太记得具体是怎么做的了... - Piti Ongmongkolkul

4
下面是更简单的方法:使用iTerm2的“发送文本”功能。您可以将Cmd-S映射到向当前vim会话发送文本:w\n。请参考下方截图设置:Send Text: <code>:w\n</code>

我可以确认这个有效 - 但在vimscript的上下文中,:w\n实际上是什么意思? - Richard Jarram

1

嗯,我不确定命令行 Vim 是否可以注册 ⌘ 键,而且我没有我的 Mac 来确认,但你可以像这样在 .vimrc 中映射 ⌘S。

inoremap <D-s> <ESC>:w<CR>i  "insertmode
nnoremap <D-s> :w<CR>        "normalmode

同样地,这只有在命令行 vim 能够识别 ⌘ 键的情况下才能起作用。


1
在使用iTerm2中的命令行Vim时,似乎无法正常工作。看起来⌘S没有传递给Vim,而是调用了iTerm命令(保存文本)。 - Crofty
1
如果iTerm捕捉到了它,那么你就没什么办法了(据我所知)。你可以尝试用 <C-s> 映射 ctrl-s,或者尝试按alt-s并映射它。 - Andrew Mcveigh

0

在控制台版本的Vim中无法映射到⌘。如果您想要在映射中使用⌘,您需要切换回MacVim。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接