Mit:the missing semester 3

课程目标

学习Vim的设计原理以及基础知识,了解Vim的一部分高级功能

Vim编辑模式

Vim设计以大多数时间花在阅读、浏览和少量编辑为基础,因此具有多种操作模式:

  1. 正常模式:在文件中四处移动光标进行修改 Esc
  2. 插入模式:插入文本 I
  3. 替换模式:替换文本 R
  4. 可视化模式:选中文本块 VCtrl-V
  5. 命令模式:用于执行命令 :

不同模式下,键盘敲击的含义也不同,比如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/的文件夹,将插件放到此处即可使用。

以下为课程推荐的几个插件:

Vim进阶

不想学,略。