.vimrc
我最近(再次)深入了解了 vim,现在我的文件中有大量的自定义项。我意识到并不是其中的所有内容在 IDEA 插件的上下文中都是有意义的,但是如果重新映射到之类的东西被拾取并兑现,我真的很喜欢它。有没有办法做到这一点?无需手动调整 IDEA 键盘映射中的所有内容。jj
Esc
谢谢。
更新答案:IdeaVim 0.35 版(2014-05-15 发布)从~/.ideavimrc
. 如果您source ~/.vimrc
想包含来自~/.vimrc
.
0.33 和 0.34~/.vimrc
直接读取。
0.33(2014-04-28 发布)是第一个实现VIM-288的版本,包括映射jj到ESC. 它工作得很好,IDEA 首选项中有一个新的Vim Emulation部分,列出了~/.vimrc
映射和 Intellij 映射之间的所有冲突,并允许您通过将键分配给 IDEA 或 IdeaVim 来解决冲突。这是推特上的发布公告。
(注:我不是作者,只是一个满意的用户。)
更新:是的!请参阅下面的答案。
简短的回答:没有。
我也一直在尝试这样做,特别是因为我多年来.vimrc
已经习惯了一种相当复杂的情况。
无论如何,有一种解决方法(有点)。IdeaVim 设置存储在您的主文件夹(在 Windows 上)内的文件夹中调用vim.xml
的文件中。您可以编辑 XML 以添加所需的内容。例如,我添加了以下几行以通过点击而不是键入来保存文件: .IntelliJIdea10/config/keymaps
C:\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/
根据插件存储库 ( https://github.com/JetBrains/ideavim ) 中的描述,您可以通过创建一个包含其内容的文件“ ~/.ideavimrc ”来实现:
source ~/.vimrc
看起来 IdeaVIM 问题 # VIM-288(编辑,更新:参见jbyler 的回答,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, 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)})
});
现在部署项目(制作一个 .jar)并将其添加到您的插件文件夹中;我按照以下说明进行参考:
您可能需要从您的键盘映射文件夹中保存您的 Vim.xml 文件,我不确定。我删除了我的,然后在我重新启动 IntelliJ 时重新制作了它。
试一试!现在应该可以使用“jk”作为退出插入模式的快捷方式了!
你知道,我在 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
!
IdeaVim 现在(至少早在 0.35)支持有限数量的 set commands,以及 map 及其变体。要自动获取它们,请将您的设置放在 ~/.ideavimrc 中。
要让它在 Windows 7 上运行,请在 C:\Users[username] 中创建 .ideavimrc
为我工作。
我昨天才想出如何做到这一点。通过运行以下命令,我能够将我的 .vimrc 符号链接到我的 ideavim 设置:
ln -s $HOME/.vimrc $HOME/.ideavim