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