【问题标题】:Escape to IntelliJ IDEA shortcuts from IdeaVim从 IdeaVim 转至 IntelliJ IDEA 快捷方式
【发布时间】:2015-11-05 08:51:54
【问题描述】:

我习惯了 vim 和 IntelliJ 的默认热键。我希望不必更改它们中的任何一个 - 我希望能够在某种转义键之后使用冲突的 IntelliJ 绑定,例如 CTRL-P。

冲突气球和我的research 并没有太大帮助。我唯一发现的是,我可以用热键关闭 vim 插件,然后在完成后重新打开,但我必须记住每次都打开它。

我的问题有什么解决办法吗?

【问题讨论】:

    标签: vim intellij-idea ideavim


    【解决方案1】:

    我创建了.ideavimrc,其中包含所有冲突映射的绑定。也许它会对某人有用。

    imap jj <Esc>
    
    let mapleader = " "
    map <leader>a :action $SelectAll<CR>
    map <leader>b :action GotoDeclaration<CR>
    map <leader>c :action $Copy<CR>
    map <leader>d :action EditorDuplicate<CR>
    map <leader>e :action RecentFiles<CR>
    map <leader>f :action Find<CR>
    map <leader>g :action GotoLine<CR>
    map <leader>h :action TypeHierarchy<CR>
    map <leader>i :action ImplementMethods<CR>
    map <leader>m :action EditorScrollToCenter<CR>
    map <leader>n :action FileChooser.NewFolder<CR>
    map <leader>o :action OverrideMethods<CR>
    map <leader>p :action ParameterInfo<CR>
    map <leader>q :action QuickJavaDoc<CR>
    map <leader>r :action Replace<CR>
    map <leader>s :action SaveAll<CR>
    map <leader>t :action Vcs.UpdateProject<CR>
    map <leader>u :action GotoSuperMethod<CR>
    map <leader>v :action $Paste<CR>
    map <leader>w :action EditorSelectWord<CR>
    map <leader>x :action $Cut<CR>
    map <leader>y :action EditorDeleteLine<CR>
    map <leader>[ :action EditorCodeBlockStart<CR>
    map <leader>] :action EditorCodeBlockEnd<CR>
    

    【讨论】:

    • 我更新了答案。您可以使用 :actionlist 命令查看所有 intellij 操作以自定义这些映射。
    • 什么是“领导者”?
    • @Ted 领导密钥是您定义的任何内容,如果您仔细阅读,有一行说 let mapleader = " " 使 成为领导密钥,例如 &lt;space&gt;+b 转换为 :goto declaration
    • 要让 IdeaVim 读取您对 .ideavimrc 的更改,请使用 :source ~/.ideavimrc
    【解决方案2】:

    我只是关闭 VIM 插件,执行击键,然后重新打开它。为此,我已将 ^Z 绑定到 VIM Emulator 命令,这对我来说已经足够了。要进行设置,请转到 Preferences... => Keymap,搜索“vim emulator”,然后右键单击命令名称以分配快捷方式。

    但是,如果您想要与前缀键一起使用的 IntelliJ 命令集有限,您可以选择前缀键,确保它在 IntelliJ 中未绑定,然后在您的 ~/.ideavimrc 中与原始键一起使用它绑定您要调用的内容。

    例如,VIM 中的 ^D 是“向下滚动窗口”,而在 IntelliJ(使用键盘映射“Mac OS X 10.5+”)中是“调试”。如果您希望能够同时使用两者:

    • 选择一个未在 IntelliJ 中绑定的前缀键,例如 ^Z
    • 在 Other Settings => Vim Emulation 中,找到快捷方式 ^D 并将处理程序设置为 Vim。
    • 在您的~/.ideavimrc 中,添加以下映射:

      nnoremap &lt;C-Z&gt;&lt;C-D&gt; :action Debug&lt;CR&gt;

    现在你可以输入 ^D 来让 Vim 动作向下滚动,或 ^Z^D 来让 IntelliJ 动作 Debug禁用 IdeaVIM。当然,您必须为要以这种方式执行的每个 IntelliJ 命令添加一个映射到 ~/.ideavimrc,但如果您的数量有限,您可以设置一次并完成它。

    【讨论】:

    • 这是一个有趣想法的开始。我想可以解析 IntelliJ 和 IdeaVim 键盘映射文件,然后制作包含所有冲突映射绑定的.ideavimrc。我可以这样做并适应您的回答,然后接受它;我还没有找到相应的文件(我只找到了自定义 IDEA 键盘映射 .xml 文件,到目前为止还没有默认值)。
    • 你是如何用 ^Z 配置 vimemulator 的?我做不到。
    • @Onewildgamer 我支持这个。 “我只是关闭 VIM 插件,执行击键,然后重新打开它。为此,我已将 ^Z 绑定到 VIM Emulator 命令,这对我来说已经足够了。” -- 你是怎么做到的?
    • @Ryan,我刚刚编辑了答案以添加说明。
    • 要查找所有操作,请键入 :actionlist。这是我为绑定 VCS/Commit 操作所做的: 1) 在 IdeaVim / Settings 中设置 Ctrl+K "Commit.. ."IDE 处理程序; 2) 使用:actionlist 命令列出所有动作; 3) 在那里找到 C-K 并复制动作名称 - CheckinProject; 4) 在 IdeaVim / Settings 中将 Ctrl+K "Commit..." 设置为 Vim 处理程序; 5)在~/.ideavimrc-nnoremap &lt;C-z&gt;&lt;C-k&gt;:action CheckinProject&lt;CR&gt;中添加地图; 6):source ~/.ideavimrc.
    【解决方案3】:

    除了@melihovv 的出色回答之外,我还在~/.ideavimrc 中添加了运行、调试和选择配置操作。

    map <leader>dd :action Debug<CR>
    map <leader>cd :action ChooseDebugConfiguration<CR>
    map <leader>rr :action Run<CR>
    map <leader>cr :action ChooseRunConfiguration<CR>
    

    【讨论】:

      【解决方案4】:

      这里没有任何绑定的keymap:要使用,因此可以从配置.ideavimrc

      的全新开始

      【讨论】:

        【解决方案5】:

        一个简单的选项也可能是对 IntelliJ 键绑定使用插入模式。我刚开始使用ideavim,现在这似乎对我有用..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-05
          • 2016-12-23
          • 2018-04-05
          • 2011-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-08
          相关资源
          最近更新 更多