Vim (Revisited)¶
约 758 个字 预计阅读时间 3 分钟
重写这篇笔记的时候我已经用了一段时间 vim,笔记可能会过于简略,详细可参考课程网站
基础¶
模式¶
我们写代码事并不一直都是连续的输入,有时是跳转到某个地方,有时是做些小修改替换,有时是阅读代码,或者是连续输入。 为此,vim 使用不同模式来便利各个不同目的的操作模式,使得相同的键在不同模式下意义不同。
vim 中最常用的模式有
默认初始模式,任何模式都可以按
i
进入,进行连续的输入,只用 i 可以无缝退化回原先什么功能都没有的编辑器.输入模式
R
进入,进行连续的替换.替换模式
v
进入,进行选择,V 进入行模式,按行选择, C-v 进入块模式,按任意边长选择长方形.选择模式
:
进入,处理命令行操作(最基本的有 :w 保存 :q 退出 :wq 保存退出 :q!强制退出).命令行模式
结构¶
一个 Vim 进程可以有多个标签页,一个标签页可以有多个窗口,而一个窗口像只眼睛看向一个特定的文件(Buffer)
操作¶
Normal move
- 上下左右:hjkl
- 以单词为界:w (下一个单词), b (单词开头), e (单词结尾)
- 以行为界:0 (行开头), ^ (行首个非空字符), $ (行尾)
- 以屏为界:H (屏幕开头), M (屏幕中间), L (屏幕底部)
- 滚动:Ctrl-u (上), Ctrl-d (下)
- 以文件为界:gg (文件开头), G (文件尾),
G(对应行) - 以左右为界:% (对应的另一半括号或者类似的)
- 行内寻找:f{character}, t{character}, F{cracter}, T{character} 小写往后大写往前
- 搜索:/{regex},?{regex} 往后往前搜索 ,按 n 继续搜下一个,按 N 反向继续
Normal edit
- o / O :在下/上新建一行并进入插入模式
- d{motion} :按照 motion 删除,motion 见 move 部分
- c{motion} :比 d{motion}多一步进入插入模式
- x : 删除当前光标字符
- s
: 以 代替当光标字符 - Visual mode + manipulation : 这些操作也适用于选择模式选中后
- u 撤回,
取消撤回 - y 复制
- p 粘贴
manipulation : 重复 次操作 - i/a : inside/around ,在什么之内/周围操作.例如:di( 在()之内删除;da( 包括()删除
Commandline mode
- :w 保存
- :q 退出
- :wq 保存退出
- :q! 强制退出
- :e
打开文件 - :s/
/ 一行第一个替换 - :s/
/ /g 全行替换 - :s/
/ /gc 全行替换并询问 - :%s/
/ /g 全文件替换 - :
, s/ / /g 从第 行到第 行替换
Advanced Vim¶
- Vim 是高度可定制化的.只要要改变用户目录下的配置文件即可(~/.vimrc).也可参考我非常简单的的配置文件
- Vim 也有许多优质的插件,我几乎没有添加任何插件,而是把 Vim 作为一个插件在 VSCode 上使用