Vim 使用说明
# Vim 使用说明
# 打开文件
vim filename
打开文件
vim -R filename
只读打开文件
vim -M filename
强制避免对文件进行修改打开文件
vim filename1 filename2 filename3
同时打开多个文件,但是只显示第一个文件内容
:next | :n
编辑下一个文件
:wnext | :wn
保存当前文件内容并且继续编辑下一个文件
Ctrl+^
在两个文件之间切换
vim -o filename1 filename2
为每一个文件打开一个窗口
:args filename4 filename5 filename6
在不关闭vim的同时,重新定义文件列表
# 保存和退出
:w
保存
:q | :quit
退出
ZZ | :wq | :x
保存退出
ZQ | :q!
不保存直接退出
:edit filename | :e filename
编辑另一个文件
:e!
放弃当前文件所有修改并重新载入原始内容
:qall
放弃所有窗口的修改并退出
:wall
保存所有窗口的修改
:wqall
保存所有修改并退出
:w filename | :sav filename | :saveas filename
另存为
:f filename | :file filename
将修改的版本另存为新文件,同时不保存源文件的修改
:set autowrite
设置自动存盘
该命令在每个:next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、Ctrl+]、Ctrl+^命令时执行。
# Visual模式
v
进入Visual模式,从光标当前位置开始,移动所经过的内容都会被选中,直到下一次v结束
V
进入Visual模式,从光标当前行首开始,移动所经过的行都会被选中,直到下一次V结束
Ctrl+v
从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按Ctrl+v结束
ggVG
快速全选,gg:转到行首,V:选择整行,G:转到尾行
# 显示设置
:args
显示当前文件
:set number | :set nu!
显示行号
:set nonumber | :set nonu!
不显示行号
:set ruler
在Vim窗口右下角显示当前光标位置
:set autoindent
自动缩进
:set hlsearch
查询结果高亮
:set nohlsearch
取消查询结果高亮
:split | :vsplit
分割窗口
Ctrl+w
切换当前活动窗口
Ctrl+w h
切换到左边窗口
Ctrl+w j
切换到下边窗口
Ctrl+w k
切换到上边窗口
Ctrl+w i
切换到右边窗口
Ctrl+w t
切换到顶部窗口
Ctrl+w b
切换到底部窗口
:close
关闭活动窗口,阻止关闭最后一个活动窗口
:only
关闭除当前活动窗口之外的所有窗口,修改过的窗口不会关闭
:set warp
自动换行
:set ignorecase
忽略大小写
==
对当前行自动格式化
数字==
对当前行起的下面"数字"行进行格式化
gg=G
对整个文档进行格式化
# 编辑
# 增加
i
在光标之前插入
支持数字:3i!,在光标之前插入三个"!"
I
在当前行首插入
支持数字:3I@,在行首插入三个"@"
a
在光标之后插入
支持数字:3a!,在光标之后插入三个"!"
A
在当前行尾插入
支持数字:3A@,在行尾插入三个"@"
o
在当前光标行之下插入空行
O
在当前光标行之上插入空行
# 删除
d+位移命令
删除从光标位置到位移处的内容
支持数字: d+2+方向键,剪切左右方向的两个字符,剪切上下方向2行+当前行(共三行)的内容
- 3dw | d3w 删除当前光标后面的3个单词
- 3d2w 删除2光标后面两个单词,执行3次,共删除6个单词
- 左: 剪切前一个字符
- 右: 剪切后一个字符
- 上: 剪切当前行和上一行
- 下: 剪切当前行和下一行
- Shift+左: 剪切至当前单词首字符
- Shift+右: 剪切至下一个单词首字符
- dw 删除从当前位置到下一个单词词首
- db 删除从当前位置到前一个单词词首
- diw 删除光标所在的单词,不包括空白字符
- daw 删除当前光标所在单词,包括之后的空白字符
- dG 删除当前行至文件末尾的内容
- dgg 删除当前行至文件行首的内容
dd
删除当前光标整行,并将之后内容上移一行
D | d$
删除到行尾
c+位移命令
删除从光标处到位移处的内容,并进入编辑模式。具体参照 "d+位移命令"
C | c$
删除光标处至行尾,并进入编辑模式
x | dl
删除当前光标右边的一个字符
支持数字:3x,删除光标右边三个字符
X | dh
删除当前光标左边的一个字符
支持数字:3X,删除光标左边三个字符
s | cl
删除当前光标之后的一个字符并进入编辑模式
支持数字:3s,删除光标右边三个字符
S | cc
删除当前整行,保留该空行并且保留缩进,进入编辑模式。
支持数字:3S,删除当前行开始往下3行内容
J
删除当前行的换行符,相当于将下一行内容上移至当前行末尾
# 复制和粘贴
d+位移命令
剪切。(不贴则用作删除)
y
复制
具体操作同剪切(d)
+y
复制到系统剪贴板
yy
复制一行
支持数字:3yy,复制当前行与下面两行
p
粘贴到光标之后
支持数字:3p,粘贴3次
P
粘贴到光标之前
支持数字:3P,粘贴3次
+p
从系统剪贴板粘贴
# 重复和撤销
u
撤销
支持数字,3u,撤销3次
Ctrl+r | .
重做,"."需要在Normal模式下执行
支持数字,3 + Ctrl+R,重做三次
U
重做,一次撤销对一行的操作,再次使用则会撤销前一次的"U"操作
# 移动
方向键
移动
数字+方向键
移动
- 左:向左移动"数字"个字符
- 右:向右移动"数字"个字符
- 上:向上移动"数字"行
- 下:向下移动"数字"行
w | W
移动到下一单词首字符
支持数字,3w,移动到后面3个单词首字符
b | B
移动到前一单词首字符
支持数字,3b,移动到前面3个单词首字符
e | E
移动到下一个单词末字符
支持数字,3e,移动到后面3个单词末字符
$ | <END>键
移动到当前行末尾
支持数字,3$,移动到下3行(当前行为第一行)末尾
0 | ^ | <HOME>键
移动到当前行首
不支持数字
G
移动到最后一行
数字+G
移动到指定行
gg
移动到第一行
ge
移动到前一单词末字符
支持数字,3ge,移动到前面3个单词末字符
数字+%
移动到文档某一位置,如:50%,移动到文档中间,90%,移动到文档靠近尾部
:+数字
移动到文档的某一行
H
移动到当前界面顶部
M
移动到当前画面中部
L
移动到当前界面底部
(
移动到句首
)
移动到句尾
{
移动到段首
}
移动到段尾
Ctrl+o
光标跳转到之前的位置
Ctrl+i
光标跳转到之后的位置(在使用Ctrl+o之后有效)
# 标记
m+字符
设定标记,将当前光标处用指定字符作为标记
`+字符
跳转到指定标记,如果该字符标记位存在,则会跳转,使用m设定标记
:marks
查看标记
``
如果使用了G进行跳转,那么该命令则会在当前位置和跳转后的位置进行来回切换
##滚动屏幕
Ctrl+y
向上一行
Ctrl+e
向下一行
Ctrl+u
向上半屏
Ctrl+d
向下半屏
Ctrl+b
向上整屏
Ctrl+f
向下整屏
zt
把当前行置于屏幕顶端
zz
把当前行置于屏幕中央
zb
把当前行置于屏幕底端
# 查找和替换
f+字符
光标跳转到当前行的下一个该字符
F+字符
光标跳转到当前行的前一个该字符
t+字符
光标跳转到当前行的下一个该字符的前一个字符
T+字符
光标跳转到当前行的前一个该字符的前一个字符
;
用来重复 f | F | t | T 这四个命令
%
跳转到匹配成对的括号,包括小括号,中括号,大括号
/ | ? +字符串
搜索一个字符串,
/
用于向后查找
?
用于向前查找
n
用于该目标字符串的下一个位置(与 / | ? 指定方向同向)
支持数字,3n,该目标字符串在当前查找方向同向的第三次出现的位置
N
用于该目标字符串的上一个位置(与 / | ? 指定方向反向)
支持数字,3N,该目标字符串在当前查找方向反向的第三次出现的位置
\<
单词开始
\>
单词结尾
/<the\>,这样只会搜索单词 "the",而不会搜索到类似 "there"、"them"
$
匹配一行结尾
.
匹配任意字符
\
匹配特殊字符
^
匹配一行开头
*
选取光标当前所在单词向后进行搜索
支持数字,3*,该单词第三次出现的位置
#
选取光标当前所在单词向前进行搜索
支持数字,3#,该单词第三次出现的位置
# 替换文本
:s/文本1/文本2/
用文本2替换第一次出现的文本1
:s/文本1/文本2/g
用文本2替换当前行所有匹配到的文本1
:%s/文本1/文本2/g
用文本2替换整个文件中所有匹配到的文本1
:%s/文本1/文本2/gc
用文本2替换整个文件中所有匹配到的文本1,并且每次替换时确认
r
等待键入下一个字符,用于替换当前光标处的字符
支持数字,3r+键入字符,当前光标处开始,往后3个字符替换为键入的字符,如果替换为换行符,则只会替换为一个