当前位置: 欣欣网 > 码农

IDEA + Vim,竟可以这么牛逼!!

2024-06-03码农

扫码关注 后端架构师 」,选择 星标 公众号

重磅干货,第一时间送达!

责编:架构君 | 来源:捡田螺的小男孩

上一篇好文:

正文

大家好,我是后端架构师。

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

1

简介

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 插件之后。是一个互补的状态 利用各自的优势 使得编程更有效率。

2

安装

Intellj Idea 中 安装以下三个插件

  • IdeaVim

  • IdeaVim-EasyMotion

  • IdeaVimExtension

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

    3

    Vim

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

    练习一:方向键联系 hjkl

    根据我自己的经验总结下来从原生编辑器过度到 Vim 最不习惯的当属方向键的移动从原本的 方向键变成了 hjkl

    这个其实没有太多好说的 就是需要克服这一关。多练就行。(下图为 Gif 演示)

    练习二:复制 & 粘贴

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

  • yy 复制当前行

  • p 粘贴

  • 练习三:在学多一点点

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

    y p f h c i

    GIF 中步骤如下:

    1. yy 复制当前行 private String username;

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

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

    4. h 向左移动一个光标

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

    6. password 输入 password 完成

    v j d


    GIF 中步骤如下:

    1. V 进入内容选择模式

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

    3. d 删除选中部分

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

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

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

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

    各种进入插入模式

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 练习四:jump

    不得不说我们使用 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 演示

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

  • 如果将这里的 f 改为 F 则是反向查找

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

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

  • 练习五 学习一些通用场景

    其他的比较好用的命令

  • zo | zc

  • dt{char}

  • 微信搜索公众号:架构师指南,回复:架构师 领取资料 。

    4

    配置

    在安装了 Vim 之后,其实官方只是给我们了一个基本的架子,能够实现 Vim 的基本操作。如果你想要用的更加顺手,那么你需要对 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

    上图中 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 原本的很多功能。目前我个人还没有发现有很亮眼的插件。所以如果你也正在使用 可以分享一下。

    参考文献

  • 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

  • 你还有什么想要补充的吗?

    最后给大家推荐一个ChatGPT 4.0国内网站,是我们团队一直在使用的,我们对接是OpenAI官网的账号,给大家打造了一个一模一样ChatGPT,很多粉丝朋友现在也都通过我拿这种号,价格不贵,关键还有售后。

    一句话说明:用官方一半价格的钱,一句话说明:用跟官方 ChatGPT4.0 一模一样功能,无需魔法,无视封号,不必担心次数不够。

    最大优势:可实现会话隔离!突破限制:官方限制每个账号三小时可使用40次4.0本网站可实现次数上限之后,手动切换下一个未使用的账号【相当于一个4.0帐号,同享受一百个账号轮换使用权限】

    最后,再次推荐下我们的AI星

    为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索 ChatGPT和新的AI时代

    有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。

    不光是增长速度最快,我们的星球品质也绝对经得起考验,短短一个月时间,我们的课程团队发布了 8个专栏、18个副业项目

    简单说下这个星球能给大家提供什么:

    1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。

    2、分享ChatGPT的使用方法、最新资讯、商业价值。

    3、探讨未来关于ChatGPT的机遇,共同成长。

    4、帮助大家解决ChatGPT遇到的问题。

    5、 提供一整年的售后服务,一起搞副业

    星球福利:

    1、加入星球4天后,就送ChatGPT独立账号。

    2、邀请你加入ChatGPT会员交流群。

    3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。

    其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !

    本星球第一期原价 399 ,目前属于试运营,早鸟价 149 ,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以 更高价格加入了 。。

    早就是优势。 建议大家尽早以便宜的价格加入!

    欢迎有需要的同学试试,如果本文对您有帮助,也请帮忙点个 赞 + 在看 啦!❤️

    在 还有更多优质项目系统学习资源,欢迎分享给其他同学吧!

    PS:如果觉得我的分享不错,欢迎大家随手点赞、转发、在看。

    最后给读者整理了一份BAT大厂面试真题,需要的可扫码加微信备注:「面试」获取。

    版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!

    END

    最近面试BAT,整理一份面试资料【Java面试BAT通关手册】,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。在这里,我为大家准备了一份2021年最新最全BAT等大厂Java面试经验总结。

    别找了,想获取史上最全的Java大厂面试题学习资料

    扫下方二维码回复面试就好了

    历史好文:

    扫码关注后端架构师」,选择星标公众号

    重磅干货,第一时间送达

    ,你在看吗?