【问题标题】:Is there a way to get IdeaVIM to honor the mappings from my .vimrc file?有没有办法让 IdeaVIM 尊重我的 .vimrc 文件中的映射?
【发布时间】:2011-07-31 22:30:12
【问题描述】:

我最近(再次)深入了解了 vim,现在我的 .vimrc 文件中有大量自定义项。我意识到并不是其中的所有内容在 IDEA 插件的上下文中都是有意义的,但我会真的喜欢将jj 重新映射到Esc 之类的东西被采纳并兑现。有没有办法做到这一点?无需手动调整 IDEA 键盘映射中的所有内容。

谢谢。

【问题讨论】:

  • 答案是将~\.vimrc复制到~\.ideavimrc。您能否将其标记为已接受的答案以帮助其他访问此页面的人?

标签: vim ideavim


【解决方案1】:

更新答案:IdeaVim 0.35 版(2014-05-15 发布)从~/.ideavimrc 读取设置和键绑定。如果您想包含来自~/.vimrc 的映射,您可以将source ~/.vimrc 放入该文件中。

0.33 和 0.34 直接读取~/.vimrc

0.33(2014-04-28 发布)是第一个实现 VIM-288 的版本,包括将 jj 映射到 ESC等内容>。它工作得很好,IDEA 首选项中有一个新的 Vim Emulation 部分,列出了~/.vimrc 映射和 Intellij 映射之间的所有冲突,并允许您通过将键分配给 IDEA 或想法。这是推特上的release announcement

(注意:我不是作者,只是一个满意的用户。)

【讨论】:

  • 我认为现在效果很好。但我发现我必须使用 :imap 而不是 :map!在插入模式下重新映射。在 vim 中,两者都有效。
  • 我的系统中没有~/.ideavimrc。 vim 命令scriptnames 也不起作用。有什么方法可以找出我的~/.ideavimrc 文件在哪里?
  • @JayBhavsar,您必须创建文件。 ~ 表示你的主目录。因此,在你的主目录中创建一个名为 .ideavimrc 的文件,并将你想要的设置放在那里。
  • 如果你没有文件 ~/.ideavimrc 那么你可以简单地创建它。只需写source ~/.vimrc 或源代码,无论您的 .vimrc 文件在哪里。重启pycharm。
  • 它对我不起作用,~/.ideavimrc 只是被忽略了
【解决方案2】:

更新:是的!见答案below

简短的回答:不。

我也一直在尝试这样做,特别是因为我有一个相当复杂的.vimrc,多年来我已经习惯了。

无论如何,有一个解决方法(有点)。 IdeaVim 设置存储在主文件夹内的.IntelliJIdea10/config/keymaps 文件夹中名为vim.xml 的文件中(Windows 上为C:\Users\<user_name>)。您可以编辑 XML 以添加所需的内容。例如,我通过点击F2 而不是输入:w! 添加了以下行来保存文件:

<action id="SaveAll">
<keyboard-shortcut first-keystroke="F2"/>
</action>

但是,我看不出我们如何添加诸如函数或 vim 设置之类的东西(我通常会使用 .vimrc 来实现)。

P.S. 这可以解释为什么不使用 .vimrc(强调我的):

对于好奇,插件正在 写没有任何参考 VIM 源代码(除了 正则表达式处理)。我是 基本使用优秀的vim 文档和 VIM 本身作为 参考以验证正确的行为。
来源:http://ideavim.sourceforge.net/

【讨论】:

  • 我担心这就是答案,但感谢您的解决方法和出色的源参考。
  • @HankGay 目前 JetBrains 的错误跟踪器上的 an issue 正好解决了这个问题。它已经被设置为主要优先事项,但无论如何都要投票!
  • 它已在 0.33 中修复,现在插件确实支持键映射(github 上有一个拉取请求添加了该功能)
【解决方案3】:

根据插件存储库中的描述 (https://github.com/JetBrains/ideavim),您可以通过创建一个包含其内容的文件“~/.ideavimrc”来实现:

source ~/.vimrc

【讨论】:

    【解决方案4】:

    看起来 IdeaVIM 问题#VIM-288(编辑,更新:参见jbyler's answer,VIM-288 现已修复)将在修复后解决您的问题。我也在寻找一种方法来让“jk”退出插入模式而不是使用 Escape 键。我不是 IntelliJ 插件方面的专家,但我设法修改了 IdeaVIM 源代码,以便在其中硬编码“jk”快捷方式。我所要做的就是重新部署插件并使用它而不是官方版本。我是这样做的:

    1. 获取 IdeaVIM 源代码。

      https://github.com/JetBrains/ideavim

    2. 您可以按照该页面上“开发”下的说明设置插件的开发环境。

    3. 现在您的 IdeaVIM 项目已全部设置完毕,请打开此文件: com.maddyhome.idea.vim.key.RegisterActions.java

    4. 该文件似乎包含所有可视/插入/普通模式命令及其相应的键绑定。对于我更改“退出插入模式”键绑定的示例,查找“VimInsertExitMode”。您需要在此代码块中为您的新快捷方式添加一行。

    5. 以下是我编辑后的代码部分:

      parser.registerAction(KeyParser.MAPPING_INSERT, "VimInsertExitMode", Command.Type.INSERT, new Shortcut[]{
          new Shortcut(KeyStroke.getKeyStroke('[', KeyEvent.CTRL_MASK)),
          new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK)),
          new Shortcut(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)),
          new Shortcut("jk"),
          new Shortcut(new KeyStroke[]{KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, KeyEvent.CTRL_MASK),
              KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)})
      });

    6. 现在部署项目(制作一个 .jar)并将其添加到您的插件文件夹中;我按照以下说明进行参考:

      http://confluence.jetbrains.com/display/IDEADEV/Getting+Started+with+Plugin+Development#GettingStartedwithPluginDevelopment-anchor5

    7. 您可能需要从您的键盘映射文件夹中保存您的 Vim.xml 文件,我不确定。我删除了我的,然后在我重新启动 IntelliJ 时重新制作了它。

    8. 试一试!现在应该可以使用“jk”作为退出插入模式的快捷方式了!

    【讨论】:

      【解决方案5】:

      你知道,我在 Windows 上的主文件夹中使用 .vimrc 取得了一些成功,通常是 C:\Users\yourLogin 。这似乎是设计使然。 Oleg 提到 IdeaVIM 在这里使用了 VIm 命令的子集。

      http://youtrack.jetbrains.com/issue/VIM-134#tab=Comments

      看来您需要登录才能在 youtrack 系统上查看 cmets。

      奥列格·什皮诺夫 2011年8月15日18:12

      IdeaVIM 插件从 .vimrc 文件加载一些配置数据,但是 vim 插件支持 不可用,也不可用,因为它需要重写所有的 VIM 运行时 IdeaVim 插件。

      请注意,如果您在 Windows 上您可能希望使用后者,则必须将文件命名为 .vimrc,而不是 _vimrc。

      至少与set ignorecase 一起使用!

      【讨论】:

      • 我可以备份这个。 IdeaVim 似乎会读取您的 ~/.vimrc 文件,但会默默地忽略它不支持的任何命令和设置。我喜欢关闭错误铃,所以我的.vimrc 中有:set noerrorbells。但 IdeaVim 不支持。但是,它确实支持:set visualbell。即使它没有像您期望的那样闪烁屏幕。不过,这有助于使铃声静音。所以我在:set noerrorbells 之前将它包含在我的.vimrc 中,一切都很好。
      • 需要知道你的平台(很明显 not Windows ;^D) vimrc (pastebin?) 中的内容为了充分提供帮助——请注意,这个 [我的] 答案主要是针对 Windows 的(我在那里尝试过并且部分工作)。如果 Oleg 仍然参与 IdeaVIM,他也很擅长回答问题。
      【解决方案6】:

      IdeaVim 现在(至少早在 0.35)支持limited number of set commands,以及地图及其变体。要自动获取它们,请将您的设置放入 ~/.ideavimrc。

      【讨论】:

        【解决方案7】:

        要让它在 Windows 7 上运行,请在 C:\Users[username] 中创建 .ideavimrc

        为我工作。

        【讨论】:

          【解决方案8】:

          我昨天才知道怎么做。通过运行以下命令,我能够将我的 .vimrc 符号链接到我的 ideavim 设置:

          ln -s $HOME/.vimrc $HOME/.ideavim
          

          【讨论】:

            【解决方案9】:

            我使用 vim(版本 0.57)2 天 :D 我讨厌用 ESC 键退出插入模式 在 jet brains 中,只需在右侧向下看,您就会看到 vim 徽标,然后 > 打开 ~/.ideavimrc

            然后输入 :imap ii &lt;ESC&gt; 这将退出插入模式并带有双 i(放任何东西) 并保存 .ideavimrc 文件并重新启动您的 IDE

            【讨论】:

            • 您似乎从未倾向于输入Hawaii
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-03-07
            • 2011-01-15
            相关资源
            最近更新 更多