VIM 命令小结
启动 vi 命令
命令
功能
Vi filename
从第一行开始编辑 filename 文件
vi +n filename
从第 n 行开始编辑 filename 文件
vi + filename
从最后一行开始编辑 filename 文件
vi +/pattern filename 从包含 pattern 的第一行开始编辑
vi –r filename
在系统崩溃之后恢复 filename 文件
vi –R filename
以只读方式编辑 filename 文件
光标移动命令 Normal 模式,命令前可加上一个重复因子
光标按屏幕移动 部分命令前可加上一个重复因子
添加文本 所有命令(除 r 命令外)都使 vi 处于 Insert 模式,
必须按 Esc 键才能回到 Normal 模式
替换字符串 替换命令的一般格式为
:[address]s/old/rew[/cg]
命令中的元素 含义
address
例:
:s/old/new
:.,$s/old/new/g
:%s/old/new/gc
一个搜索字符串、一个行编号或是一个
由逗号分隔的两个行号。其中“.”表示当
前行,“$”表示最后一行,“%”表示整个
文件。用户可以使用标记或搜索字符串
来代替行号。
old
被替换的字符串
new
替换字符串
c
替换前要求确认
g
指定一个全局替换(每行不止替换一处)
命令
功能
SPACE、l、右向箭头
光标向右移动一格
BACKSPACE、h、左向箭头 光标向左移动一格
k、向上箭头 光标向上移动一行,光标列向位置不变
-
光标移到上面一行的开始
j、向下箭头 光标向下移动一行,光标列向位置不变
+,RETURN 光标移到下面一行的开始
^、0
光标移到所在行的开始
$
光标移到所在行的末尾
w
光标右移一个单词
W
右移一个以空格作为分隔符的单词
b
光标左移一个单词
B
左移一个以空格作为分隔符的单词
e
光标右移到一个单词的结尾
E
右移一个以空格作为分隔符的单词结尾
( / )
光标移到本句/下一句的开始
[[ / ]]
光标移到本节/下一节的开始
{ / }
光标移到本段/下一段的开始
:$
光标移到文件末尾
命令
功能
Ctrl+d 向前移动半个屏幕
Ctrl+u 向后移动半个屏幕
Ctrl+f
向前移动一个屏幕
Ctrl+b 向后移动一个屏幕
nG
光标移到第 n 行,不指定 n,则移到最后一行
H/ M/ L 光标移到屏幕顶部 / 中部 / 底部
命令
文本添加位置
i / I
在光标前 / 在该行的第一个非空白字符前
a / A 在光标后 / 所在行的行尾
o / O 在当前行的下面 / 上面新建一行
r
替换当前字符(一次只能替换一个)
R
替换从当前字符开始的字符,直到按 Esc 键为止
删除和修改文本
Normal 模式,命令前可以添加重复因子,c 表示任意字符。
命令 作用
nx 删除从当前字符开始的 n 个字符(含当前字符)
nX 删除从当前字符前面的 n 个字符(不含当前字符)
ndd 删除当前行开始的 n 行
d0 删除到行首
D、d$ 删除到行尾
dw 删除一个单词。若光标处在某个词的中间,则从光
标所在位置开始删至词尾
dtc 删除到位于当前行的下一个字符 c
n~ 改变从当前字符开始的 n 个字符的大小写
下面命令使 vim 处于 Insert 模式,按 Esc 键回 Normal 模式
ns 替换由 n 所指定数目的字符
S
替换整行
ncc 修改由 n 所指定数目的行
ctc 修改到位于当前行的下一个字符 c
C
修改到行尾
复制与粘贴 Normal 模式,可以添加重复因子
命令 作用
nyy、nY 复制当前行开始的 n 行
y0
复制至行首,不含光标所在处字符。
y$
复制至行尾,含光标所在处字符
nyw
复制 n 个 word
yG
复制至文件尾,包含当前行
y1G
复制至文件首,包含当前行
p
粘贴至光标后,若整行复制则贴在当前行下面
P
粘贴至光标前,若整行复制则贴在当前行上面
搜索字符串 表中 rexp 是正则表达式,可以是单个字符串
命令
作用
/rexp 回车 向前搜索 rexp
?rexp 回车 向后搜索 rexp
n
重复最近一次的搜索
N
重复最近一次的搜索,但搜索方向相反
/ 回车
向前重复最近一次的搜索
? 回车
向后重复最近一次的搜索
%
可以查找配对的括号 )、]、}
其它命令
命令
作用
J
将当前行和下面一行连接起来
.
重复上一次有效命令
U
取消对整行的所有修改操作
u
取消上一次操作,可连续使用
Ctrl+r 取消上一次的取消命令 u,可连续使用
:w
将工作缓存区内容写入当前文件
:w fname 将工作缓存区内容写入由 fname 指定的文件
:q / :q! 退出 vi / 强行退出 vi
:wq
存盘退出
ZZ
将工作缓存区内容写入当前文件并退出
:x
作用同 ZZ
:r fname 插入文件 fname 中的内容
:sp fname 切分新窗口,打开指定文件,用 ctrl+ww 切换
Ctrl+p/n Insert 模式下,向上/下搜索,补全一个词
Ctrl+xl Insert 模式补全一行,ctrl+p/n 选择上/下一个匹配
:!bash 打开 bash,退出后自动回到 vim
”np
提取寄存器 n(1~9)中的内容
:n / :N 同时打开多个文件时,在文件之间切换
启动 vi 命令
命令
功能
Vi filename
从第一行开始编辑 filename 文件
vi +n filename
从第 n 行开始编辑 filename 文件
vi + filename
从最后一行开始编辑 filename 文件
vi +/pattern filename 从包含 pattern 的第一行开始编辑
vi –r filename
在系统崩溃之后恢复 filename 文件
vi –R filename
以只读方式编辑 filename 文件
光标移动命令 Normal 模式,命令前可加上一个重复因子
光标按屏幕移动 部分命令前可加上一个重复因子
添加文本 所有命令(除 r 命令外)都使 vi 处于 Insert 模式,
必须按 Esc 键才能回到 Normal 模式
替换字符串 替换命令的一般格式为
:[address]s/old/rew[/cg]
命令中的元素 含义
address
例:
:s/old/new
:.,$s/old/new/g
:%s/old/new/gc
一个搜索字符串、一个行编号或是一个
由逗号分隔的两个行号。其中“.”表示当
前行,“$”表示最后一行,“%”表示整个
文件。用户可以使用标记或搜索字符串
来代替行号。
old
被替换的字符串
new
替换字符串
c
替换前要求确认
g
指定一个全局替换(每行不止替换一处)
命令
功能
SPACE、l、右向箭头
光标向右移动一格
BACKSPACE、h、左向箭头 光标向左移动一格
k、向上箭头 光标向上移动一行,光标列向位置不变
-
光标移到上面一行的开始
j、向下箭头 光标向下移动一行,光标列向位置不变
+,RETURN 光标移到下面一行的开始
^、0
光标移到所在行的开始
$
光标移到所在行的末尾
w
光标右移一个单词
W
右移一个以空格作为分隔符的单词
b
光标左移一个单词
B
左移一个以空格作为分隔符的单词
e
光标右移到一个单词的结尾
E
右移一个以空格作为分隔符的单词结尾
( / )
光标移到本句/下一句的开始
[[ / ]]
光标移到本节/下一节的开始
{ / }
光标移到本段/下一段的开始
:$
光标移到文件末尾
命令
功能
Ctrl+d 向前移动半个屏幕
Ctrl+u 向后移动半个屏幕
Ctrl+f
向前移动一个屏幕
Ctrl+b 向后移动一个屏幕
nG
光标移到第 n 行,不指定 n,则移到最后一行
H/ M/ L 光标移到屏幕顶部 / 中部 / 底部
命令
文本添加位置
i / I
在光标前 / 在该行的第一个非空白字符前
a / A 在光标后 / 所在行的行尾
o / O 在当前行的下面 / 上面新建一行
r
替换当前字符(一次只能替换一个)
R
替换从当前字符开始的字符,直到按 Esc 键为止
删除和修改文本
Normal 模式,命令前可以添加重复因子,c 表示任意字符。
命令 作用
nx 删除从当前字符开始的 n 个字符(含当前字符)
nX 删除从当前字符前面的 n 个字符(不含当前字符)
ndd 删除当前行开始的 n 行
d0 删除到行首
D、d$ 删除到行尾
dw 删除一个单词。若光标处在某个词的中间,则从光
标所在位置开始删至词尾
dtc 删除到位于当前行的下一个字符 c
n~ 改变从当前字符开始的 n 个字符的大小写
下面命令使 vim 处于 Insert 模式,按 Esc 键回 Normal 模式
ns 替换由 n 所指定数目的字符
S
替换整行
ncc 修改由 n 所指定数目的行
ctc 修改到位于当前行的下一个字符 c
C
修改到行尾
复制与粘贴 Normal 模式,可以添加重复因子
命令 作用
nyy、nY 复制当前行开始的 n 行
y0
复制至行首,不含光标所在处字符。
y$
复制至行尾,含光标所在处字符
nyw
复制 n 个 word
yG
复制至文件尾,包含当前行
y1G
复制至文件首,包含当前行
p
粘贴至光标后,若整行复制则贴在当前行下面
P
粘贴至光标前,若整行复制则贴在当前行上面
搜索字符串 表中 rexp 是正则表达式,可以是单个字符串
命令
作用
/rexp 回车 向前搜索 rexp
?rexp 回车 向后搜索 rexp
n
重复最近一次的搜索
N
重复最近一次的搜索,但搜索方向相反
/ 回车
向前重复最近一次的搜索
? 回车
向后重复最近一次的搜索
%
可以查找配对的括号 )、]、}
其它命令
命令
作用
J
将当前行和下面一行连接起来
.
重复上一次有效命令
U
取消对整行的所有修改操作
u
取消上一次操作,可连续使用
Ctrl+r 取消上一次的取消命令 u,可连续使用
:w
将工作缓存区内容写入当前文件
:w fname 将工作缓存区内容写入由 fname 指定的文件
:q / :q! 退出 vi / 强行退出 vi
:wq
存盘退出
ZZ
将工作缓存区内容写入当前文件并退出
:x
作用同 ZZ
:r fname 插入文件 fname 中的内容
:sp fname 切分新窗口,打开指定文件,用 ctrl+ww 切换
Ctrl+p/n Insert 模式下,向上/下搜索,补全一个词
Ctrl+xl Insert 模式补全一行,ctrl+p/n 选择上/下一个匹配
:!bash 打开 bash,退出后自动回到 vim
”np
提取寄存器 n(1~9)中的内容
:n / :N 同时打开多个文件时,在文件之间切换