将命令s映射到:v in vim

时间:2015-10-11 01:05:44

标签: vim terminal osx-elcapitan

如何在vim中将Command 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>

我能找到的关于这个主题的一切都已经好几年了,不再适用了。我可以找到this线程或this线程,但它们都已超过三年且不再有效。这就是为什么我要求当前版本的Mac OS X(El Capitan)

4 个答案:

答案 0 :(得分:7)

  1. <C- Control 键的表示法。对于Command键,它是<D-

  2. 只有在使用GUI前端时,Command键才能对MacVim可见。无论你在Terminal.app或iTerm.app(MacVim或任何其他版本)中使用什么Vim,它都永远不会看到命令键。

    换句话说,您不能指望<D-映射在CLI Vim中工作。这根本不可能。

  3. 在Mac OS X上按 Cmd + 某事时, 方式让CLI Vim做任何事情就是映射在你的终端模拟器中组合模拟按下另一个键,它本身映射到Vim中的所需命令。

    ~/.vimrc ...

    nnoremap <F6> :w<CR>
    

    在iTerm.app ...

    enter image description here

    仅供参考,0x112<F1>0x113<F2>等。我选择<F6>是任意的,使用适用于您的任何内容。

    在Terminal.app ...

    我没有El Capitan所以我不知道在新的Terminal.app中可以做些什么,但它之前的版本不允许你重新映射任意键 - 只有预定义的一套 - 所以我不知道如果没有一些假想的第三方工具,我认为这是可行的。

  4. 在Vim中使用 Cmd + S 的整个想法非常糟糕。习惯于习惯于Vim。

答案 1 :(得分:3)

C中的<C-S>代表 Control ,而不是Command。如果要映射Command + S,则需要<D-S>。 (不,我不知道D代表什么。)

请注意,这只适用于MacVim。 Command键不会传递给终端应用程序。

答案 2 :(得分:3)

romainl的回答让我走上正轨但不幸的是对我没有用(OS X Sierra,MBP 2017)。还使用(任意)键F6作为中间映射:

将以下行添加到〜/ .vimrc

nnoremap <F6> :w<CR>

在Iterm2中创建一个新的键盘快捷键

  • 快捷方式:cmd-s
  • 操作:发送转义序列
  • Esc +:[17~

Iterm2 keyboard shortcut config

希望这有帮助。

答案 3 :(得分:1)

通过使用Iterm2和自定义映射键映射绑定,完全有可能映射cmd+s或任何cmd组合。

因此,要映射cmd+s以保存到终端vim中,您首先需要更改Iterm2配置:

  • 转到Preferences -> Keys并按窗口底部的+按钮,然后添加键盘快捷键并选择名为Send text with "vim" Special Chars的操作和特殊字符:{{1 }}(请注意\<C-s>前缀),如下所示:

enter image description here

  • 第二,转到vim配置并添加一个这样的映射:
\

请注意,Iterm2将把击键noremap <silent> <C-s> :w<CR> inoremap <silent> <C-s> <ESC>:w<CR>i 转换为cmd+s并将其直接发送到vim。因此,您可以牢记这一点。例如,您可以禁用ctrl+s(通常会关闭Iterm2中的窗口),并以cmd-w的形式直接发送到vim来分割窗口,在这种情况下,您无需更改vim中的任何内容一侧,仅将Iterm2中的<C-w>映射到<cmd-w>。另外,您可以禁用\<C-w>以防止讨厌的Iterm2打印对话框,并在vim中调用:fzf之类的东西。

唯一的缺点是您需要单独创建所有地图:

enter image description here

顺便说一句,如果您想映射一些“非常特殊的”键,例如cmd+p(例如,使用NERDCommenter注释行),则需要使用“发送Scape序列”操作来做稍微不同的键映射:

enter image description here

然后在vim中,设置cmd+/击键的映射(请注意,特殊的^[/符号是先按^[,然后按<ctrl-v>制成的)。 / p>

enter image description here

相关问题