【问题标题】:Disable use of MacVim keyboard shortcuts禁用 MacVim 键盘快捷键
【发布时间】:2012-11-06 08:56:45
【问题描述】:

有什么方法可以在 MacVim 中禁用键盘快捷键?我的意思是像Cmd + s 这样的快捷方式,例如,我想说服自己使用:w 这样的东西,但是如果我可以使用Cmd + s 保存文件,我就不能这样做,你明白吗?

但我当然还是想使用 GUI,那么有什么方法可以在不停止使用 MacVim GUI 的情况下禁用这些?

感谢您的帮助。顺便说一句,我进行了谷歌搜索,但无法找到答案。

编辑:
按照@ChrisJohnsen 的建议,我已经尝试了以下方法但没有成功:

if has('gui_running')
    macmenu File.Save key=<nop>
    macmenu File.Save\ As\.\.\. key=<nop>
endif

编辑 2:
我将我遇到的错误转移到另一个问题:When I try to run vim in command line I get Python errors

【问题讨论】:

    标签: keyboard-shortcuts vim macvim


    【解决方案1】:

    MacVim 与普通 Vim 相比只有一个“优势”:它支持原生 Mac OS X 快捷方式。如果您不想要这些快捷方式,不妨使用普通的 Vim。

    FWIW,当我从 TextMate 切换过来时,我也发现这些原生快捷方式是我学习 Vim 的障碍。我的解决方案是将精力集中在普通的 Vim 上。在终端中使用一周后,您应该能够完全忽略这些快捷方式。

    我建议你暂停一下,考虑以更合适的顺序做事:

    1. 在终端中,根据需要多次执行$ vimtutor。

    2. 再次在终端中,先使用$ vim 处理简单任务,然后再使用更复杂的任务。一开始会有可预见的生产力冲击,但只会持续几天/几周。

    3. 一旦您达到之前的工作效率水平,您就可以开始全职使用 Vim。那时,使用 MacVim 或 GVim 或普通的 $ vim 应该没有任何区别。

    不过度依赖插件、其他人的 vimrc 或“发行版”如 janus 或 spf13 的奖励积分......

    【讨论】:

    • 我想我会这样做,我没有这样做的一个原因是因为我所有的配色方案在终端上都表现得很奇怪,我尝试了各种各样的东西,但都不起作用。我想我会训练自己不要使用快捷方式,除非下面的问题有效。
    • 不用担心配色方案:默认的配色方案和酷炫的配色方案一样好用。而是专注于核心部分:Ex 命令、文本对象、动作、宏、替换……
    • 看,问题是,即使是默认的看起来也很奇怪。而且我认为您可以同意,如果没有配色方案,则很难编码。但是,尽管如此,我会尝试修复它,解决它,并按照您的提示进行操作。 :)
    • 试试:color desert,即使在 16 色终端中也很容易。
    • 这是另一个问题。
    【解决方案2】:

    没有简单的方法可以禁用所有预定义的 Mac 风格的键盘快捷键,但您绝对可以更改/禁用其中任何一个。重要的命令是:macmenu(见:help :macmenu);它允许您设置任何 Vim 菜单项的 Mac 特定属性(主要是 Mac 特定的键盘快捷键和 Mac 特定的操作(例如打开/保存对话框、窗口操作等))。

    macmenu File.Save key=<nop>
    macmenu File.Save\ All key=<nop>
    macmenu File.Save\ As\.\.\. key=<nop>
    

    问题是:macmenu 命令只有在您的.gvimrc 文件中才有效。

    如果您执行:e $VIMRUNTIME/menu.vim 并搜索macm,您将找到预定义的快捷方式和操作列表。将所需的行复制给您.gvimrc 并将key=&lt;whatever&gt; 替换为key=&lt;nop&gt;。如果您需要 .gvimrc 在多个平台上工作,您也可以将它们包装在 if has("gui_macvim") / endif 中。

    【讨论】:

    • 我试过了,但由于某种原因它不起作用。我在 OP 中发布了我尝试过的内容。谢谢!
    • 您确定将这些条目放在您的.gvimrc(g 代表 GUI)中,而不是您的.vimrc 中吗?他们只会在.gvimrc 工作(而且他们确实为我工作)。
    • 我没有把它们放在我的.gvimrc 中,我把它们放在我的.vimrc 中,但是我确实将它们包含在if has('gui_running') 和if has('gui_macvim') 中
    • 他们必须在.gvimrc;使用has('gui_running') 不是有效的替代品。问题是.vimrc 在分配默认值的menu.vim 之前运行(在.vimrc 中完成的任何“覆盖”都将被menu.vim 撤消); .gvimrc 在menu.vim 之后运行(在那里完成的任何覆盖都不会撤消;.gvimrc 基本上是要处理的最后一个 init 文件)。
    • 当你正在学习不用 Command-s 时,你可能还想nnoremap &lt;D-s&gt; &lt;nop&gt;;否则,普通模式下的 Command-s 似乎被视为普通的 s(其工作方式类似于 cl:将字符向右更改)。
    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2014-05-15
    • 2021-02-02
    相关资源
    最近更新 更多