一、前言
vim的基础命令我这边不多做介绍,直接给两个比较大而全的直观图,照着一个个命令看下去基本命令就学了一遍了,我会着重介绍我在idea编写代码过程中比较常用的命令,毕竟在idea写代码和在vim编辑器里写代码还是有很大区别的,idea本身自带了很多功能,不需要依赖vim更加方便
二、插件推荐
- 在idea用vim推荐下载如下几个插件,很多文章也推荐了这两个插件,但都没具体介绍
-
IdeaEasyMotion
对于不想用鼠标移动的用户来讲,这是个快速定位的神器,入下图所示,通过快捷键
<ll>w
显示所有单词的开头,输入对应的字母就可以将光标定位到那个单词的开头,接下去若要修改,直接
cw
就删掉这个单词进入插入模式修改了这里
<ll>
代表了两个<leader>
在配置文件用let mapleader=" "
来表示这个字符,我习惯用空格来作为leader
-
IdeaVimExtension
这个插件就是用来支持vim操作idea的
action
动作的,下面会介绍如何使用action
三、开发常用命令
-
v
系列-
viw
选中光标所在的单词,通常配合c
进行单词的快速修改,也就是viwc
直接修改一个单词变成插入模式直接写,相比于idea的变量重命名快捷键,这个的好处就是不管是变量,类名,方法名都可以直接快速选中单词直接改 -
viw
:选择当前光标所在的单词(word),不包括周围的空格或标点。 -
vis
或vi'
:选择单引号内的文本(不包括单引号本身)。 -
vin
或vi"
:选择双引号内的文本(不包括双引号本身)。 -
vib
或vi(
或vi)
:选择圆括号内的文本(不包括圆括号本身)。 -
viB
或vi{
或vi}
:选择大括号内的文本(不包括大括号本身)。 -
vi[
或vi]
:选择方括号内的文本(不包括方括号本身)。 -
vit
:选择HTML标签内的文本(不包括标签本身)
以上方法对应了选中对应两个相同符号范围内的字符串,比如选中双引号内的字符串
-
-
c
系列-
ciw
==viwc
相比于viwc
这种可视化选择修改,ciw
更加直接,会直接修改光标所在的单词,直接进入插入模式并删除单词
-
v
系列的所有命令都可以改成c
开头,效果等同于vi?c
-
-
hjkl
移动- 在vim编辑器中,本来移动和定位也是vim语法比较擅长的一项,但在idea中实际上鼠标的移动更方便进行光标的定位,特别是对mac来讲更加如此,手指划拉一下比
hjkl
的移动更有性价比,所以对vim的移动,感兴趣的学下就好了,没必要在实际开发中用它
- 在vim编辑器中,本来移动和定位也是vim语法比较擅长的一项,但在idea中实际上鼠标的移动更方便进行光标的定位,特别是对mac来讲更加如此,手指划拉一下比
-
r
替换x
删除- idea中command+R进行快速替换就够用了,所以
:%s/a/b/g
这种方式的替换就没必要了,但我们常常会遇到单个字母写错或者多写的情况,这种情况下,快速的修补方案用r和x就比较有性价比了 - 选中指定字母,按
r
,接下去你按任意字母,该字母就会替换为指定字母 - 选中指定字母,按
x
,直接删除这个字母,不会进入插入模式
- idea中command+R进行快速替换就够用了,所以
-
自定义删除指定参数
自定义命令需要在ideavimrc文件里写入,入口在
我自定义的命令如下,前三个是删除,后三个是选择
"光标在多个参数的第一个参数任意位置,执行直接删参数 nnoremap <Space>dn F,vt,d "光标在多个参数的第一个参数任意位置,执行直接删参数 nnoremap <Space>db T(vf,ld nnoremap <Space>dm F,vt)d nnoremap <Space>vn F,vt, nnoremap <Space>vb T(vf,l nnoremap <Space>vm F,vt)
四、action
重点介绍下如何使用idea的action实现用vim的快捷键调用idea的功能
-
找到命令
首先我们要知道对应功能的action是什么名字,使用命令
:actionlist [pattern]
以下举例,打开terminal控制台,找到激活控制台命令,根据关键词terminal搜索,复制命令后action执行
-
执行命令
:action [指令]
-
固话命令
对于有些命令,我们希望通过快捷键就可以便捷的执行,那么我们可以写入
.ideavimrc
文件 -
写入命令
在文件底部直接添加如下命令
nnoremap <Space>te :action ActivateTerminalToolWindow<CR>
接下去在普通模式下按
空格+te
则可以快捷打开Terminal
-
常用action
" 这三个都是arthas的命令,结合快捷键快速复制命令 nnoremap <Space>aw :action ArthasWatch<CR> nnoremap <Space>at :action ArthasTrace<CR> nnoremap <Space>dc :action ArthasJadCommandAction<CR>
以上三个是我用的比较多的arthas命令(前提下载arthas插件),调试的时候常常用到要频繁切不同的方法,配置了这几个命令用习惯后无脑按键三连就复制出切方法的命令,就可以去服务器执行了
五、详解map
关于map命令有如下几种,分别在不同的模式下起作用,大部分情况下用的都是nnoremap
命令