将vim中的命令s映射到:w
如何将vim中的将vim中的命令s映射到:w,vim,terminal,osx-elcapitan,Vim,Terminal,Osx Elcapitan,如何将vim中的命令S映射到:w 我尝试了其他线程的所有功能,但在Mac OS X El Capitan中似乎没有任何功能。 这在以前的版本中应该是有效的,但我尝试过,没有成功 noremap <silent> <C-S> :update<CR> vnoremap <silent> <C-S> <C-C>:update<CR> inoremap <silent> <C-S>
命令S
映射到:w
我尝试了其他线程的所有功能,但在Mac OS X El Capitan中似乎没有任何功能。
这在以前的版本中应该是有效的,但我尝试过,没有成功
noremap <silent> <C-S> :update<CR>
vnoremap <silent> <C-S> <C-C>:update<CR>
inoremap <silent> <C-S> <C-O>:update<CR>
noremap:更新
vnoremap:更新
inoremap:更新
关于这个话题,我能找到的所有东西都已经有好几年了,不再有用了。我可以找到一根线或一根线,但它们都已经三年多了,不再工作了。这就是为什么我要求使用当前版本的Mac OS X(El Capitan)中的
C
代表控制,而不是命令。如果要映射命令+S,则需要
。(不,我不知道D代表什么。)
请注意,这仅适用于。命令密钥不会传递给终端应用程序
来自Romaill的答案让我走上了正确的轨道,但不幸的是,这对我并不适用(OS X Sierra,MBP 2017)。还使用(任意)键F6作为中间映射:
将以下行添加到~/.vimrc:
nnoremap <F6> :w<CR>
nnoremap:w
在Iterm2:
- 快捷方式:cmd-s
- 操作:发送转义序列
- Esc+:[17~
希望这有帮助。完全可以通过使用Iterm2和自定义映射键映射绑定映射cmd+s
或任何cmd
组合
因此,要映射cmd+s
以保存在终端vim中,首先需要更改Iterm2配置:
- 转到
首选项->按键
,按下窗口底部的+
按钮,然后添加键盘快捷键并选择名为的操作,使用“vim”特殊字符发送文本
和特殊字符:\
(注意\
前缀),如下所示:
- 其次,转到vim配置并添加如下映射:
noremap:w
inoremap:wi
请注意,Iterm2会将击键cmd+s
转换为ctrl+s
,并将其直接发送到vim。因此,您可以考虑其他事项。例如,您可以禁用cmd-w
(通常会关闭Iterm2中的窗口)并以
的形式直接发送到vim以拆分窗口,在这种情况下,您不需要在vim端更改任何内容,只需将
映射到Iterm2中的\
。此外,您可以禁用cmd+p
以防止讨厌的Iterm2打印对话框,并在vim中调用:fzf o类似的东西
唯一的缺点是您需要单独创建所有地图:
顺便说一句,如果您想映射一些“非常特殊”的键,如cmd+/
(例如,使用NERDCommenter注释行),则需要使用“Send Scape sequence”操作执行稍微不同的键映射:
然后,在vim中,设置^[/
按键的映射(请注意,按
然后按
可生成特殊的^[/code>符号)
我误解了你的问题是关于MacVim的,但你在终端中谈论的是vim。我删除了我的答案,因为它没有意义。好的。我非常感谢你的非常透彻的回答。我试图让终端vim识别Cmd-S,但我还没有想出一种方法。MacVim处理了它,但终端vim也没有ndle它,或者我试过的终端(终端和iTerm2)正在狼吞虎咽并没有传递它。我将终端中当前的Cmd-S命令重新映射到另一个键,但Vim仍然没有使用映射。感谢您向我们展示如何在Vim中使用Cmd+S进行保存。您介意解释第4点吗?我认为使用Cmd+S进行保存是非常自然的。它只需要两次按键,而Vim方式是需求4.只是想知道为什么即使vim鼓励我们用最少的按键来完成工作,它也不是首选?1.它在当时不存在也没关系。它现在存在,使用它应该会有任何伤害。2.当它做完全相同的事情时,它如何更具表现力和强大?3.vimrc存在是有原因的。我们可以定制vim以一种对我们更舒适的方式运行,而不会失去vim电源。
nnoremap <F6> :w<CR>
noremap <silent> <C-s> :w<CR>
inoremap <silent> <C-s> <ESC>:w<CR>i