Mit:the missing semester 3
课程目标
学习Vim的设计原理以及基础知识,了解Vim的一部分高级功能
Vim编辑模式
Vim设计以大多数时间花在阅读、浏览和少量编辑为基础,因此具有多种操作模式:
- 正常模式:在文件中四处移动光标进行修改 Esc
- 插入模式:插入文本 I
- 替换模式:替换文本 R
- 可视化模式:选中文本块 V行 Ctrl-V块
- 命令模式:用于执行命令 :
不同模式下,键盘敲击的含义也不同,比如x在插入模式下会插入字母x,但在正常模式下会删除当前光标所在的字母,在可视化模式下会删除选中的块
默认设置下,Vim会在左下角显示当前的模式,可以按下Esc键从任何其他模式返回正常模式
基本操作
插入文本
在正常模式按i进入插入模式,按下Esc返回正常模式
缓存、标签页、窗口
Vim会维护打开的文件,称为“缓存”。一个Vim会话包含一系列标签页,每个标签页包含一系列窗口,每个窗口显示一个缓存,与网页浏览器不一样的是,缓存与窗口不是一一对应的,窗口只是视角,一个缓存可以在多个窗口打开,甚至在同一标签页的多个窗口打开。这个功能非常好用,比如在查看同一文件的不同部分的时候。
Vim默认打开一个标签页,这个标签也包含一个窗口
命令行
在正常模式键入 : 进入命令行模式,这个模式有很多功能,包括打开、保存、关闭文件以及退出Vim(新手噩梦)
:q
退出:w
保存写:wq
保存并退出:e {文件名}
打开要编辑的文件:ls
显示打开的缓存:help {指令}
打开帮助文档
Vim的接口
Vim最重要的设计思想是Vim的界面本身是一个程序语言。
移动
多数情况会在正常模式下,使用移动命令在缓存中导航
- 基本移动:hjkl(左,下,上,右)
- 词: w(下一个词),b(词初),e(词尾)
- 行: 0(行初),^(第一个非空格字符),$(行尾)
- 屏幕:H(屏幕首行),M(屏幕中间),L(屏幕底部)
- 翻页:Ctrl-u(上翻),Ctrl-d(下翻)
- 文件:gg(文件头部),G(文件尾部)
- 行数:
:{行数}
{行数}G
- 杂项:%(找到配对,比如括号或者/**/之类的注释对)
- 查找:
f{字符}
,t{字符}
,F{字符}
,T{字符}
查找/到 向前/向后 在本行的字符。 ,/;用于导航匹配 - 搜索:
/{正则表达式}
,n/N用于导航匹配
编辑
抛弃鼠标,所有需要用鼠标做的事,现在都可以用键盘,采用编辑命令和移动命令的组合来完成。
i 进入插入模式
O/o 在上方/下方插入行
d{移动命令}
删除{移动命令}例如
dw
删除词,d$
删除到行尾,d0
删除到行头c{移动命令}
改变{移动命令}例如,
cw
改变词x
删除字符(等同于dl
)s
替换字符(等同于xi
)可视化模式+操作 选中文字,
d
删除,c
改变u
撤销C-r
重做y
复制p
粘贴
重复
可以用一个技术结合指令,这会执行指定的指令若干次,例如:
3w
向前移动三个词5j
向下移动5行7dw
删除7个词
自定义Vim
Vim有一个位于~/.vimrc
的文本配置文件。
可以更换为课程推荐的设置,修复了一些Vim默认设置的奇怪行为,下载地址,保存为~/.vimrc
Vim扩展
Vim有许多的扩展插件,从Vim8.0开始即内置了一个插件管理器,只需要创建一个~/.vim/pack/vendor/start/
的文件夹,将插件放到此处即可使用。
以下为课程推荐的几个插件:
- ctrlp.vim 模糊文件查找
- ack.vim 代码搜索
- nerdtree 文件浏览器
- vim-easymotion 魔术操作
Vim进阶
不想学,略。