简介:vim命令大全一文搞定
在Linux中最常使用的编辑器就是vim,通过vim我们可以更好的更直观的编辑文本。现实工作中,大家都是在windows/mac下开发,故而对于Linux中的vim一些命令可能会忘记,今天我们就记录总结一下vim相关命令。
工作模式
vim的工作模式大体分为6种
vim的各种工作模式可以通过不同的键进行切换,用户统一使用ESC键返回到普通模式。
接下来我们还是来看看具体的操作吧?没有安装的可以使用 yum install vim 安装
普通模式
终端使用vim进入,其实就是使用vim打开一个文件进行浏览。例如
vim test.txt
编辑模式
主要用于编辑文件。比如,打开文件后按下 i ,就进入编辑模式了。如果你想要返回普通模式,请按 ESC 键
编辑文本
r - 替换当前字符
R - 在 ESC 按下之前,替换多个字符
J - 将下一行合并到当前行, 并在两部分文本之间插入一个空格
gJ - 将下一行合并到当前行, 两部分文本之间不含空格
gwip - 重新调整段落
g~ - 大小写转换操作修饰符
gu - 小写操作修饰符
gU - 大写操作修饰符
cc - 将光标所在的行删除, 然后进入插入模式
c$ or C - 将光标处到行尾删除, 然后进入插入模式
ciw - 将光标所在的单词删除, 然后进入插入模式
cw or ce - 从光标位置开始, 修改单词
s - 删除当前字符, 然后进入插入模式
S - 清空当前行, 然后进入插入模式 (同cc)
xp - 当前字符后移
u - 撤销
U - 撤销上一次的改动行的操作
Ctrl + r - 重做(取消撤销)
. - 再次执行上个命令
插入模式
i - 从光标前开始插入字符
I - 从行首开始插入字符
a - 从光标后开始插入字符
A - 从行尾开始插入字符
o - 在当前行之下另起一行, 开始插入字符
O - 在当前行之上另起一行, 开始插入字符
ea - 从当前单词末尾开始插入
Ctrl + h - 在插入模式下,删除光标前的字符
Ctrl + w - 在插入模式下,删除光标前的单词
Ctrl + j - 在插入模式下,另起一行
Ctrl + t - 在插入模式下,向右缩进,宽度由 shiftwidth 控制
Ctrl + d - 在插入模式下,向左缩进,宽度由 shiftwidth 控制
Ctrl + n - 在插入模式下,在光标之前插入自动补全的下一个匹配项
Ctrl + p - 在插入模式下,在光标之前插入自动补全的上一个匹配项
Ctrl + rx - 插入寄存器 x 的内容
Ctrl + ox - 暂时进入正常模式以发出一个正常模式命令 x。
Esc - 退出插入模式
命令模式
该模式下可以对文件进行一些高级处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式。我在网上找了一张vim键盘图,大家可以参考一下
如果不确定当前处于哪种模式,按两次 Esc 键将回到普通模式
h - 左移光标
j - 下移光标
k - 上移光标
l - 右移光标
gj - 下移光标(折行文本)
gk - 上移光标(折行文本)
H - 移动到当前页面顶部
M - 移动到当前页面中间
L - 移动到当前页面底部
w - 移动到下个单词开头
W - 移动到下个单词开头(单词含标点)
e - 移动到下个单词结尾
E - 移动到下个单词结尾(单词含标点)
b - 移动到上个单词开头
B - 移动到上个单词开头(单词含标点)
ge - 移动到上个单词结尾
gE - 移动到上个单词结尾(单词含标点)
% - 跳转到配对的符号(默认支持的配对符号组:: '()', '{}', '[]' - 在vim中使用 :h matchpairs 获得更多信息)
0 - 移动到行首
^ - 移动到行首的非空白符
$ - 移动到行尾
g_ - 移动到行内最后一个非空白符
gg - 移动到文件第一行
G - 移动到文件最后一行
5gg or 5G - 移动到第五行
gd - 跳转到局部定义
gD - 跳转到全局定义
fx - 移动到字符 x 下次出现的位置
tx - 移动到字符 x 下次出现的位置的前一个字符
Fx - 移动到字符 x 上次出现的位置
Tx - 移动到字符 x 上次出现的位置的后一个字符
; - 重复之前的f、t、F、T操作
, - 反向重复之前的f、t、F、T操作
} - 移动到下一个段落 (当编辑代码时则为函数/代码块)
{ - 移动到上一个段落 (当编辑代码时则为函数/代码块)
zz - 移动屏幕使光标居中
zt - 将光标定位在屏幕顶部
zb - 将光标定位在屏幕底部
Ctrl + e - 向下移动屏幕一行(保持光标不动)
Ctrl + y - 向上移动屏幕一行(保持光标不动)
Ctrl + b - 向上滚动一屏
Ctrl + f - 向下滚动一屏
Ctrl + d - 向下滚动半屏
Ctrl + u - 向上滚动半屏
注意:命令前追加数字表示命令的重复次数, 比如 4j 表示向下移动四行
可视化模式命令
> - 向右缩进
< - 向左缩进
y - 复制
d - 剪切
~ - 大小写切换
u - 将选中文本转换为小写
U - 将选中文本转换为大写
剪切,复制,粘贴
yy - 复制当前行
2yy - 复制 2 行
yw - 复制当前单词
yiw - 复制光标处的单词
yaw - 复制光标处的单词及其前后的空格
y$ or Y - 复制, 从光标位置到行末
p - 在光标后粘贴
P - 在光标前粘贴
gp - 在光标后粘贴并把光标定位于粘贴的文本之后
gP - 在光标前粘贴并把光标定位于粘贴的文本之后
dd - 剪切当前行
2dd - 剪切 2 行
dw - 剪切当前单词
diw - 删除光标处的单词
daw - 删除光标处的单词及其前后的空格
:3,5d - 删除 3 到 5 行
:.,$d - 删除当前行到文件末尾
:.,1d - 删除当前行到文件开头
:10,$d - 从第 10 行到文件末尾
:g/{pattern}/d - 删除所有包含模式的行
:g!/{pattern}/d - 删除所有不包含模式的行
d$ or D - 剪切, 从光标位置到行末 (同 D )
x - 剪切当前字符
查找替换
/pattern - 查找 pattern
?pattern - 向上查找 pattern
\vpattern - pattern 中的非字母数字字符被视为正则表达式特殊字符 (不需转义字符)
n - 查找下一个
N - 查找上一个
:%s/old/new/g - 替换全部
:%s/old/new/gc - (逐个)替换
:noh[lsearch] - 移除搜索结果的高亮显示
如果有写的不对的地方可以在我的公众号留言,我会及时更新本文章内容。