开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情
ideavim
ideavim已经支持vim大多数的操作,但是仍然是不完整实现。比如列表跳转和很多不常用的命令。此外,如果vim插件和已有的快捷键设置有冲突,可以在vim设置中进行调整,一面引起快捷键的混用。
我的日常开发中使用最多的就是IDEA,毕竟IDEA的功能更多更复杂。所以除了编辑文本之外,让具体的IDE工具和vim配合起来才能达到更加完美的效率。
1. 安装ideavim
安装的部分就不多说了,打开:设置->插件->浏览依赖->搜索vim安装即可。
2. idea的核心操作逻辑
idea毕竟是ide,有着完整的代码开发功能。熟悉idea的设计逻辑和模块应该也是调高效率的必走之路了。
2.1. 布局
4. 在vim中执行idea的action
为了执行idea中的action
,ideavim有两个额外的命令来支持这一操作。
:actionlist [pattern]
:action {actionName}
第一个命令actionlist是帮助查看idea中有哪些命令。第二个命令是执行对应的action
这样子。有了这两个命令的帮助我们就可以在ideavim的配置文件中使用map命令来映射idea的action
到vim的快捷键中。
布局
idea的设计布局分为五部分,从上往下分别是:目录(黄色),toolbar(蓝色),编辑区(红色),扩展工具(绿色),tips(灰色)。详细如图,正常来说vim的作用范围也就在代码编辑区,其他的操作都需要借助idea本身来完成。
除了基本布局之外,idea总是会弹出对话框,比如新建文件,搜索文件等等。这些对话框中的输入操作vim是未启用状态。所以在对话框中输入命令时vim不会生效这一点必须清楚,避免使用的时候引起环混乱。
vim的定位是文本编辑。所以在idea中一般情况下vim快捷键和命令生效的基本条件就是当前窗口焦点在编辑区。这是最基础的条件,如果你当前的快键键在Project
或者Run
这些侧边栏中,按vim的命令肯定是不会生效的。
明白了基本条件,那我们要做的第一件事也是最重要的事情就是在idea中,如何快速的将焦点回到的编辑区。答案是:
**
source ~/.vimrc
当然,只支持部分vimrc的参数,所以并不是所有的vimrc中的配置都会生效
**
" 设置debug为 zd
:nnoremap zd :action Debug<CR>
" 设置run 为 zr
:nnoremap zr :action Run<CR>
这里,我没有测试idea中使用普通的
*map
隐射命令会不会引起递归调用,但是*noremap
有效的状态下使用*nnoremap
总是没有错的。
其实我想表达的重点到这里就差不多了,核心点就是在vim中调用idea的action
,从而使得vim扩展到idea中的所有功能这样子。