vim_command - yuhannah/skills_map GitHub Wiki

Vim 命令

切换模式/插入

Esc # 从编辑模式切换到命令模式
# 从命令模式切换到编辑模式:
a # 在当前字符后添加文本
A # 在行末添加文本
i # 在当前字符前插入文本
I # 在行首插入文本
o # 在当前行后面插入一空行
O # 在当前行前面插入一空行

保存/退出

先按 ESC 键跳到命令模式,然后:

:e! # 放弃所有修改,从上次保存文件开始再编辑
:q # 不保存文件,退出
:q! # 不保存文件,强制退出
:w # 保存文件但不退出
:w file # 将修改另外保存到 file 中,不退出
:w! # 强制保存,不退出
:wq # 保存文件并退出
:wq! # 强制保存文件,并退出
:x # 保存文件并退出
ZZ # 保存文件,并退出

撤销

u # 撤销上一步的操作
Ctrl+r # 重复上一步的操作

翻页

Ctrl+u # 向文件首翻半屏
Ctrl+d # 向文件尾翻半屏
Ctrl+b # 向文件首翻一屏
Ctrl+f # 向文件尾翻一屏

跳转

:行号 # 光标跳转到指定行的行首
数字0 # 移动到当前行行首
$ # 移动到光标所在行的行尾
^ # 移动到光标所在行的行首
w # 光标右移到下个 word 的开头
b # 移动到上一个 word 的开头
<n>w # 右移 n 个 word
<n>b # 左移 n 个 word
n+ # 向下跳 n 行
n- # 向上跳 n 行
nG # 跳到第 n 行
H # 将光标移到当前屏幕的最上行行首。H 表示 Highest。
xH # 将光标移动到当前屏幕的第 x 行行首
G # 移动到文件的最后一行
) # 移到下一个句子的第一个字母
( # 移动到当前句子的第一个字母
{ # 移动到当前段落的的第一个字母
} # 移动到当前段落的最后一个字母

删除

x # 删除光标**后**的一个字符
X # 删除光标**前**的一个字符
nx # 删除从光标开始的 n 个字符
D # 删除从当前光标到光标所在行尾的全部字符
dd # 删除光标行整行内容
ndd # 删除当前行及其后 n-1 行
dG # 删除包括当行到文件尾的内容
dgg # 删除到第一行的内容

复制/粘贴

yy # 将当前行复制到缓冲区
ayy # 将当前行复制到缓冲区,其中 a 为寄存器,a 可以是 a-z 的任意字母或者 0-9 数字,这样可以完成多个复制任务
nyy # 将当前行及其下 n 行的内容保存到寄存器中,其中为一个字母,n 为一个数字
y^ # 复制从光标到行首的内容
y$ # 复制从光标到行尾的内容
p # 将缓存区的内容粘贴到当前光标所在位置的**下方**
P # 将缓存区的内容粘贴到当前光标所在位置的**上方**

查找/替换

/字符串 # 从当前光标所在位置开始向文件**尾部**查找指定字符串的内容,查找的字符串会被加亮显示
?字符串 # 从当前光标所在位置开始向文件**头部**查找指定字符串的内容,查找的字符串会被加亮显示
n # 跳到下一个符合的字符串
N # 跳到上一个符合的字符串
:s/old/new # 用 new 替换当前行首次出现的 old
:s/old/new/g # 用 new 替换当前行所有的 old
:n,m s/old/new/g # 用 new 替换从 n 到 m 行里所有的 old
:%s/old/new/g # 用 new 替换当前文件里所有的 old
:%s/^/hello/g # 在当前文件的所有行的行首添加 hello

打开

:e文件名 # 打开并编辑指定名称的文件
:n # 如果同时打开多个文件,则继续编辑下一个文件

显示

:f # 显示当前的文件名、光标所在行的行号以及显示比例
:set number # 在最左端显示行号
:set nonumber # 在最左端不显示行号
:nu # 显示当前行号

Vim 语法

vi [选项] [参数]

选项

+<行号> # 从指定行号的行开始先是文本内容
-b # 以二进制模式打开文件,用于编辑二进制文件和可执行文件
-c<指令> # 在完成对第一个文件编辑任务后,执行给出的指令
-d # 以 diff 模式打开文件,当多个文件编辑时,显示文件差异部分
-l # 使用 lisp 模式,打开 lisp 和 showmatch
-m # 取消写文件功能,重设 write 选项
-M # 关闭修改功能
-n # 不使用缓存功能
-o<文件数目> # 指定同时打开指定数目的文件
-R # 以只读方式打开文件
-s # 安静模式,不现实指令的任何错误信息

参数

文件列表:指定要编辑的文件列表。多个文件之间使用空格分隔开。

⚠️ **GitHub.com Fallback** ⚠️