Vim 学习笔记
翻页
⌃ F:下翻一页(Forward)⌃ B:上翻一页(Backward)⌃ U:上翻半页(Up)⌃ D:下翻半页(Down)
插入
a:在光标后插入(append)i:在光标前插入(insert)A:在行尾插入I:在行首插入o:在下一行插入(open a line below)O:在上一行插入
复制、粘贴、删除、撤销
y:复制选中文本(yank)yy:复制当前行p:粘贴到下一行(paste)2yy:复制两行3p:粘贴三次x:删除当前字符dd:删除当前行3dd:删除三行dG:删除当前行及之后的行:1,9d:删除 1 到 9 行的所有内容u:撤销(undo)U:只撤销对当前行的操作D:删除行后半段⌃ R:重做
注意,被删除的内容并没有真正删除,都放在了剪贴板中。按下
p键,就可以将刚才删除的内容再粘贴到当前位置。
查找
/hello:向下查找文本 hello/hello\c:向下查找 hello,不区分大小写?hello:向上查找文本 hello/^abc:查找以 abc 开头的行/abc$:查找以 abc 结尾的行n:查看下一个匹配项N:查看上一个匹配项
替换
: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 行%:跳转到匹配的括号处
Vim 配置
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 的默认配置,此时不需要
: - 配置文件:
~/.vimrc
参考:
可视化模式
可视化模式用于选中文本。
-
进入可视化模式:
v(第 1 下进入,第 2 下退出) -
行可视化模式:
V -
块可视化模式:
^ V -
d:删除选中的文本 -
D:删除选中部分所在的行 -
y:将选中部分复制到剪贴板中 -
p:将剪贴板中的内容粘贴到光标之后 -
P:将剪贴板中的内容粘贴到光标之前 -
u:将选中部分的内容全部改为小写 -
U:将选中部分的内容全部改为大写 -
>:将选中部分右移一个 Tab 的长度 -
<:将选中部分左移一个 Tab 的长度
多行插入
⌃ V: 进入块可视模式- 按上下键选择行。
⇧ I: 进入插入模式,插入你想插入的内容。此时只会插入单行,不用担心。- 按两下
Esc,就会发现多行都被插入了
分屏
水平分屏(上下):
- 命令:
:split filename或:sp filename - 快捷键:
⌃ W+S
垂直分屏(左右):
- 命令:
:vsplit filename或:vsp filename - 快捷键:
⌃ W+V
关闭当前屏幕:
- 命令:
:q - 快捷键:
⌃ W+C
切换窗口:
- 快捷键:
⌃ 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 " 在对文件进行编辑前,先执行指定的命令。


浙公网安备 33010602011771号