计算机工具基础(五)——Vim
Vim
本系列博客为MIT《Missing in CS Class(2020)》课程笔记
Vim是终端环境中常用的纯文本编辑器。
模式
Vim有如下5种模式:
- 常规模式(Normal):进入Vim后的默认模式,用于阅读文件。以Esc自其他模式中退至此模式
- 插入模式(Insert):用于插入文本,以i进入
- 替换模式(Replace):用于替换文本,以r进入
- 可视模式(Visual):用于选中文本,与在其他编辑器中按Shift+方向键选中文本等效。分为普通可视模式(以字符为单位,以v进入)、行可视模式(以行为单位,以V进入)、块可视模式(纵向选择,以Ctrl-v进入)。
- 命令模式(Command):用于执行某些命令,以:进入
会话、缓存、标签、窗口
- 会话(Session):保存了vim的完整工作状态,包括缓存、窗口、标签、选项等。
- 缓存(Buffer):缓存是加载进内存中的文件,每个文件对应一个缓存。关闭窗口不会清除缓存。
- 标签(Tab):标签负责组织窗口,每个标签包含独立的窗口布局。类似于桌面操作系统的一个桌面。Vim默认打开一个标签页,仅包含一个窗口。
- 窗口(Window):标签页内的视图,显示缓存内容。一个标签可分割出多个窗口。
命令
以下命令适用于命令模式,不要与常规模式中的操作混淆。
-  q:退出所在窗口(但不退出缓存)qa:退出所有窗口(但不退出缓存)
 q!:强制退出所在窗口(在缓存未写入文件的情形下)
-  w:保存缓存内容至文件
-  wq:保存缓存内容并退出窗口
-  e <file_name>:在此窗口覆盖的打开文件<file_name>。
-  help <command>:查阅<command>的帮助手册。注意若为命令,需为:<command>。
-  set <options>:用于设置选项
-  sp <file_name>:水平分割。将<file_name>加载进缓存,在同一标签页内,在此窗口的下方分离出新窗口,显示内容为<file_name>。若不指定<file_name>,则分离当前窗口所显示的缓存。vsp <file_name>:垂直分割。将<file_name>加载进缓存,在同一标签页内,在此窗口的右方分离出新窗口,显示内容为<file_name>。若不指定<file_name>,则分离当前窗口所显示的缓存。
-  tabnew <file_name>:将<file_name>加载进缓存,新建一个tab,显示内容为<file_name>。
-  tabn:切换到下一个(next)标签
 tabp:切换到上一个(previous)标签
快捷键
常规模式
- G:跳到文尾- gg:跳到文首
- H:左- J:下- K:上- L:右
- w:word,跳至下个词首- b:begin,跳至上个词首- e:end,跳至下个词尾
- 0:移动至行首- $:移动至行尾- ^:移动至本行首个非空字符
- Ctrl-f:向上翻一页- Ctrl-b:向下翻一页
- Ctrl-u:向上翻半页- Ctrl-d:向下翻半页
- /<pattern>:向后匹配模式串- <pattern>- ?<pattern>:向前匹配字符串- <pattern>
- n:当前匹配方向的下个匹配- N:当前匹配方向的上个匹配
- u:撤销- Ctrl-r:重做
- y:复制(默认复制当前光标字符,可通过进入可视模式选中内容)- p:粘贴
命令模式
- Ctrl-w + 方向键:切换窗口
格式化代码
常规模式下:gg=G
