有没有办法让IdeaVIM来尊重我的.vimrc文件的映射?

我最近已经进入了vim(再次),现在我在.vimrc文件中进行了大量的定制。 我意识到,在IDEA插件的背景下,并不是所有的东西都有意义,但是如果把jj重新映射到Esc这样的东西,我真的很喜欢它。 有没有办法做到这一点? 不需要在IDEA的键盘映射中手动调整所有的东西,也就是说。

谢谢。

更新:是的! 见下面的答案。

简短的回答:不。

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

无论如何,有一个解决方法(sorting)。 IdeaVim设置存储在主文件夹(Windows中的C:\Users\<user_name> )内的vim.xml .IntelliJIdea10/config/keymaps文件夹中名为vim.xml的文件中。 你可以编辑XML来添加你想要的东西。 例如,我添加了下面几行来通过按F2来保存文件,而不是input:w!

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

但是,我不明白我们如何添加像函数或vim设置(这是我通常使用.vimrc )。

PS这可能解释为什么一个.vimrc没有使用(强调我的):

好奇的是,这个插件没有提及VIM源代码 (正则expression式处理除外)。 我基本上使用优秀的VIM文档和VIM本身作为参考来validation正确的行为。
来源: http : //ideavim.sourceforge.net/

更新回答:IdeaVim 0.35版(2014-05-15发布)从~/.ideavimrc读取设置和键绑定。 如果你想包含来自~/.vimrc映射,你可以把source ~/.vimrc放在这个文件中。

0.33和0.34直接读取~/.vimrc

0.33(2014-04-28发布)是第一个实现VIM-288的版本,包括像jjESC的映射。 它工作的很好,IDEA首选项中有一个新的Vim仿真部分,列出了~/.vimrc映射和Intellij映射之间的所有冲突,并且可以通过将键分配给IDEA或IdeaVim来解决冲突。 这是Twitter上的发布公告 。

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

它看起来是IdeaVIM问题#VIM-288(编辑,更新:查看jbyler的答案 ,现在已经修复了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. 看来这个文件具有所有的Visual / Insert / Normal模式命令及其相应的键绑定。 对于我更改“退出插入模式”键绑定的示例,请查找“VimInsertExitMode”。 您需要为这个新的快捷方式添加一行代码块。

  5. 下面是我编辑后的代码段:

      parser.registerAction(KeyParser.MAPPING_INSERT,“VimInsertExitMode”,Command.Type.INSERT,new Shortcut [] {
        新的快捷键(KeyStroke.getKeyStroke('[',KeyEvent.CTRL_MASK)),
        新的快捷键(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK)),
        新的快捷键(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0)),
        新捷径(“jk”),
        新的快捷方式(新的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. 您可能需要从您的keymaps文件夹保存Vim.xml文件,我不确定。 我删除了我的,然后重新启动IntelliJ重新制作。

  8. 给它一个旋转! 现在应该可以使用'jk'作为退出插入模式的快捷方式!

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

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

看起来你需要login才能看到youtrack系统的评论。

奥列格Shpynov 2011年8月15日18:12

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

请注意,如果您使用的是Windows,您可能需要命名文件.vimrc,而不是_vimrc。

至less与set ignorecase工作!

根据插件库( https://github.com/JetBrains/ideavim )中的描述,你可以通过创build一个文件“ 〜/ .ideavimrc ”来获得它的内容:

 source ~/.vimrc 

现在IdeaVim(至less早于0.35)支持有限数量的设置命令 ,以及地图及其变体。 要让它们自动获取,请将您的设置放在〜/ .ideavimrc中。

为了让它在Windows 7上工作,在C:\ Users [username]中创build.ideavimrc。

为我工作。

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

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