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

时间:2011-04-07 18:20:45

标签: vim ideavim

我最近已经进入了vim(再次),我现在在我的.vimrc文件中进行了大量的自定义。我意识到在IDEA插件的上下文中并不是所有内容都有意义,但是如果重新选择jjEsc之类的东西,我会真的喜欢它并且很荣幸。有没有办法做到这一点?无需在IDEA的键映射中手动调整所有内容,即。

感谢。

9 个答案:

答案 0 :(得分:149)

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

0.33和0.34直接读~/.vimrc

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

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

答案 1 :(得分:23)

更新:是的!请参阅答案below

简答:不。

我一直在尝试这样做,尤其是因为我已经习惯了多年来相当复杂的.vimrc

无论如何,有一种解决方法(有点)。 IdeaVim设置存储在主文件夹内vim.xml文件夹中的.IntelliJIdea10/config/keymaps文件中(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/

答案 2 :(得分:5)

看起来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. 该文件似乎具有所有Visual / Insert / Normal模式命令及其相应的键绑定。对于我更改“退出插入模式”键绑定的示例,请查找“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. 您可能需要从keymaps文件夹中保存Vim.xml文件,我不确定。我删除了我的,然后当我重新启动IntelliJ时重新制作。

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

答案 3 :(得分:5)

根据插件存储库(https://github.com/JetBrains/ideavim)中的描述,您可以通过创建文件来实现这一目标&#34; 〜/ .ideavimrc &#34;内容如下:

source ~/.vimrc

答案 4 :(得分:4)

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

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

看起来您需要登录才能看到有关youtrack系统的评论。

  Oleg Shpynov   2011年8月15日18:12

     

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

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

至少与set ignorecase合作!

答案 5 :(得分:1)

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

答案 6 :(得分:1)

要使其在Windows 7上运行,请在C:\ Users [用户名]

中创建.ideavimrc

为我工作。

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

我正在使用vim(0.57版)2天:D,我讨厌用ESC键退出插入模式 在喷射大脑中,只需向下看右侧,您将看到vim徽标,然后>打开〜/ .ideavimrc

enter image description here

并输入:imap ii <ESC>,这将退出带有double i的插入模式(输入任何内容) 并保存.ideavimrc文件并重新启动IDE