72

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

谢谢。

4

9 回答 9

175

更新答案:IdeaVim 0.35 版(2014-05-15 发布)从~/.ideavimrc. 如果您source ~/.vimrc想包含来自~/.vimrc.

0.33 和 0.34~/.vimrc直接读取。

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

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

于 2014-04-29T17:09:02.790 回答
25

更新:是的!请参阅下面的答案。

简短的回答:没有。

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

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

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

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

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

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

于 2011-05-14T14:56:29.950 回答
8

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

source ~/.vimrc
于 2015-12-03T15:56:36.163 回答
7

看起来 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[]{
        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”作为退出插入模式的快捷方式了!

于 2013-06-21T04:09:39.017 回答
4

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

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

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

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

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

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

至少可以使用set ignorecase

于 2012-03-20T17:59:02.393 回答
1

IdeaVim 现在(至少早在 0.35)支持有限数量的 set commands,以及 map 及其变体。要自动获取它们,请将您的设置放在 ~/.ideavimrc 中。

于 2014-06-19T01:15:51.003 回答
1

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

为我工作。

于 2015-10-19T10:27:45.297 回答
0

我昨天才想出如何做到这一点。通过运行以下命令,我能够将我的 .vimrc 符号链接到我的 ideavim 设置:

ln -s $HOME/.vimrc $HOME/.ideavim
于 2017-07-15T16:22:18.540 回答
-1

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

在此处输入图像描述

并输入:imap ii <ESC>this will exit insert mode with double i (put nothing) and save .ideavimrc file and restart your IDE

于 2020-05-05T12:02:31.283 回答