有没有办法让IdeaVIM接受我的.vimrc文件中的映射?

有没有办法让IdeaVIM接受我的.vimrc文件中的映射?,vim,ideavim,Vim,Ideavim,我最近(又一次)大范围地进入了vim,现在我的.vimrc文件中有大量定制。我意识到,在IDEA插件的上下文中,并不是所有内容都有意义,但如果像重新映射jj到Esc这样的东西被选中并得到认可,我真的很喜欢它。有办法吗?也就是说,不需要手动调整IDEA关键图中的所有内容 谢谢。更新:是的!见答案 简短回答:没有 我也一直在尝试这样做,特别是因为我有一个非常复杂的.vimrc,这些年来我已经习惯了 无论如何,有一个解决办法(某种程度上)。IdeaVim设置存储在主文件夹(C:\Users\上)中.I

我最近(又一次)大范围地进入了vim,现在我的
.vimrc
文件中有大量定制。我意识到,在IDEA插件的上下文中,并不是所有内容都有意义,但如果像重新映射
jj
Esc
这样的东西被选中并得到认可,我真的很喜欢它。有办法吗?也就是说,不需要手动调整IDEA关键图中的所有内容

谢谢。

更新:是的!见答案

简短回答:没有

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

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

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


你知道,我在Windows上的主文件夹中成功地使用了.vimrc,因此通常是C:\Users\yourLogin。看来这是故意的。Oleg提到IdeaVIM在这里使用VIm命令的一个子集

看起来您需要登录才能查看youtrack系统上的评论

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

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

请注意,如果您在Windows上使用的是后者,则必须将文件命名为.vimrc,而不是u vimrc


至少与
set ignorecase
一起使用

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

  • 获取IdeaVIM源代码

  • 您可以按照该页面“开发”下的说明为插件设置开发环境

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

  • 这个文件似乎有所有的Visual/Insert/Normal模式命令及其相应的键绑定。关于我更改“退出插入模式”键绑定的示例,请查找“VimInsertExitMode”。您需要在这段代码中添加一行,以创建新的快捷方式

  • 下面是我编辑后代码部分的外观:
    parser.registerAction(KeyParser.MAPPING_INSERT,“VimInsertExitMode”,Command.Type.INSERT,新快捷方式[]{
    新的快捷方式(KeyStroke.getKeyStroke('[',KeyEvent.CTRL_MASK)),
    新的快捷方式(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK)),
    新的快捷方式(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0)),
    新捷径(“jk”),
    新建快捷方式(新建击键[]{KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH,KeyEvent.CTRL_MASK),
    getKeyStroke(KeyEvent.VK\u N,KeyEvent.CTRL\u MASK)})
    });

  • 现在部署项目(make a.jar)并将其添加到您的plugins文件夹中;我遵循以下说明进行参考:

  • 您可能需要从keymaps文件夹中保存Vim.xml文件,我不确定。我删除了我的,然后在重新启动IntelliJ时重新创建了它

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


  • 更新答案:IdeaVim版本0.35(发布于2014年5月15日)从
    ~/.ideavimrc
    读取设置和密钥绑定。如果您想包含
    ~/.vimrc
    中的映射,可以将
    源代码~/.vimrc
    放在该文件中

    0.33和0.34直接读取
    ~/.vimrc

    0.33(发布于2014年4月28日)是实现的第一个版本,包括将jj映射到ESC。它工作得很好,IDEA首选项中有一个新的Vim仿真部分,列出了
    ~/.vimrc
    映射和Intellij映射之间的所有冲突,并允许您通过将键分配给IDEA或IdeaVim来解决冲突。下面是在推特上


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

    IdeaVim现在(至少早在0.35)支持a,以及地图及其变体。要让它们自动来源,请将您的设置放在~/.ideavimrc中。

    要让它在windows 7上工作,请在C:\Users[用户名]中创建.ideavimrc


    为我工作。

    根据插件库()中的描述,您可以通过创建一个文件“~/.ideavimrc”来实现这一点,该文件包含以下内容:

    source ~/.vimrc
    

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

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

    然后键入
    :imap ii
    这将使用双i退出插入模式(放置任何内容)
    保存.ideavimrc文件并重新启动您的IDE

    我担心这是答案,但感谢您提供的解决方法和优秀的源代码参考。@目前JetBrains的bug tracker上有一个专门解决此问题的程序。它已经设置为主要优先级,但无论如何都要投票表决!它已在0.33中修复,现在该插件不支持h或键映射(github上有一个pull请求,该请求添加了
    ln -s $HOME/.vimrc $HOME/.ideavim