1.前言

本节并不会包含完整的vi命令,也不是面向零基础的vi使用者。只是博主总结了下自己认为重要并且自己不熟悉需要查询的vi命令。这点请读者注意。

idea中可以使用vim的插件让我喜出望外。不得不说,有时候键盘定位处理的精准高效让人感觉神清气爽。学好vi对于提高效率还是至关重要啊,就是学习曲线陡峭了点,因为有太多命令要记忆了。我们就罗列下我认为最常用的吧。

2.普通模式下命令

2.1上下左右移动

h: 光标向左移动一个字符
j: 光标向下移动一个字符
k: 光标向上移动一个字符
l: 光标向右移动一个字符

记忆方法:4个方向键都在一行上,h在最左边,l在最右边,分别代表向左和向右移动。hjkl分别代表上下左右,读起来也很自然哈哈。

2.2 行内定位

w/W:光标右移一个单词到字首(短跳)/(长跳)
e/E: 光标右移一个单词到字尾(短跳)/(长跳)
b/B:光标左移一个单词到自首(短跳)/(长跳)
0:数字0表示定位到一行的最前面,注意是最前面
^: 定位到行首第一个字符(非空格字符哦)
$: 定位到行尾
fx:x代表具体的单词,跳转到行内指定的单词位置处(不能跨行)
Fx:和fx功能相同,只不过是向左查找跳转
;:分号和fx配合使用,继续在本行查找

长跳和短跳区别:长跳会把没有空格分隔的全部认为是一个单词,短跳会把符号分隔的都认为是不同的单词。
行内定位:行内定位不代表只能在一行内使用,命令用到一行结尾处会自动到下一行继续发挥命令的效果。

2.3 -段落定位

) :光标移至上一个段落的首个字符(包括空行)
( :光标移至下一个段落的首个字符(包括空行)
{:光标移至上一个空行段落的首个字符
}:光标移至下一个空行段落的首个字符

段落定义:段落指的是连续的多行,中间没有空行的整个一大段字符。多行连续的空行认为是一个大的“空行段落”

2.4 屏幕定位

H:光标移至当前屏幕顶行
M :光标移至当前屏幕中间行
L :光标移至当前屏幕最后行

记忆方法:这个应该很好记,hl分别代表左右移动一个字符,大写的HL自然代表最左和最右,M代表的是middle

2.5 查找定位

*:查找光标所在处单词,向下查找
#: 查找光标所在处单词,向上查找

2.6 其他定位gg:文件的第一个字符

G:文件的最后一个字符
gd: 跳转到当前单词的定义处(写代码时候的好帮手)
%:跳到与当前括号匹配的括号处(写代码时的好帮手)
nG:n代表具体的数字,跳转到指定行的第一个字符

2.7 删除

dd:删除当前行
cc:删除当前行并进入编辑模式
dw:删除一个单词
cw:删除当前单词并进入编辑模式
x:删除当前字符
X:删除前一个字符
D:删除到行末

2.8 复制粘贴

nyy:复制当前行以及之后的总共n行内容
yw:复制一个单词
y$:复制到行尾
p:粘贴到当前行下面(如果是复制的一个单词或者使用y$则直接在当前光标后面粘贴)
P:粘贴到当前行上面
]p:带缩进的粘贴

2.9 替换内容

r:r后面输入替换的一个字符
R:按R后可以持续输入要替换的内容,直到按ESC
~:切换当前字符的大小写
g~iw:切换当前单词的大小写

2.10 重复之前的编辑命令

.:重复之前的命令

2.11 翻页

ctrl+u:向上翻半屏
ctrl+d:想下翻半屏

2.12 撤销重做

u : 撤销上一步的操作
Ctrl+r: 恢复上一步被撤销的操作

3. 冒号模式下命令

3.1 查找替换(冒号模式)

/pattern:向后搜索匹配的字符串pattern
?pattern:向前搜索字符串pattern
n:/则下一个匹配,?则上一个匹配
N:/则上一个匹配,?则下一个匹配
%s/old/new/g:将old换为new
%s/old/new/gc:将old换为new(有提示)
n%:直接按百分比跳转内容
ctrl+G:显示当前的位置百分比

4.插入模式

i:在光标前进入插入模式(insert)
a:在光标后进入插入模式(append)
I:在光标所在行首进入插入模式
A:在光标所在行尾进入插入模式
o:在光标所在行下插入空行
O:在光标所在行上插入空行

5.可视模式(标记模式)

这个就是常见的选中了,配合IDEA的一些快捷键使用可以大大提升效率。

5.1 进入可视模式

v:开始进入可视模式,可以配合w,b,e等定位符来操作选中单词
V:行标记模式,直接标记一行,可以配合hjkl移动来标记更多的行
ctrl+v:列模式,同一列的一起选中,也可以配合hjkl等一起选中

5.2 标记动作

ib:先v进入可视模式,然后选中小括号内所有的内容(不包括小括号)
iB:先v进入可视模式,然后选中大括号内所有的内容(不包括大括号)
ab:先v进入可视模式,然后选中小括号内所有的内容(包括小括号)
aB:先v进入可视模式,然后选中大括号内所有的内容(包括大括号)

5.3 标记操作

<:标记后对选中内容按照tab进行左移和右移
y:对标记内容复制
d:对标记内容删除
c:对标记内容删除并进入到编辑模式
~:切换笔记内容大小写

6.其他技巧

启动Intellij后在Vim模拟器下输入命令 :set so=5 可以令屏幕滚动时在光标上下方保留5行预览代码(也就是光标会在第5行触发向上滚动,或者在倒数第5行触发向下滚动)。在代码窗口比较狭小时(例如单步跟踪调试时)非常方便。可惜仅在Vim模拟器开启时有效。