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个字符替换为键入的字符,如果替换为换行符,则只会替换为一个