我最近已经进入了vim(再次),我现在在我的.vimrc
文件中进行了大量的自定义。我意识到在IDEA插件的上下文中并不是所有内容都有意义,但是如果重新选择jj
到Esc
之类的东西,我会真的喜欢它并且很荣幸。有没有办法做到这一点?无需在IDEA的键映射中手动调整所有内容,即。
感谢。
答案 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'快捷方式在那里被硬编码。我所要做的就是重新部署插件并使用它而不是官方版本。我是这样做的:
抓住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)并将其添加到你的插件文件夹中;我按照这些说明进行了参考:
您可能需要从keymaps文件夹中保存Vim.xml文件,我不确定。我删除了我的,然后当我重新启动IntelliJ时重新制作。
给它一个旋转!现在应该可以使用'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:12IdeaVIM插件从.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)