掘金 后端 ( ) • 2024-05-13 11:03

一、前言

vim的基础命令我这边不多做介绍,直接给两个比较大而全的直观图,照着一个个命令看下去基本命令就学了一遍了,我会着重介绍我在idea编写代码过程中比较常用的命令,毕竟在idea写代码和在vim编辑器里写代码还是有很大区别的,idea本身自带了很多功能,不需要依赖vim更加方便

2.png

3.png

二、插件推荐

  1. 在idea用vim推荐下载如下几个插件,很多文章也推荐了这两个插件,但都没具体介绍

Untitled 2.png

  1. IdeaEasyMotion

    对于不想用鼠标移动的用户来讲,这是个快速定位的神器,入下图所示,通过快捷键<ll>w

    显示所有单词的开头,输入对应的字母就可以将光标定位到那个单词的开头,接下去若要修改,直接cw就删掉这个单词进入插入模式修改了

    这里<ll> 代表了两个<leader> 在配置文件用let mapleader=" " 来表示这个字符,我习惯用空格来作为leader

Untitled.gif

  • IdeaVimExtension

    这个插件就是用来支持vim操作idea的action动作的,下面会介绍如何使用action

三、开发常用命令

  1. v系列

    • viw 选中光标所在的单词,通常配合c进行单词的快速修改,也就是viwc直接修改一个单词变成插入模式直接写,相比于idea的变量重命名快捷键,这个的好处就是不管是变量,类名,方法名都可以直接快速选中单词直接改 Untitled 1.gif

    • viw:选择当前光标所在的单词(word),不包括周围的空格或标点。

    • visvi' :选择单引号内的文本(不包括单引号本身)。

    • vinvi" :选择双引号内的文本(不包括双引号本身)。

    • vibvi(vi) :选择圆括号内的文本(不包括圆括号本身)。

    • viBvi{vi} :选择大括号内的文本(不包括大括号本身)。

    • vi[vi] :选择方括号内的文本(不包括方括号本身)。

    • vit:选择HTML标签内的文本(不包括标签本身)

    以上方法对应了选中对应两个相同符号范围内的字符串,比如选中双引号内的字符串

    Untitled 2.gif

  2. c系列

    • ciw == viwc 相比于viwc这种可视化选择修改,ciw更加直接,会直接修改光标所在的单词,直接进入插入模式并删除单词

    Untitled 3.gif

    • v系列的所有命令都可以改成c开头,效果等同于vi?c
  3. hjkl移动

    • 在vim编辑器中,本来移动和定位也是vim语法比较擅长的一项,但在idea中实际上鼠标的移动更方便进行光标的定位,特别是对mac来讲更加如此,手指划拉一下比hjkl的移动更有性价比,所以对vim的移动,感兴趣的学下就好了,没必要在实际开发中用它
  4. r替换 x删除

    • idea中command+R进行快速替换就够用了,所以:%s/a/b/g这种方式的替换就没必要了,但我们常常会遇到单个字母写错或者多写的情况,这种情况下,快速的修补方案用r和x就比较有性价比了
    • 选中指定字母,按r,接下去你按任意字母,该字母就会替换为指定字母
    • 选中指定字母,按x,直接删除这个字母,不会进入插入模式
  5. 自定义删除指定参数

    自定义命令需要在ideavimrc文件里写入,入口在

    Untitled 3.png

    我自定义的命令如下,前三个是删除,后三个是选择

    "光标在多个参数的第一个参数任意位置,执行直接删参数
    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)
    

    Untitled 4.gif

四、action

重点介绍下如何使用idea的action实现用vim的快捷键调用idea的功能

  1. 找到命令

    首先我们要知道对应功能的action是什么名字,使用命令:actionlist [pattern]

    以下举例,打开terminal控制台,找到激活控制台命令,根据关键词terminal搜索,复制命令后action执行

    Untitled 5.gif

  2. 执行命令:action [指令]

  3. 固话命令

    对于有些命令,我们希望通过快捷键就可以便捷的执行,那么我们可以写入.ideavimrc文件

  4. 写入命令

    在文件底部直接添加如下命令

    nnoremap <Space>te :action ActivateTerminalToolWindow<CR>
    

    接下去在普通模式下按空格+te 则可以快捷打开Terminal

  5. 常用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命令

Untitled 4.png