# 主题三:编辑器 (Vim)

这一节的实操性很强,需要去实践,了解全貌后使用的时候能想到。

Vim 学习步骤。

  • 阅读教程。
  • 坚持使用,开始效率低,后续效率高。
  • 随时查阅。

20 个小时左右可以达到使用之前编辑器的效率,但是 Vim 的高效逐渐显现。不断练习形成肌肉记忆后会非常高效。

多模态编辑器,插入文字和操纵文字处于不同的模式下。避免使用鼠标。

几乎所有的 IDE 都支持 vim 插件,加上他!不断磨合最终掌握。

# 编辑模式

  • 正常模式:在文件中四处移动光标进行修改
  • 插入模式:插入文本
  • 替换模式:替换文本
  • 可视化(一般,行,块)模式:选中文本块
  • 命令模式:用于执行命令

在不同模式下,键盘的字符有不同的含义。

例如正常模式下的 x 表示删除当前光标所在的字符,而在插入模式下 x 表示插入字母 x 。在可视模式下则会删除选择文块。

根据 vim 左上角可以查看当前模式,默认启动的是正常模式。大多数情况下都是处于正常模式和插入模式。

ESC 键可以从任何模式变成正常模式。

i 键可以从正常模式下进入插入模式。

R 进入替换模式。

v 进入可视(一般)模式。

V (大写)进入可视(行)模式。

Ctrl-v 进入可视(块)模式。

# 基本操作

# 插入文本

: 从正常模式进入命令模式。键入 : 后光标会跳至屏幕下方的命令行上。该模式下有很多功能。

  • :q 退出,关闭窗口。
  • :w 保存
  • :e {文件名} 打开要编辑的文件。
  • :ls 打开缓存
  • :help {标题} 打开帮助文档
    • :help :w 打开 :w 命令的帮助文档
    • :help w 打开 w 移动的帮助文档

# 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 改变词
    • 比如 d{移动命令} 再 i x 删除字符 (等同于 dl) s 替换字符 (等同于 xi)
  • 可视化模式 + 操作
    • 选中文字, d 删除 或者 c 改变
  • u 撤销, 重做
  • y 复制 / "yank" (其他一些命令比如 d 也会复制)
  • p 粘贴
  • 更多值得学习的: 比如 ~ 改变字符的大小写

# 计数

数字 + 名词/动词 。执行若干次操作

  • 3w 向前移动三个词
  • 5j 向下移动5行
  • 7dw 删除7个词

# 修饰语

  • ci( 改变当前括号内的内容
  • ci[ 改变当前方括号内的内容
  • da' 删除一个单引号字符窗, 包括周围的单引号