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: 对当前文件进行上下分屏显示,类似-oCtrl+w,v: 对当前文件进行左右分屏显示,类似-Ovim +# 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/查找模式/替换内容/gis: 替换命令,可换成删除d等g: global,全局操作,默认的 vim 搜索替换只匹配每行中的第一个被模式匹配的字符,如果有多个则忽略,g 代表全部替换i: 忽略大小写
对于分隔符
/可以自定义,默认的 vim 认为紧跟在编辑命令s后的字符即为分隔符,所以为了避免路径替换时对/做转义可以使用自定义格式,如地址定界s@匹配模式@替换内容@gi&: 用于引用前面 查找模式 所匹配到的所有字符,通常用于插入式替换,如在非注释行前加入#注释符 :1,$s/^[^#].*/#&/gi