高效编程:在IntelliJ IDEA中使用VIM
硬核干货分享,欢迎关注【Java补习课】成长的路上,我们一起前行 !
《高可用系列文章》 已收录在专栏,欢迎关注!
概述
Vim
是一个功能强大
、高度可定制
的文本编辑器; 具体有多强大,我现在还没体会到(orz
)。在日新月异的互联网时代中,vim
可以算是一个历史悠久的产物,从诞生到现在都没有别的编辑器能替代(感兴趣可了解一下 Emacs
)。目前主流的VSCode
、Intellij 全家桶
和Chrome
等,都支持/提供了 vim plugin
。
学习材料
- # Vim 从入门到精通 :
Github
8k 🌟Vim 学习教程
- # 简明 VIM 练级攻略:
陈皓
的VIM
存活攻略 - # 游戏:VIM 大冒险: 通过
游戏
的方式学习VIM
准备工作
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
网络不好的情况下,可在官网直接下载 Plugin
: https://plugins.jetbrains.com/plugin/164-ideavim
VIM 移动命令
初阶移动
h
,j
,k
,l
: 左,下,上,右 移动0
,^
,$
:行首,行首字母,行尾gg
,G
,50G
:文件头,文件尾,跳转到指定行
演示操作:
h
-> j
->k
->l
->0
->^
->$
进阶移动
w & W
:w
右移一个单词
(标点分割),W
右移一个字串(空格/换行分割)b & B
:b
左移一个单词
(标点分割),B
右移一个字串(空格/换行分割){ & }
: 移动到段首
,尾
部 ,换行符
分割Ctrl + u/d
:上
/下
翻页
演示操作:
w
-> b
-> W
-> B
实际开发中移动操作
比如,查看41行的 initialize()
方法的实现。
41G
-> 2w
-> ⌘+⌥+B
VIM 编辑命令
选中命令
v
:可视化模式,通过移动命令
,选中相应的内容。
插入命令
i & I
:i
在光标字符前插入,I
在行首插入。a & A
:a
在光标字符后添加,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
:替换当前行所有executor
为asyncExecutor
: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 补习课
! 如果本篇博客有任何错误,请批评指教,不胜感激 !