我最近已经进入了vim(再次),现在我在我的.vimrc
文件中有很多定制。我意识到,并不是所有内容在IDEA插件的上下文中都是有意义的,但是如果像重新映射jj
到Esc
这样的东西被挑选出来并且被尊重,我会认为真的是。有没有办法做到这一点?无需手动调整IDEA的键盘映射中的所有内容,也就是说。有没有办法让IdeaVIM兑现我的.vimrc文件中的映射?
谢谢。
我最近已经进入了vim(再次),现在我在我的.vimrc
文件中有很多定制。我意识到,并不是所有内容在IDEA插件的上下文中都是有意义的,但是如果像重新映射jj
到Esc
这样的东西被挑选出来并且被尊重,我会认为真的是。有没有办法做到这一点?无需手动调整IDEA的键盘映射中的所有内容,也就是说。有没有办法让IdeaVIM兑现我的.vimrc文件中的映射?
谢谢。
更新:是!请参阅答案below。
简答:没有。
我一直在努力做到这一点,特别是因为我有一个相当复杂的.vimrc
多年来我已经习惯了。
无论如何,有一种解决方法(有点)。 IdeaVim设置存储在您主文件夹内的.IntelliJIdea10/config/keymaps
文件夹(Windows上的C:\Users\<user_name>
)中名为vim.xml
的文件中。你可以编辑XML来添加你想要的东西。例如,添加以下行击中F2
而不是键入:w!
来保存文件:
<action id="SaveAll">
<keyboard-shortcut first-keystroke="F2"/>
</action>
不过,我看不出我们如何才能增加了函数或者vim的设置(这是我d通常使用.vimrc
)。
P.S.这也许可以解释为什么不使用的.vimrc(重点煤矿):
对于好奇,插件正在 写入没有任何参考 VIM源代码(除了 正则表达式处理)。我 基本上使用优秀的VIM 文档和VIM本身作为 参考来验证正确的行为。
来源:http://ideavim.sourceforge.net/
你知道,我已经取得了一些成功的.vimrc在Windows上我家的文件夹,所以通常是C:\用户\ yourLogin。这似乎是通过设计。 Oleg提到IdeaVIM在这里使用了VIm命令的一个子集。
http://youtrack.jetbrains.com/issue/VIM-134#tab=Comments
看起来你需要登录才能看到youtrack系统上的意见。
奥列格Shpynov 2011 8月15日18:12
IdeaVIM插件加载从.vimrc文件中一些配置数据,但是VIM插件支持 是不是和将不可用,因为是需要重写所有VIM运行时内的 IdeaVim插件。
注意,您必须将文件命名的.vimrc,不_vimrc,如果你使用的是Windows,你可能期望后者。
工程与set ignorecase
至少!
我可以支持它。 IdeaVim似乎读取了〜/ .vimrc文件,但是默默地忽略了它不支持的任何命令和设置。我喜欢关闭错误响铃,所以我在我的.vimrc中设置了':noerrorbells'。但IdeaVim不支持这一点。但是,它支持':set visualbell'。尽管它不会像你期望的那样闪烁屏幕。尽管如此,这仍然有助于保持沉默。所以我把它放在':set noerrorbells'之前的.vimrc中,并且都很好。 – DragonFax 2013-04-11 08:02:10
我在'〜/ .vimrc'中的映射似乎没有被读取。 – Chev 2014-04-07 17:09:55
需要了解您的平台(非常明显*不* Windows *)*和* vimrc中的内容([pastebin?](http://pastebin.com/))能够完全提供帮助 - 这[我的]答案主要是针对Windows(这就是我试用过的东西,部分工作的部分)。如果他仍然参与IdeaVIM,Oleg的回答也相当不错。 – ruffin 2014-04-07 19:59:29
它看起来是IdeaVIM问题#VIM-288(编辑,更新:参见jbyler's answer,VIM-288现在已修复)将在问题得到解决时解决您的问题。我也在寻找一种方法来使'jk'退出插入模式,而不是使用Escape键。我并不是IntelliJ插件方面的专家,但我设法修改了IdeaVIM源代码,以便在那里硬编码'jk'快捷方式。我所要做的就是重新部署插件并使用它来代替官方版本。以下是我如何做到的:
抓住IdeaVIM源代码。
您可以按照页面上的“发展”的指示设置您的开发环境的插件。
现在你IdeaVIM项目中的所有设置,打开此文件: com.maddyhome.idea.vim.key.RegisterActions.java
看来此文件具有所有的视觉/插入/普通模式命令及其相应的键绑定。对于我更改“退出插入模式”键绑定的示例,请查找“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'作为退出插入模式的快捷方式!
更新回答:IdeaVim 0.35版本(发布2014-05-15)从~/.ideavimrc
读取设置和密钥绑定。你可以把source ~/.vimrc
在该文件中,如果你想包括~/.vimrc
映射。
0.33和0.34阅读~/.vimrc
直接。
0.33(发布2014-04-28)是第一个版本实现VIM-288,包括像映射ĴĴ到ESC。它的伟大工程,并有在IDEA偏好的新Vim的仿真部分,列出了所有~/.vimrc
映射和IntelliJ映射之间的矛盾,并让您通过分配的钥匙,无论是思想或IdeaVim解决冲突。这里是twitter上的release announcement。
(注:我不是作家,只是一个满意的用户)
这应该是现在接受的答案! – 2015-02-20 18:19:13
现在,我认为这个工作很好。但我发现我必须使用:imap而不是:map!以插入模式重新映射。在vim中,两者都有效。 – 2015-12-09 11:41:14
我的系统中没有'〜/ .ideavimrc'。另外vim命令'scriptnames'不起作用。有什么方法可以找出我的'〜/ .ideavimrc'文件在哪里? – 2017-09-12 21:43:09
IdeaVim现在(至少早0.35)支持limited number of set commands,以及地图和它的变化。要让它们自动获取,请将您的设置放在〜/ .ideavimrc中。
为了得到它在Windows 7上的工作用C创建.ideavimrc:\用户[用户名]
为我工作。
根据插件(https://github.com/JetBrains/ideavim)的存储库中的描述,就可以实现通过创建一个文件“〜/ .ideavimrc”以其内容:
source ~/.vimrc
我只是想出如何昨天这样做。我是能够象征性地运行以下命令我的.vimrc链接到我的ideavim设置:
ln -s $HOME/.vimrc $HOME/.ideavim
我很害怕,这是答案,但感谢的解决方法,以及极好来源引用。 – 2011-05-14 17:20:28
@HankGay JetBrains的错误跟踪器目前有[问题](http://youtrack.jetbrains.com/issue/VIM-288)解决这个问题。它已经成为重中之重,但无论如何都要投票! – gregoltsov 2013-10-17 15:44:21
它已经修复为0.33,现在该插件不尊重键映射(在github上有一个添加该功能的pull请求) – baldrs 2014-04-29 16:00:41