有没有一种方法可以让 IdeVIM 尊重我的.vimrc 文件中的映射?

我最近(又一次)大规模地进入了 vim,现在我的 .vimrc文件中有大量的定制。我意识到并不是所有的东西在 IDEA 插件的环境中都有意义,但是如果 jjEsc的重新映射这样的事情能够得到重视和尊重的话,我会喜欢它的。有办法吗?不需要手动调整所有的东西在 IDEA 的关键地图,这是。

谢谢。

34407 次浏览

更新: 是的! 看答案 下面

简短的回答: 不。

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

无论如何,有一个变通方法(某种程度上)。IdeVim 设置存储在一个名为 vim.xml的文件中,该文件位于主文件夹(Windows 上为 C:\Users\<user_name>)中的 .IntelliJIdea10/config/keymaps文件夹中。您可以编辑 XML 以添加所需的内容。例如,我添加了以下代码行,通过按 F2而不是键入 :w!来保存文件:

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

但是,我不知道如何添加函数或 vim 设置(这是我通常使用 .vimrc的目的)。

这也许可以解释为什么不使用.vimrc (重点是我的) :

对于好奇的人来说,这个插件是 写入 < strong > 而不引用 VIM 源代码 (除了 正则表达式处理) 基本上使用了优秀的 VIM 文档和 VIM 本身作为一个 验证正确行为的参考文献。
资料来源: http://ideavim.sourceforge.net/rel = “ nofollow norefrer”> http://ideavim.sourceforge.net/

你知道,我曾经有过一些成功的经验。Vimrc 在我的主文件夹在 Windows,所以通常 C: 用户你的登录。看来是故意的。Oleg 提到 IdeVIM 在这里使用了 VIM 命令的一个子集。

Http://youtrack.jetbrains.com/issue/vim-134#tab=comments

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

Oleg Shpynov 2011年8月15日18:12

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

注意,必须为文件命名。Vimrc,而不是 _ vimrc,如果你在 Windows 上,你可能会期望后者。

至少和 set ignorecase一起工作!

看起来 IdeVIM 问题 # VIM-288(编辑,更新: 请参阅 Jbyler 的回答,VIM-288现在已经修复)将在修复后解决您的问题。我也在寻找一种方法,让“ jk”退出插入模式代替使用 Escape 键。我不是 IntelliJ 插件方面的专家,但是我设法修改了 IdeVIM 源代码,使“ jk”快捷方式硬编码在那里。然后我所要做的就是重新部署插件,并使用它来代替官方版本。我是这么做的:

  1. 获取 IdeVIM 源代码。

    Https://github.com/jetbrains/ideavim

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

  3. 现在您的 IdeVIM 项目已经全部设置好了,打开这个文件: Vim.key. RegisterActions.java

  4. 这个文件似乎包含所有 Visual/Insert/Normal 模式命令及其相应的键绑定。关于更改“ exit insert mode”键绑定的示例,请查找“ VimInsertExitMode”。您需要为新的快捷方式向此代码块添加一行。

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

    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”) ,
    新快捷方式(new KeyStroke []{ KeyStroke.getKeyStroke (KeyEvent.VK _ Back _ SLASH,KeyEvent.CTRL _ MASK) ,
    GetKeyStroke (KeyEvent.VK _ N,KeyEvent.CTRL _ MASK)})
    }) ; 

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

    Http://confluence.jetbrains.com/display/ideadev/getting+started+with+plugin+development#gettingstartedwithplugindevelopment-anchor5

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

  8. 给它一个旋转! 应该能够使用’jk’作为您的退出插入模式快捷方式了!

更新答案: IdeVim 版本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 仿真部分,列出了 ~/.vimrc映射和 Intellij 映射之间的所有冲突,并允许您通过将键分配给 IDEA 或 IdeVim 来解决冲突。这是推特上的 发布公告

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

IdeVim 现在(至少在0.35之前)支持 设置命令的数量有限,以及 map 及其变体。要让它们自动来源,把你的设置放在 ~/。Iavimrc.

要让它在 Windows7上运行,请在 C 语言中使用 create. ideavimrc: Users [ username ]

对我有用。

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

source ~/.vimrc

我昨天才知道怎么做。我能够象征性地把我的。通过运行以下命令将 vimrc 设置为 ideavim:

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

我使用 vim (版本0.57)2天: D 和我讨厌退出插入模式与 ESC 键 在喷气式飞机的大脑中,只要向下看右边,你就会看到 vim 的标志,然后 > Open ~/. ideavimrc

enter image description here

然后键入 :imap ii <ESC>,这将退出带有双 i (put whatever)的插入模式 然后保存.ideavimrc 文件并重新启动 IDE