Intellij IdeaVim更改按键

38

我很想使用IdeaVIM,但是我不知道该如何设置自定义的vim按键映射。例如,我想使用Ctrl-C代替Esc,使用wasd代替hjkl

我已经在我的.vimrc文件中设置了这些内容,但是IdeaVIM未能加载它们。我可以手动复制到任何需要的文件中,但是没有关于如何做到这一点的文档。


1
IdeaVim FAQ 似乎解决了这个问题。 - Nolen Royalty
嗨,我在发布之前查看了那个链接,并查看了Vim.xml文件,但无法弄清如何更改键映射。我需要更改移动键,因此我在Vim.xml文件中搜索j,但找不到任何内容。你能给我一个简单的键映射示例吗?谢谢。 - gdoubleod
请投票支持功能请求 [VIM-288](http://youtrack.jetbrains.com/issue/VIM-288):支持从`.vimrc`文件中映射键命令。 - Andrey Vlasovskikh
我是第一次使用IdeaVim,但可能是IDE正在处理按键,而不是IdeaVim?如果您想更改操作方式,您可以在PC上的文件 | 设置 | 编辑器 | Vim仿真或Mac上的设置 | 编辑器 | Vim仿真中管理"Vim仿真"设置。 - Brad Parks
Yooo,IdeaVim 比 VSCode 的 Vim 插件好太多了。有很多更多的功能,而且都能正常工作! - Nathan majicvr.com
4个回答

35
截至IdeaVim 0.35(发布于2014-05-15),支持在~/.ideavimrc中设置键位映射。 如果要包含~/.vimrc中的映射,请将source ~/.vimrc放入该文件中。
发布公告: Release announcement 问题跟踪链接:VIM-288 (注意:这个问题可能被认为是这个其他 StackOverflow 问题的副本。)

1
如果您没有文件 ~/.ideavimrc,那么您可以简单地创建它。只需编写 source ~/.vimrc 或者 source 您的 .vimrc 文件所在的位置。重新启动 PyCharm。 - SanD
3
在Windows系统上,.ideavimrc 文件应该存放在 C:\Users%USERNAME%\ 目录下。 - Lorem Ipsum

34

我自己也做过这件事,在IntelliJ 11中非常容易。我知道在以前的版本(比如9)中,设置按键映射是有很大差异的。

在IntelliJ 11中,您可以执行以下操作:

  1. 进入 设置
  2. 从左侧菜单中选择 按键映射
  3. 在右侧搜索框中搜索 退出插入模式 ,然后将您想要使用的任何按键与其关联,例如 CTRL-C

2
不错!我看到的一个奇怪的事情是所有的键都在一行上。它说键,然后是一个长字符串...你的看起来像那样吗? - gdoubleod
22
我的也是这样的。我真的希望能在 ideavim 中使用“jk”作为我的退出键。如果我试图将其设置为两个按键组合,它会在普通模式下破坏字母 j。 - danneu
1
@danneu:目前在JetBrains的错误跟踪器上有一个问题(http://youtrack.jetbrains.com/issue/VIM-518),正是解决这个问题。投票支持! - gregoltsov
7
我使用 jj 退出插入模式。如果使用这种方法创建键位映射,会阻碍正常模式中使用 j 的实际操作(例如尝试通过 jjj 向下移动三行)。为避免此问题,可以创建 .ideavimrc 文件并将 :imap jj <Esc> 放入其中。 - Lorem Ipsum
另一个流行的选项是 :imap jk <Esc> - dsummersl

6
如果你想要安装Vim插件(我觉得它非常方便打字),并且同时使Ctrl+CCtrl+V可以用于复制和粘贴操作,请执行以下步骤:
在IntelliJ IDEA中,单击文件(File) > 设置(Setting)。在左侧窗格中,展开编辑器(Editor)并单击Vim仿真(Vim Emulation)
在这里,在快捷键(Shortcut)列下,找到Ctrl+C并将其处理程序(Handler列下)从Vim更改为IDE
同样地,对于Ctrl+V也进行重复操作,并单击应用(Apply)确定(OK)
现在,您应该能够使用键盘快捷键进行复制和粘贴,同时保持Vim仿真器启用。

我在任何地方都找不到那个选项,哈哈...谢谢你指出来! - Brad Parks

2

IntelliJ 12.1:

  1. 进入 设置
  2. 从左侧菜单选择 按键映射
  3. 编辑器动作部分找到 Escape 并添加 Ctrl-C 快捷键。 ( 对于 "IdeaVim" 部分的 "Escape" 对我无效 )

使用相同的步骤,但将“Escape”替换为“退出插入模式”,对我只部分起作用。 它可以正确退出插入模式,但是忽略了以下按键。 因此,键入 Ctrl-Cjj 将退出插入模式,但只向上移动一行而不是两行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接