将命令s映射到:v in vim

int*_*ing 5 vim terminal osx-elcapitan

我该如何映射Command S到:w在vim?

我已尝试过其他线程中的所有内容,但在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>
Run Code Online (Sandbox Code Playgroud)

我能找到的关于这个主题的一切都已经好几年了,不再适用了.我可以找到这个帖子或这个帖子,但它们都已超过三年,不再有效.这就是我要求当前版本的Mac OS X(El Capitan)的原因

rom*_*inl 7

  1. <C-是Control键的表示法.这是<D-Command键.

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

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

  3. 在Mac OS X 上按+ 键时让CLI Vim执行任何操作的唯一方法是在终端仿真器中映射该组合以模拟按下另一个键,该键本身映射到Vim中的所需命令.Cmdsomething

    在~/.vimrc......

    nnoremap <F6> :w<CR>
    
    Run Code Online (Sandbox Code Playgroud)

    在iTerm.app中......

    在此输入图像描述

    仅供参考,0x112是<F1>,0x113是<F2>,我等选择的<F6>是任意的,随便用你的作品.

    在Terminal.app ...

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

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


小智 5

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

将以下行添加到~/.vimrc:

nnoremap <F6> :w<CR>
Run Code Online (Sandbox Code Playgroud)

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

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

Iterm2 键盘快捷键配置

希望这可以帮助。


hug*_*tti 5

完全可以通过使用 Iterm2 和自定义映射键映射绑定来映射cmd+s或任意组合。cmd

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

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

在此输入图像描述

  • 其次,进入 vim 配置并添加如下所示的地图:
noremap  <silent> <C-s> :w<CR>
inoremap <silent> <C-s> <ESC>:w<CR>i
Run Code Online (Sandbox Code Playgroud)

请注意,Iterm2 会将击键转换cmd+s为ctrl+s并将其直接发送到 vim。所以你可以考虑到这一点做一些其他的事情。例如,您可以禁用cmd-w(通常会关闭 Iterm2 中的窗口)并直接发送到 vim 以<C-w>分割窗口,在这种情况下,您不需要更改 vim 端的任何内容,只需映射<cmd-w>到\<C-w>Iterm2 中。此外,您可以禁用cmd+p以防止烦人的 Iterm2 打印对话框,并调用 :fzf o 类似 vim 中的内容。

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

在此输入图像描述

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

在此输入图像描述

然后,在 vim 中,设置击键映射^[/(请注意,特殊^[符号是通过按<ctrl-v>,然后按<esc>)。

在此输入图像描述