IDEA + Vim = 得劲

1年前 (2023) 程序员胖胖胖虎阿
110 0 0

IDEA +  Vim = 得劲

本教程并不是单纯的 vim 操作介绍,更多的是与 Intellj Idea 进行配合。需要同时具备 Intellj Ideavim 使用基础的同学学习。


01. 简介

Vim 是一个高度可配置的文本编辑器,旨在高效地创建和更改任何类型的文本。它作为“vi”包含在大多数 UNIX 系统和 Apple OS X 中。Vim 非常稳定,并且正在不断开发以变得更好。

它的特点包括:

  1. 持久的、多级撤消树

  2. 广泛的插件系统

  1. 支持数百种编程语言和文件格式

  2. 强大的搜索和替换

  3. 与许多工具集成

    为什么要在 Intellj Idea 中使用 Vim?在我们学习某一项新技能,或者新的编程语言,新的编程模式。我们应该自问让我们做出这样的行为的驱动力是什么?学习完它之后它能解决你什么样的疼点问题。这样我们学习起来会更有动力一些。

    让我尝试学习 Vim 的理由:

    Mac
    平台下
    Intellj Idea
    的很多的常用的
    action
    都是需要
    command + option
    这个组合键,从我转到
    Mac
    下,就一直很懊恼,个人感觉这个按键很反人类。
    作为一名服务端开发同学,还是会经常需要在
    linux
    服务器上去修改服务器的系统配置文件。比如
    nginx
    配置,这个时候不可避免的需要使用到
    vim
    编辑器。如果你不熟练 操作起来还是相当的难受的。

    Intellj Idea 中安装了 vim 插件之后。是一个互补的状态 利用各自的优势 使得编程更有效率。


    02. 安装

    IDEA +  Vim = 得劲

    Intellj Idea 中 安装以下三个插件

    • IdeaVim

    • IdeaVim-EasyMotion

    • IdeaVimExtension

    IDEA +  Vim = 得劲

    发现图标像上面一样编程一个小方块的时候 就代表插件安装成功


    03. Vim

    不得不说 vim 的学习成本还是有的,典型的入门很难 入门之后就会爱不释手。我这里对一些基础操作进行一些简单的总结和整理。

    练习一:方向键联系 hjkl

    IDEA +  Vim = 得劲

    根据我自己的经验总结下来从原生编辑器过度到
    Vim
    最不习惯的当属方向键的移动从原本的 方向键变成了
    hjkl
    这个其实没有太多好说的 就是需要克服这一关。多练就行。(下图为 Gif 演示)

    IDEA +  Vim = 得劲

    练习二:复制 & 粘贴

    IDEA +  Vim = 得劲

    CV
    大法好,毕竟大家有时候自嘲都是
    C V
    工程师 ???? 所以 复制 粘贴 还是需要在第一时间学会,这样才能更好的
    coding
    ????。
    • yy 复制当前行

    • p
      粘贴

    IDEA +  Vim = 得劲

    练习三:在学多一点点

    IDEA +  Vim = 得劲

    在学习一些其他的命令 提交效率。

    y p f h c i

    IDEA +  Vim = 得劲

    GIF 中步骤如下:
    1. yy 复制当前行 private String username;

    2. p 将复制的内容进行粘贴

    3. f; 跳转到字符 ; 处,这里其实就是相当于行位。

    4. h 向左移动一个光标

    5. ciw 删除当前处的词,并进入 插入模式

    6. password 输入 password 完成

      v j d

      IDEA +  Vim = 得劲

      GIF 中步骤如下:

      1. V 进入内容选择模式

      2. kkk 向上移动 3 行,并进行选中

      3. d 删除选中部分

        块级删除「常用」di* da*

        IDEA +  Vim = 得劲

        di" 删除" 内的内容,个人感觉这个还是非常常用了。也是初步在效率上优于传统的 intellj idea 的操作方式。如果想要删除之后马上进入插入模式 可以使用 ci"

        IDEA +  Vim = 得劲

        di( 删除( 内的内容,如果想要删除之后马上进入插入模式 可以使用 ci(

        IDEA +  Vim = 得劲

        di{
        删除
        {
        内的内容,如果想要删除之后马上进入插入模式 可以使用
        ci{

        各种进入插入模式

        • i在光标之前,进入插入模式

        • I在本行开头,进入插入模式

        • a在光标之后,进入插入模式

        • A在本行结尾,进入插入模式

        • o在本行之后新增一行,并进入插入模式

        • O在本行之前新增一行,并进入插入模式

        • s删除当前字符,并进入插入模式

        • S删除当前行中的所有文本,并进入插入模式

        在我最开始的学习 vim 的时候只知道 i 进入插入模式。后面才知道还有这么多种方式。

        如果你真的是切换过来之后 这里所有的方式都能用到。

        下面是 gif 演示 可以直接跳过

        IDEA +  Vim = 得劲

        • a
          在光标之后,进入插入模式

        IDEA +  Vim = 得劲

        • i
          在光标之前,进入插入模式

        IDEA +  Vim = 得劲

        • o
          在本行之后新增一行,并进入插入模式

        IDEA +  Vim = 得劲

        • A
          在本行结尾,进入插入模式

        IDEA +  Vim = 得劲

        • I
          在本行开头,进入插入模式

        IDEA +  Vim = 得劲

        • O 在本行之前新增一行,并进入插入模式

        练习四:jump

        IDEA +  Vim = 得劲

        不得不说我们使用 vim 更多的就是为了减少鼠标操作,因为使用鼠标你的手需要离开键盘。

        一来一回 麻烦!!!所以我们需要了解更多光标移动操作
        • [n]f{word} f 用来查找在当前行 当前光标后是否存在某个字符 {word} 如果存在则将光标移动过去

        • $ | ^ $ 跳转到行尾 ^ 跳转到行首

        • % 括号匹配跳转 () [] {}

        • * 跳转到上一个字符的定位处

        • [n]h/j/k/l 数字加上方向键 代表重复运行多少次

          • 2jj 向下移动两行

          • 10l 向右移动 10 个字符

          • 3kk 向下移动 3 行

          • 20h 向左移动 20 字符

        • G | gg

          • G 移动到最后一行

          • gg 移动到第一行

        • H | M | L

          • H 移动到当前页的第一行

          • M 移动到编辑器中部

          • L 移动到当前页的最后一行

        • [n]w 移动到后面 word 的开始位置,前面加上数字 代表重复多少次

        • e 移动到下一个词语的末尾

        • b 移动到上一个单词的开头

        • zz
          改变窗口的整体位置,将当前光标所在处 移动到窗口中部
        下面是 gif 演示

        IDEA +  Vim = 得劲

        • [n]f{word}
          f
          用来查找在当前行 当前光标后是否存在某个字符
          {word}
          如果存在则将光标移动过去。
        • 如果将这里的 f 改为 F 则是反向查找

        IDEA +  Vim = 得劲

        • $ | ^
          $
          跳转到行尾
          ^
          跳转到行首

        IDEA +  Vim = 得劲

        • % 括号匹配跳转 () [] {}

        练习五 学习一些通用场景

        其他的比较好用的命令

        • zo | zc

        • dt{char}


        04. 配置

        在安装了 Vim 之后,其实官方只是给我们了一个基本的架子,能够实现 Vim 的基本操作。如果你想要用的更加顺手,那么你需要对 Vim 进行自己的个性化配置。这是一张白纸,它会被书写成什么样子由你自己决定。

        如何对 Idea 中的 Vim 模块进行配置
        IDEA +  Vim = 得劲

        在右下角点击 Vim 图标,然后点击 Open ~/.ideavimrc

        基础配置

        老规矩,个人感觉对于新手对编辑器进行配置,还是参照社区的常用配置进行使用。当自己对 Vim 更加熟练的时候可以在加入自己的东西

        "语法高亮
        syntax on
        "显示行号
        set number relativenumber
        "显示光标所在位置的行号和列号
        set ruler
        set wrap "自动折行
        set shiftwidth=4
        set tabstop=4
        set softtabstop=4
        set expandtab "将tab替换为相应数量空格
        set smartindent
        set backspace=2
        set co=5
        "设置取消备份 禁止临时文件生成
        set nobackup
        set noswapfile
        " 为IdeaVim插件增加自动切换为英文输入法的功能,
        " idea 需要安装 IdeaVimExtension plugin
        set keep-english-in-normal
        "设置匹配模式 类似当输入一个左括号时会匹配相应的那个右括号
        set showmatch
        set clipboard^=unnamed,unnamedplus
        "set laststatus=2 "命令行为两行
        "set fenc=utf-8 "文件编码
        "set mouse=a "启用鼠标
        "set ignorecase "忽略大小写
        set cursorline "突出显示当前行
        "set cursorcolumn "突出显示当前列
        set fdm=marker

        上面当中比较特别的配置就是

        • 设置 relativenumber 这样可以看相对行号
        • keep-english-in-normal 这个设置开启之后可以在进入命令模式之后自动将输入法切换为英文。这个还是非常推荐设置的,不然每次从 插入模式 切换到 命令模式的时候 如果这个时候是中文输入法,体验就极差了
        • set clipboard^=unamed,unnamedplus
          共享剪切板,Vim 的剪切板和系统的剪切板是隔离的。设置之后可以共享。

        Action 配置

        在 Idea 中大部分的操作都可以抽象为一个 Action 比如
        • 文件重命名 Rename File

        • 重命名变量 或者 类名 RenameElement

        • 去到接口实现 GotoImplementation

        • 复制 Class 引用 CopyReference

        • ...

          在 Vim 中可以通过插入命令模式 直接调用 action

          IDEA +  Vim = 得劲

          上图中 gif 中演示的就是通过 调用
          RenameElement
          Action 重命名变量。

          初步的介绍完
          Intellj Idea

          action
          之后,下面分享我自己目前在用的几个比较常用的配置,通过快捷键 调用
          action

          "jk退出insert模式
          inoremap jk <ESC>

          let mapleader = '\<space>'
          "Idea action 配置
          " 重命令元素
          nnoremap <Leader>re :action RenameElement<CR>
          nnoremap <Leader>gi :action GotoImplementation<CR>
          nnoremap <Leader>im :action ImplementMethods<CR>
          nnoremap <Leader>rv :action IntroduceVariable<CR>
          nnoremap <Leader>cr :action CopyReference<CR>
          nnoremap <Leader>em :action ExtractMethod<CR>
          nnoremap <Leader>sw :action SurroundWith<CR>

          action list
          Intellj Idea
          中只是的所有的
          action
          列表


          插件配置

          其实本来 Vim 中的插件体系是非常强大的,但是因为我们是在 Intellj Idea 中使用 Vim 可以利用很多 Intellj Idea 原本的很多功能。目前我个人还没有发现有很亮眼的插件。所以如果你也正在使用 可以分享一下。


          05. 参考文献

          B 站 vim 入门讲解:bilibili.com/video/BV1Yt411X7mu
          简明 VIM 练级攻略:coolshell.cn/articles/5426.html
          learn-vim:github.com/iggredible/Learn-Vim
          Vim 配置:ruanyifeng.com/blog/2018/09/vimrc.html
          投稿作者:胡川港
          知乎主页:zhihu.com/people/hu-chuan-gang-58

          GitHub主页:https://github.com/xiaoxiunique

          #
          投 稿 通 道
          #

           让你的博客被更多人看到 


          如果你在 CSDN、博客园、掘金等平台有写技术博客的习惯,想让自己的原创博客被更多人看到,可以来 Java后端 投稿。

          Java后端 鼓励读者投稿个人技术博客、面试经验、教程。不管是入门的图文教程、还是热门技术讲解,只要你喜欢写东西,我们欢迎你来投稿。

          ???? 稿件基本要求:

          • 文章确系个人原创作品,如果在其他非公众号渠道有过发表也可以,只要是个人原创即可。

          • 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰、语句通顺。

          • 如果被采纳的原创稿件,我们将提供稿费以及个人影响力曝光,具体依据文章阅读量和质量结算稿费。

          ???? 投稿通道:

          • 投稿请联系下方微信,备注:原创投稿

          IDEA +  Vim = 得劲

          △长按添加 Java后端 小编

          本文分享自微信公众号 - Java后端(web_resource)。
          如有侵权,请联系 support@oschina.cn 删除。
          本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

          版权声明:程序员胖胖胖虎阿 发表于 2023年9月3日 下午6:56。
          转载请注明:IDEA + Vim = 得劲 | 胖虎的工具箱-编程导航

          相关文章

          暂无评论

          暂无评论...