【问题标题】:Certain key mappings not working in MacVim某些键映射在 MacVim 中不起作用
【发布时间】:2011-12-26 01:45:06
【问题描述】:

我最近从以前使用 Linux 改用 Mac 工作。我发现了 MacVim(来自 http://code.google.com/p/macvim/)并一直在尝试移植我以前的键盘映射。

我以前的映射如下:

  • Ctrl-T:新标签页
  • Ctrl-W:关闭标签/窗口
  • Ctrl-1 ... Ctrl-0:切换到编号标签
  • Alt-Up:新标签(与 Ctrl-T 相同)
  • Alt-Left/Alt-Right:切换到上一个/下一个标签
  • Ctrl-Alt-E:以文件模式打开 FuzzyFinder
  • Ctrl-Alt-B:以缓冲模式打开 FuzzyFinder
  • Ctrl-Alt-W:从缓冲区中清除尾随空格

现在,为了使这些映射更像“Mac”,我决定将前两个切换为使用 option(即 Apple 徽标)键,而所有其他映射都使用 command 键而不是 Alt(即。Ctrl-Alt-E 变为 Ctrl-Command-E)。我在http://macvim.org/OSX/index.php 上读到这个键可以用 D (即 )映射。我的.vimrc新内容如下:

nmap <D-t> :tabnew<cr>
nmap <D-w> :close<cr>
nmap <D-1> 1gt
nmap <D-2> 2gt
nmap <D-3> 3gt
nmap <D-4> 4gt
nmap <D-5> 5gt
nmap <D-6> 6gt
nmap <D-7> 7gt
nmap <D-8> 8gt
nmap <D-9> 9gt
nmap <D-0> 10gt

nmap <D-Up> :tabnew<CR>
nmap <D-Right> :tabnext<CR>
nmap <D-Left> :tabprevious<CR>

"FuzzyFinder
nmap <C-D-e> :FufFileWithFullCwd<CR>
nmap <C-D-b> :FufBuffer<CR>

"Whitespace remover
nmap <C-D-w> :%s/\s\+$//<CR>

因此,在重新映射键之后,一些现在可以工作,而另一些则不能,原因没有明确的逻辑。

什么有效:

  • Cmd-TCmd-W 成功地用于打开和关闭选项卡。
  • Cmd-1 ... Cmd-0 成功用于切换标签。

什么不起作用:

  • Cmd-Up 打开标签不起作用。
  • 用于切换标签的 Cmd-LeftCmd-Right 不起作用。
  • Ctrl-Cmd-ECtrl-Cmd-B 用于打开 FuzzyFinder 不起作用。
  • 用于清除空白的 Ctrl-Cmd-W 不起作用(但它也不会关闭选项卡,就像没有 ctrl 一样。

【问题讨论】:

  • 如果您自己找到了解决方案,您可以接受自己的答案。 ;)
  • 有一个reason 总是使用*nore(map|abbrev)(例如nnoremap)而不是nmap
  • 感谢 ZyX 的建议。如果有机会,我想我会读完整本《Learn Vim Script the Hard Way》!

标签: macos vim keyboard-shortcuts keymapping


【解决方案1】:

通过做来调查原因

:verbose map <D-Up>

另外尝试有选择地启用您的其他插件,以查看映射是否正在以某种方式被清除

【讨论】:

  • * 最后一组来自 /Applications/MacPorts/MacVim.app/Contents/Resources/vim/gvimrc
  • 所以看起来一个全局文件正在覆盖我的配置。不过我很惊讶,因为我原以为我的用户配置会优先。
  • 我在我的 .vimrc 中添加了“let macvim_skip_cmd_opt_movement = 1”这一行,现在选项卡工作正常。最后三个命令(使用 ctrl-cmd 组合的命令)仍然不起作用。
  • 所以事实证明 Macvim (code.google.com/p/macvim/issues/detail?id=317) 中存在一个错误,这意味着无法映射 ctrl 键。在解决这个问题之前,我会尝试映射 shift 键。
  • @JoelCross:干得好。请考虑发布您的答案,以便人们将来使用它。我的回答对你有帮助吗?
【解决方案2】:

事实证明 Macvim (http://code.google.com/p/macvim/issues/detail?id=317) 中存在一个错误,这意味着无法映射 ctrl 键。相反,我映射了领导键(也称为反斜杠),现在似乎一切正常。

【讨论】:

  • 嗨@Joel Cross,你能告诉我你是如何更具体地解决这个问题的吗?我尝试将一个键映射到 ctrl+command+w。谢谢
  • 嗨乔尔,你能告诉我更多细节如何映射 ctrl+command+w 吗?
  • 对不起,我的意思是将 F 之类的键映射到 ctrl+command+w,反之亦然
猜你喜欢
  • 2017-07-27
  • 2011-12-13
  • 2015-03-11
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
相关资源
最近更新 更多