【发布时间】:2015-11-05 08:51:54
【问题描述】:
我习惯了 vim 和 IntelliJ 的默认热键。我希望不必更改它们中的任何一个 - 我希望能够在某种转义键之后使用冲突的 IntelliJ 绑定,例如 CTRL-P。
冲突气球和我的research 并没有太大帮助。我唯一发现的是,我可以用热键关闭 vim 插件,然后在完成后重新打开,但我必须记住每次都打开它。
我的问题有什么解决办法吗?
【问题讨论】:
标签: vim intellij-idea ideavim
我习惯了 vim 和 IntelliJ 的默认热键。我希望不必更改它们中的任何一个 - 我希望能够在某种转义键之后使用冲突的 IntelliJ 绑定,例如 CTRL-P。
冲突气球和我的research 并没有太大帮助。我唯一发现的是,我可以用热键关闭 vim 插件,然后在完成后重新打开,但我必须记住每次都打开它。
我的问题有什么解决办法吗?
【问题讨论】:
标签: vim intellij-idea ideavim
我创建了.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>
【讨论】:
let mapleader = " " 使 <space>+b 转换为 :goto declaration:source ~/.ideavimrc
我只是关闭 VIM 插件,执行击键,然后重新打开它。为此,我已将 ^Z 绑定到 VIM Emulator 命令,这对我来说已经足够了。要进行设置,请转到 Preferences... => Keymap,搜索“vim emulator”,然后右键单击命令名称以分配快捷方式。
但是,如果您想要与前缀键一起使用的 IntelliJ 命令集有限,您可以选择前缀键,确保它在 IntelliJ 中未绑定,然后在您的 ~/.ideavimrc 中与原始键一起使用它绑定您要调用的内容。
例如,VIM 中的 ^D 是“向下滚动窗口”,而在 IntelliJ(使用键盘映射“Mac OS X 10.5+”)中是“调试”。如果您希望能够同时使用两者:
在您的~/.ideavimrc 中,添加以下映射:
nnoremap <C-Z><C-D> :action Debug<CR>
现在你可以输入 ^D 来让 Vim 动作向下滚动,或 ^Z^D 来让 IntelliJ 动作 Debug禁用 IdeaVIM。当然,您必须为要以这种方式执行的每个 IntelliJ 命令添加一个映射到 ~/.ideavimrc,但如果您的数量有限,您可以设置一次并完成它。
【讨论】:
.ideavimrc。我可以这样做并适应您的回答,然后接受它;我还没有找到相应的文件(我只找到了自定义 IDEA 键盘映射 .xml 文件,到目前为止还没有默认值)。
: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 <C-z><C-k>:action CheckinProject<CR>中添加地图; 6):source ~/.ideavimrc.
除了@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>
【讨论】:
这里没有任何绑定的keymap:要使用,因此可以从配置.ideavimrc
的全新开始【讨论】:
一个简单的选项也可能是对 IntelliJ 键绑定使用插入模式。我刚开始使用ideavim,现在这似乎对我有用..
【讨论】: