Skip to content

Instantly share code, notes, and snippets.

@dasautoooo
Last active April 10, 2024 10:05
Show Gist options
  • Save dasautoooo/60a9495f9e5c17f4580c0ddaabb89f64 to your computer and use it in GitHub Desktop.
Save dasautoooo/60a9495f9e5c17f4580c0ddaabb89f64 to your computer and use it in GitHub Desktop.
Vi Editor Cheat Sheet

Vi Editor Cheat Sheet

光标移动命令

字符

按键 解释
h,j,k,l 左,右,上,下

文本

按键 解释
w,W,b,B 向前,向后一个词
e,E 词尾
(,) 下一个,前一个句子的开头
{,} 下一个,前一个段落的开头
[[, ]] 下一个,前一个小节的开头

按键 解释
0,$ 所在行的最前,最后位置
^ 所在行的第一个非空字符位置
+,- 下一,前一行的第一个字符位置
H 屏幕显示区内最顶端一行
M 屏幕显示区内中间一行
L 屏幕显示区内最底端一行

滚动

按键 解释
[Ctrl]F, [Ctrl]B 向前,向后滚动一个屏幕显示范围
[Ctrl]D, [Ctrl]U 向下,向上滚动半个屏幕显示范围
[Ctrl]E, [Ctrl]Y 在窗口下方,上方再多显示一行
z[Enter] 滚动屏幕,直到光标在屏幕最上方
z. 滚动屏幕,直到光标在屏幕中间
z- 滚动屏幕,直到光标在屏幕最下方

搜索

按键 解释
**/**pattern 向前搜索字符pattern
**?**pattern 向后搜索字符pattern
n,N 在相同,不同的搜索方向上搜索上一次搜索的字符
fx 在所在行向前搜索字符x
Fx 在所在行向后搜索字符x
; 重复执行上一个当前行搜索
, 重复执行上一个当前行搜索,但以相反的方向

行号

按键 解释
[Ctrl]G 显示当前行号
:set nu 显示所有行号
:set nonu 取消显示所有行号
nG 移动到行号是n的一行
G 移动到当前文件的最后一行

标记位置

按键 解释
mx 标记当前位置为x
**`**x 移动光标至标记x
`` 返回上一个标记
**'**x 移动到包含标记x的一行的开头
'' 返回包含上一个标记的一行的开头

编辑命令

输入

按键 解释
i,a 在光标前,后输入内容
I,A 在光标行首,尾输入内容
o,O 在光标的下,上开启新行,输入内容

替换

按键 解释
r 替换光标所在字符一次
更改大小写
cm 在移动范围为m的区域内更改文本,移动范围请查阅光标移动命令。(如:cw 为更改下一个词)
cc 更改当前行
C 更改至行尾的内容
R 一直替换光标所在字符,直到按下[ESC]结束
s 删除当前字符,并继续输入
S 删除当前行,并继续输入

删除,移动

按键 解释
x 删除当前字符
X 删除光标左边的字符
dm 在移动范围为m的区域内删除文本,移动范围请查阅光标移动命令。(如:dw 为删除下一个词)
dd 删除当前行
D 删除至行尾的内容
p,P 将删除的内容插入在光标前,后位置

Yank(拷贝)

按键 解释
ym 在移动范围为m的区域内拷贝文本,移动范围请查阅光标移动命令。(如:yw 为拷贝下一个词)
yy,Y 拷贝当前行
p,P 将拷贝的内容插入在光标前,后位置

其他命令

按键 解释
. 重复上一个编辑操作
u 撤销上一个编辑操作
U 撤销当前行的编辑操作
J 将光标所在行与下一行结合成同一行

保存和退出

按键 解释
ZZ 保存并退出
:x 保存并退出
:wq 保存("write" 写入)并退出
:w 保存文件
:w! 保存文件(强制)
:30,60w newfile 将从第30行到第60行的内容保存为新文件,叫做newfile
:30,60w>> file 将从第30行到第60行的内容保存添加至文件file
:q 退出
:q! 退出,放弃所有更改
:e! 放弃自上次保存后的所有修改
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment