硬核干货分享,欢迎关注【Java补习课】成长的路上,我们一起前行 !

《高可用系列文章》 已收录在专栏,欢迎关注!

概述

Vim是一个功能强大高度可定制的文本编辑器; 具体有多强大,我现在还没体会到(orz)。在日新月异的互联网时代中,vim 可以算是一个历史悠久的产物,从诞生到现在都没有别的编辑器能替代(感兴趣可了解一下 Emacs)。目前主流的VSCodeIntellij 全家桶Chrome等,都支持/提供了 vim plugin

学习材料

准备工作

vim 功能强大,相信计算机行业的各位大佬都清楚。但是在我们的工作中,没有vim一样能够进行工作,能够排查问题,能过编辑页面等。

学习 vim 是一个枯燥且难熬的过程,你需要2周时间的苦练,而不是3天热度。希望大家能够坚持下来,摆脱 CV工程师title,起码也得多个h,j,k,l

附一张超清 VIM 键位图 ,原图地址:http://cenalulu.github.io/linux/all-vim-cheatsheat/

IDEA 安装 VIM

IntelliJ IDEA -> Perferences -> Plugins

网络不好的情况下,可在官网直接下载 Pluginhttps://plugins.jetbrains.com/plugin/164-ideavim

VIM 移动命令

初阶移动

  • h, j,k,l: 左,下,上,右 移动
  • 0,^,$:行首,行首字母,行尾
  • gg,G,50G:文件头,文件尾,跳转到指定行

演示操作:

h-> j->k->l->0->^->$

进阶移动

  • w & Ww右移一个单词(标点分割), W右移一个字串(空格/换行分割)
  • b & Bb左移一个单词(标点分割), B右移一个字串(空格/换行分割)
  • { & }: 移动到段部 , 换行符分割
  • Ctrl + u/d/翻页

演示操作:

w -> b -> W -> B

实际开发中移动操作

比如,查看41行的 initialize() 方法的实现。

41G -> 2w -> ⌘+⌥+B

VIM 编辑命令

选中命令

  • v:可视化模式,通过 移动命令,选中相应的内容。

插入命令

  • i & Ii在光标字符前插入,I在行首插入。
  • a & Aa在光标字符后添加,A在行尾添加。

删除命令

  • d+motion :删除指令

常用操作:

  • v 选中后删除d
  • dd:删除当前行,并把删除的行存到剪贴板里
  • db/w:删除上/下一个单词

操作演示:

v -> d -> dd -> db -> dw -> dd

修改命令

  • c [number] motion:更改类操作符的工作方式跟删除类是一致。

常用指令: cw 修改当前整个单词,删除当前单词后,编辑正确内容

  • 除了上一节所说的cw,我也可以键入c$,用来修改当前字符到行末的所有内容

撤销命令

  • u 撤销最近的一个修改动作;

  • U 撤销当前行上的所有修改。

  • ctrl + R重放命令- 回退撤销操作

复制粘贴命令

  • y [number] motion : 复制命令,常用的有 yy 复制一行,yw 复制下一个单词,y$ 复制到行尾。
  • [number] p : 粘贴复制内容 , 可粘贴多次 5p

VIM 命令模式

在普通模式下,输入:即可进入

  • s/executor/asyncExecutor/g :替换当前行所有 executorasyncExecutor
  • :g/^\s*$/d: 删除空行以及只有空格的行
  • %s/#.*//g: 删除#之后的字符

宏录制

  • qa 把你的操作记录在寄存器 a。
  • 于是 @a 会replay被录制的宏。
  • @@ 是一个快捷键用来replay最新录制的宏。

示例

在一个只有一行且这一行只有“1”的文本中,键入如下命令:

  • qaYp<C-a>q

    • qa 开始录制
    • Yp 复制行.
    • <C-a> 增加1.
    • q 停止录制.
  • @a → 在1下面写下 2

  • @@ → 在2 正面写下3

  • 现在做 100@@ 会创建新的100行,并把数据增加到 103.

点关注,不迷路

本文带大家手把手学习了一波 VIM 的入门教学,通过结合 IDEA,来让我们在开发过程中,不断熟悉 VIM的语发,拒绝 Ctrl + C/V 工程师,由现在做起~

好了各位,以上就是这篇文章的全部内容了,我后面会每周都更新几篇高质量的大厂面试和常用技术栈相关的文章。感谢大伙能看到这里,如果这个文章写得还不错, 求三连!!! 感谢各位的支持和认可,我们下篇文章见!

我是 九灵 ,有需要交流的童鞋可以关注公众号:Java 补习课! 如果本篇博客有任何错误,请批评指教,不胜感激 !

高效编程:在IntelliJ IDEA中使用VIM的更多相关文章

  1. 在IntelliJ IDEA中使用VIM

    IdeaVim(下载)插件可以让你在IntelliJ IDEA中键盘敲的飞起. 安装 打开IDEA的设置,在Plugins里,你可以选择在线搜索Vim安装,当然如果不行,就可以选择单独下载后安装,以下 ...

  2. 教你在 IntelliJ IDEA 中使用 VIM!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 IdeaVim(下载)插件可以让你在IntelliJ IDEA中键盘敲的飞起. 安装 打开IDEA的设置,在Plugins里 ...

  3. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  4. C# 高效编程笔记2

    C# 高效编程笔记2 1.理解GetHashCode()的陷阱 (1)作用:作为基于散列集合定义键的散列值,如:HashSet<T>,Dictionary<K,V>容器等 (2 ...

  5. C# 高效编程笔记1

    C# 高效编程笔记1 1.使用属性而不是可访问的数据成员 (1).NET Framework中的数据绑定类仅支持属性,而不支持共有数据成员 (2)属性相比数据成员更容易修改 2.用运行时常量(read ...

  6. Python高效编程的19个技巧

    初识Python语言,觉得python满足了我上学时候对编程语言的所有要求.python语言的高效编程技巧让我们这些大学曾经苦逼学了四年c或者c++的人,兴奋的不行不行的,终于解脱了.高级语言,如果做 ...

  7. 架构师速成-如何高效编程 for java

    引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...

  8. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  9. C语言高效编程的几招(绝对实用,绝对经典)

    编写高效简洁的C语言代码,是许多软件工程师追求的目标.废话不说,走起! 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题 eg.字符串的 ...

随机推荐

  1. php混淆加密解密实战

    在查看别人的php源码的时候,我们经常会看到加密后的php代码.那么php加密原理是什么呢?怎么解密呢? 混淆加密 我们从百度随便搜索一个加密网站,例如:http://dezend.qiling.or ...

  2. 『心善渊』Selenium3.0基础 — 23、Selenium元素等待

    目录 1.什么是元素等待 2.为什么要设置元素等待 3.Selenium中常用的等待方式 4.强制等待 5.隐式等待 (1)隐式等待介绍 (2)示例 6.显式等待 (1)显式等待介绍 (2)语法 (3 ...

  3. ESP32-http server笔记

    基于ESP-IDF4.1 #include <esp_wifi.h> #include <esp_event.h> #include <esp_log.h> #in ...

  4. Http2.0详解

    前言 HTTP/1.1协议为现在网络提供了20年的支持.从那时起,网站已经从静态的.文本驱动的文档发展为交互式的.富媒体的应用程序.在此期间底层协议保持不变这一事实正好说明了它的通用性和能力.但随着网 ...

  5. Django基础010--ORM操作

    orm返回的数据有两种,QuerySet,object 1.QuerySet支持链式编程,可以在all()后面继续.方法 teachers = models.Teacher.objects.all() ...

  6. Spring Boot(三):Spring Boot中的事件的使用 与Spring Boot启动流程(Event 事件 和 Listeners监听器)

    前言:在讲述内容之前 希望大家对设计模式有所了解 即使你学会了本片的内容 也不知道什么时候去使用 或者为什么要这样去用 观察者模式: 观察者模式是一种对象行为模式.它定义对象间的一种一对多的依赖关系, ...

  7. c语言:结果不理解

    #include <stdio.h> int main() { int a;float b; scanf("a=%d,b=%f",&a,&b); pri ...

  8. C语言:小数(float double)

    小数分为整数部分和小数部分,它们由点号.分隔,例如 0.0.75.0.4.023.0.27.-937.198 -0.27 等都是合法的小数,这是最常见的小数形式,我们将它称为十进制形式.此外,小数也可 ...

  9. PYD应用方法

    1. 'ImportError: No module named xxx' 可能是xxx.pyd所在路径不在sys.path中. 解决方法:import之前用sys.path.append()方法加入 ...

  10. 你好,我是B树

    一.什么是B树? B树是一棵是具备以下特点的有根树. 1.节点属性 a)x.n:为节点中存储的关键字个数. b)x.key:为节点中存储的关键字.x.key1.x.key2 ... x.keyx.n  ...