ideaVim安装配置
安装
和安装其它插件一样,直接在插件市场搜索ideaVim安装即可。
配置
快捷键设置
ideaViim键与idea快捷键有冲突,可以在Editor Vim Emulation设置,我的快捷键设置如下:
常用快捷键
- zo:打开折叠
- zc:关闭折叠
.ideavim配置文件讲解
逻辑
开发过idea插件的人都知道,在idea中,任何目录选项上的点击操作,工具栏上的按钮都会被映射为一个action
。即点击对应的按钮或者选项,执行相应的action
。理解很简单,这就是MVC的思想,比如springmvc, 一个访问路径映射为一个控制器中的方法这样子。
明白action
映射这一点很重要。因为ideavim的插件支持使用vim命令执行对应的action
。所以,这个设计逻辑就打通了vim和idea的交互,使得我们可以在vim中完成所有和idea相关的操作。
常规操作
vim的定位是文本编辑。所以在idea中一般情况下vim快捷键和命令生效的基本条件就是当前窗口焦点在编辑区。这是最基础的条件,如果你当前的快键键在Project
或者Run
这些侧边栏中,按vim的命令肯定是不会生效的。
明白了基本条件,那我们要做的第一件事也是最重要的事情就是在idea中,如何快速的将焦点回到的编辑区。答案是:Esc
这应该是使用vim的人最能接受的快捷键了。所以,到这里基本的操作思路就很明确,当前的焦点要么在编辑区外,要么在编辑区内。而返回编辑区的操作很简单,就是Esc
。当焦点在编辑区的时候,就可以随心所欲的使用vim的指令和快捷键了。
配置
有了idea基本的了解之后,我们就可以着手配置自己的vim了。ideavim插件的配置通常是~/.ideavimrc
,所以将自己的配置脚本写在对应的文件中即可。当然如果你已经有了自己的vim配置文件在~/.vimrc
下,那只需要在ideavim的配置文件中添加一行命令即可全部读取映射过来
source ~/.vimrc
在~目录下,创建.ideavimrc
"设置高亮搜索
set hlsearch
"重命名文件
nnoremap <Space>rf :action RenameFile<CR>
"跳到指定类
nnoremap <Space>gc :action GotoClass<CR>
"查找使用
nnoremap <Space>fu :action FindUsages<CR>
"跳转到方法的声明
nnoremap <Space>gs :action GotoSuperMethod<CR>
在vim中执行idea的action
为了执行idea中的action
,ideavim有两个额外的命令来支持这一操作。
:actionlist [pattern]
:action {actionName}
第一个命令actionlist是帮助查看idea中有哪些命令。第二个命令是执行对应的action
这样子。有了这两个命令的帮助我们就可以在ideavim的配置文件中使用map命令来映射idea的action
到vim的快捷键中。
Vim 中的 remap,noremap
remap
是一个使映射以递归方式工作的选项 。
:map
和:noremap
是各种映射命令的递归和非递归版本。这意味着,如果你这样做:
:map j gg
:map Q j
:noremap W j
j
将映射到gg
。 Q
也将映射到gg
,因为j
将被扩展用于递归映射。 W
将被映射到j
(而不是gg
),因为j
不会针对非递归映射进行扩展。
现在请记住,Vim 是一个模态编辑器 。它具有普通模式, 可视模式和其他模式。
对于这些映射集中的每一个,都有一个映射可以在正常,可视,选择和操作员模式下工作( :map
和:noremap
),一个在普通模式下工作( :nmap
和:nnoremap
),一个在可视模式下( :vmap
和:vnoremap
)等等。
参考
https://programtip.com/zh/art-127704
https://blog.csdn.net/qq_40250122/article/details/102054921
https://my.oschina.net/funcy/blog/1832719