有没有办法让IdeaVIM来尊重我的.vimrc文件的映射?
我最近已经进入了vim(再次),现在我在.vimrc
文件中进行了大量的定制。 我意识到,在IDEA插件的背景下,并不是所有的东西都有意义,但是如果把jj
重新映射到Esc
这样的东西,我真的很喜欢它。 有没有办法做到这一点? 不需要在IDEA的键盘映射中手动调整所有的东西,也就是说。
谢谢。
更新:是的! 见下面的答案。
简短的回答:不。
我一直在尝试这样做,特别是因为我有一个相当复杂的.vimrc
,我已经习惯了多年。
无论如何,有一个解决方法(sorting)。 IdeaVim设置存储在主文件夹(Windows中的C:\Users\<user_name>
)内的vim.xml
.IntelliJIdea10/config/keymaps
文件夹中名为vim.xml
的文件中。 你可以编辑XML来添加你想要的东西。 例如,我添加了下面几行来通过按F2
来保存文件,而不是input:w!
:
<action id="SaveAll"> <keyboard-shortcut first-keystroke="F2"/> </action>
但是,我不明白我们如何添加像函数或vim设置(这是我通常使用.vimrc
)。
PS这可能解释为什么一个.vimrc没有使用(强调我的):
好奇的是,这个插件没有提及VIM源代码 (正则expression式处理除外)。 我基本上使用优秀的VIM文档和VIM本身作为参考来validation正确的行为。
来源: http : //ideavim.sourceforge.net/
更新回答:IdeaVim 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或IdeaVim来解决冲突。 这是Twitter上的发布公告 。
(注意:我不是作者,只是一个满意的用户。)
它看起来是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 [] { 新的快捷键(KeyStroke.getKeyStroke('[',KeyEvent.CTRL_MASK)), 新的快捷键(KeyStroke.getKeyStroke(KeyEvent.VK_C,KeyEvent.CTRL_MASK)), 新的快捷键(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0)), 新捷径(“jk”), 新的快捷方式(新的KeyStroke [] {KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH,KeyEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_N,KeyEvent.CTRL_MASK)}) });
-
现在部署项目(制作一个.jar)并将其添加到您的插件文件夹; 我遵循这些指示参考:
-
您可能需要从您的keymaps文件夹保存Vim.xml文件,我不确定。 我删除了我的,然后重新启动IntelliJ重新制作。
-
给它一个旋转! 现在应该可以使用'jk'作为退出插入模式的快捷方式!
您知道,我在Windows的主文件夹中的.vimrc上取得了一些成功,通常是C:\ Users \ yourLogin。 这似乎是由devise。 Oleg提到IdeaVIM在这里使用了VIm命令的一个子集。
http://youtrack.jetbrains.com/issue/VIM-134#tab=Comments
看起来你需要login才能看到youtrack系统的评论。
奥列格Shpynov 2011年8月15日18:12
IdeaVIM插件从.vimrc文件加载一些configuration数据,但是vim插件支持不可用,因为需要重写IdeaVim插件中的所有VIM运行时。
请注意,如果您使用的是Windows,您可能需要命名文件.vimrc,而不是_vimrc。
至less与set ignorecase
工作!
根据插件库( https://github.com/JetBrains/ideavim )中的描述,你可以通过创build一个文件“ 〜/ .ideavimrc ”来获得它的内容:
source ~/.vimrc
现在IdeaVim(至less早于0.35)支持有限数量的设置命令 ,以及地图及其变体。 要让它们自动获取,请将您的设置放在〜/ .ideavimrc中。
为了让它在Windows 7上工作,在C:\ Users [username]中创build.ideavimrc。
为我工作。
我昨天才知道该怎么做。 通过运行以下命令,我能够象征性地将我的.vimrc链接到我的ideavim设置:
ln -s $HOME/.vimrc $HOME/.ideavim