vim 笔记
一、Vim 模式
- 编辑模式 : 键盘操作通常被解析为编辑命令
- 输入模式 : 大部分键盘操作被存储到文档中
- 末行模式 : 用于解释运行 Vim 内置命令
二、模式切换
1、 编辑模式 –> 输入模式
i
: 在当前光标所在处输入I
: 在当前光标所在行的行首输入a
: 在当前光标所在处后方输入A
: 在当前光标所在行行尾输入o
: 在光标所在行的下方新增空白行O
: 在当前所在行的上方新增空白行
2、输入模式 –> 编辑模式
ESC
: 从输入模式返回编辑模式
3、编辑模式 –> 末行模式
:
: 从编辑模式进入末行模式,两次 ESC 返回到编辑模式
三、Vim 常用命令
1、退出
:q!
: 不保存退出:wq
: 保存并退出:x
: 保存并退出ZZ
: 保存并退出(编辑模式):wq!
: 强制保存并退出:qall
: 多文件打开时退出所有文件:wqall
: 保存并退出所有文件
2、打开
vim FILE1 FILE2 ...
: 打开多个文件:next
: 跳转到下一个文件:first
: 跳转到第一个文件:last
: 跳转到最后一个文件:prev
: 跳转到前一个文件
vim -o FILE1 FILE2 ...
: 以上下分屏模式打开所有文件vim -O FILE1 FILE2 ...
: 一左右分屏方式打开所有文件Ctrl+W
在按上下/左右箭头 切换编辑区
Ctrl+w,s
: 对当前文件进行上下分屏显示,类似-o
Ctrl+w,v
: 对当前文件进行左右分屏显示,类似-O
vim +# FILE
: 打开文件,并将光标定位到 # 行位置,不加数字则代表定位在文档末尾
3、光标移动
编辑模式下
[#] h
: 向左移动[#]字符,不写默认1[#] l
: 向右移动[#]字符,不写默认1[#] j
: 向下移动[#]行,不写默认1[#] k
; 向上移动[#]行,不写默认1w
: 跳至下一个单词的词首b
: 跳至当前/上一个单词词首e
: 跳至当前/下一个单词词尾^
: 跳转到当前行首$
: 跳转到当前行尾(包含空白行)0
: 跳转到当前行首(包含空白行))
: 跳转到下一句行尾(
: 跳转到上一句行首}
: 跳转到下一段行尾{
: 跳转到上一段行首[#] G
: 跳转到指定行,不写则默认文档最后一行Ctrl+f
: 向下翻一屏Ctrl+b
: 向上翻一屏Ctrl+d
: 向下翻半屛Ctrl+u
: 向上翻半屛
4、编辑
[#] x
: 删除光标所在处其后的 # 个字符,不写删除当前字符r 字符
: 替换光标所在处为指定字符d [***]
: 删除命令,可配合光标跳转命令删除字符d w
: 删除光标后一个单词d b
: 删除光标前一个单词d $
: 删除光标后到行尾所有内容d ^
: 删除光标到行首所有内容[#] d d
: 删除光标所在处后 # 行,不写删除当前行
末行模式下
START,END d
: 删除 START 到 END 行内容SATRT,+# d
: 删除 START 行开始向后的 # 行内容+#,END d
: 删除从 END 行开始向上的前 # 行内容$ d
: 删除当前行开始到文件末尾. d
: 删除当前行.,$-2
: 支持组合删除,前面的代表删除当前行开始,到文件末尾-2 行的所有内容% d
: 删除全文/pat1/,/pat2/ d
: 从光标所在行开始,删除从第一次被 pat1 匹配到的行开始到第一次被 pat2 匹配带的行结束 中间的所有行c [***]
: 改变命令,先删除内容再切换到输入模式,同d
命令相同,可配合光标跳转命令改变字符[#] c c
: 删除光标所在处 # 行并进入输入模式,不写默认删除当前行并进入输入模式
y [***]
: 复制命令,配合光标跳转命令使用,[#] yy
复制当前行开始的向下 # 行,不写默认复制当前行p
: 粘贴当前光标所在位置的后面(可能是行或者单词,取决于复制的内容)P
: 粘贴当前光标所在位置的前面(可能是行或者单词,取决于复制的内容)u
: 撤销修改Ctrl+r
: 撤销此前的撤销命令.
: 重复此前命令
5、查找
/keyword
: 向下查找?keyword
: 向上查找n
: 向下循环查找N
: 向上循环查找set hlsearch
: 开启高亮查找set nohlsearch
: 关闭高亮查找
6、可视化模式
v
: 进入可视化,按照单词选择V
: 进入可视化,按照行选择
四、窗口属性设置
set nu
: 显示行号set nonu
: 取消显示行号set ai
: 自动缩进set noai
: 取消自动缩进set ic
: 搜索忽略大小写set noic
: 取消搜索忽略大小写set sm
: 显示与之匹配的括号set nosm
: 取消与之显示的括号syntax on
: 开启语法高亮syntax off
: 关闭语法高亮set hlsearch
: 开启搜索高亮set nohlsearch
: 关闭搜索高亮
五、配置文件
- 全局配置文件存放于
/etc/vimrc
- 用户配置文件存放于
~/.vimrc
六、查找替换
末行模式下
命令格式
:地址定界s/查找模式/替换内容/gi
s
: 替换命令,可换成删除d
等g
: global,全局操作,默认的 vim 搜索替换只匹配每行中的第一个被模式匹配的字符,如果有多个则忽略,g 代表全部替换i
: 忽略大小写
对于分隔符
/
可以自定义,默认的 vim 认为紧跟在编辑命令s
后的字符即为分隔符,所以为了避免路径替换时对/
做转义可以使用自定义格式,如地址定界s@匹配模式@替换内容@gi
&
: 用于引用前面 查找模式 所匹配到的所有字符,通常用于插入式替换,如在非注释行前加入#
注释符 :1,$s/^[^#].*/#&/gi