Vim 使用
Practice
翻页
快捷键 | 功能 |
---|---|
⌃ F |
下翻一页(Forward) |
⌃ B |
上翻一页(Backward) |
⌃ U |
上翻半页(Up) |
⌃ D |
下翻半页(Down) |
插入
快捷键 | 功能 |
---|---|
a |
在光标后插入 |
i |
在光标前插入 |
A |
在行尾插入 |
I |
在行首插入 |
o |
在下一行插入 |
O |
在上一行插入 |
- i: insert
- a:append
- o: open a line below
复制、粘贴、删除、撤销
快捷键 | 功能 |
---|---|
y |
复制选中文本 |
yy |
复制当前行 |
p |
粘贴到下一行 |
2yy |
复制两行 |
3p |
粘贴三次 |
x |
删除当前字符 |
dd |
删除当前行 |
3dd |
删除三行 |
dG |
删除当前行及之后的行 |
:1,9d |
删除 1 到 9 行的所有内容 |
u |
撤销 |
U |
只撤销对当前行的操作 |
D |
删除行后半段 |
⌃ R |
重做 |
- y: yank
- p: paste
- u: undo
注意,被删除的内容并没有真正删除,都放在了剪贴板中。按下
p
键,就可以将刚才删除的内容再粘贴到当前位置。
查找
快捷键 | 功能 |
---|---|
/hello |
向下查找文本 hello |
/hello\c |
向下查找 hello,不区分大小写 |
?hello |
向上查找文本 hello |
n |
查看下一个匹配项 |
N |
查看上一个匹配项 |
- 查找以 abc 开头的行:
/^abc
- 查找以 abc 结尾的行:
/abc$
替换
快捷键 | 功能 |
---|---|
:s/hello/world |
将该行第一个 hello 替换成 world |
:s/hello/world/g |
将该行所有 hello 替换成 world |
:2,9s/hello/world |
将第 2 行到第 9 行的第一个 hello 替换成 world |
:1,$s/hello/world/g |
将第 1 行到最后一行的所有 hello 替换成 world |
:.,$s/hello/world/g |
将当前行到最后一行的所有 hello 替换成 world |
:%s/hello/world/g |
将文档中所有 hello 替换成 world |
:%s/hello/world/gi |
将文档中所有 hello 替换成 world,忽略大小写 |
:%s/hello/world/gc |
将文档中所有 hello 替换成 world,替换前询问 |
间隔符不一定要使用 /
,也可以使用别的,如 #
、@
。
进入 REPLACE 模式:R
批量注释:
:1,9s/^/#/g " 注释 1 到 9 行
:1,9s/^#//g " 取消注释 1 到 9 行
自定义注释快捷键:
:map ^P I#<Esc> " 设置 Ctrl + P 为在行首添加 # 注释
:map ^B 0x " 设置 Ctrl + B 为删除行首字符(删除 #)
:unmap ^P " 取消该快捷键
解释:
^P
使用Ctrl
+V
+P
打出。I
表示在行首输入,#
为输入内容,<Esc>
表示退回命令模式。0
表示跳到行首,x
表示删除当前字符。
跳转
快捷键 | 功能 |
---|---|
^ 或 0 |
跳转到行首 |
$ |
跳转到行尾 |
gg |
跳转到页首 |
G |
跳转到页尾 |
3G |
跳转到第 3 行 |
:3 |
跳转到第 3 行 |
% |
跳转到匹配的括号处 |
Misc
Vim 配置
命令 | 功能描述 |
---|---|
:w file |
另存为 file |
:set nu |
显示行号 |
:set nonu |
取消显示行号 |
:set cursorline |
突出显示当前行 |
:set mouse=a :set selection=exclusive :set selectmode=mouse,key |
启用鼠标 |
:set autoindent |
自动缩进 |
:set tabstop=4 |
设置 Tab 键宽度 |
:set shiftwidth=4 |
设置自动换行缩进长度 |
:set expandtab |
自动将 Tab 转为空格 |
:syntax enable |
开启语法高亮 |
:set fileencoding=gbk |
转换文件编码 |
:set all |
查看所有的设置参数 |
:help nu |
查看帮助 |
-
可以在开关类配置项的后面加
?
来查看配置项的值::set nu?
-
可以在开关类配置项的后面加
!
来切换配置项的值::set nu!
-
可以在开关类配置项的后面加
&
来重置配置项的值::set nu&
-
可以在开关类配置项的前面加
no
来关闭配置项::set nonu
-
:set nu
也可以写作:set number
-
可以编辑配置文件来更改 vim 的默认配置,此时不需要
:
-
系统配置文件:
/root/.vimrc
-
用户配置文件:
~/.vimrc
-
可以创建软链接同步 root 配置:
sudo ln -s ~/.vimrc /root/
可视化模式
可视化模式用于选中文本。
- 进入可视化模式:
v
(按一下进入,再按一下退出) - 行可视化模式:
V
- 块可视化模式:
Ctrl
+V
命令 | 功能 |
---|---|
d |
删除选中的文本 |
D |
删除选中部分所在的行 |
y |
将选中部分复制到剪贴板中。 |
p |
将剪贴板中的内容粘贴到光标之后 |
P |
将剪贴板中的内容粘贴到光标之前 |
u |
将选中部分的内容全部改为小写 |
U |
将选中部分的内容全部改为大写 |
> |
将选中部分右移一个 Tab 的长度 |
< |
将选中部分左移一个 Tab 的长度 |
多行插入
⌃
V
: 进入可视模式- 按上下键选择行。
⇧
I
: 进入插入模式,插入你想插入的内容。此时只会插入单行,不用担心。- 按两下
Esc
,就会发现多行都被插入了
分屏
水平分屏(上下):
- 命令:
:split filename
或:sp filename
- 快捷键:
Ctrl-W
S
垂直分屏(左右):
- 命令:
:vsplit filename
或:vsp filename
- 快捷键:
Ctrl-W
V
关闭当前屏幕:
- 命令:
:q
- 快捷键:
Ctrl-W
C
切换窗口:
- 快捷键:
Ctrl-W
+W
也可以在打开 Vim 时使用 -o
选项直接打开两个(多个)文件:vim -o file1 file2
将一个文件的所有内容复制到当前行下面的新行::r file
执行 Shell 命令
:!<command> " 直接执行命令
:.!<command> " 选中当前行执行命令
:1,9! " 选中 1~9 行执行命令
:w! " 选中文件的所有内容执行命令,但命令的执行结果不会写入到文件。
:r! " 直接执行命令,并将命令的执行结果插入到当前行下面的新行。
:3r! " 直接执行命令,并将命令的执行结果插入到第 3 行下面的新行。
:1,9w! " 选中 1~9 行执行命令,但命令的执行结果不会写入到文件。
例:
:!cat %
%
是特殊的 Vim 占位符,表示当前缓冲区的文件名。
在执行命令之前记得保存文件。
实用命令
:%!sort
创建文件
:e <filename>
vim 启动选项
vim -r file " 恢复上次 vim 打开时崩溃的文件
vim -R file " 以只读方式打开
vim + file " 将光标置于最后一行的行首
vim +n file " 并将光标置于第 n 行的行首
vim +/pattern file " 将光标置于第一个与 pattern 匹配的位置的行首
vim -c command file " 在对文件进行编辑前,先执行指定的命令。