Contents
  1. 1. 命令行模式
  2. 2. 基本操作
    1. 2.1. 插入
    2. 2.2. 缓存 标签 窗口
    3. 2.3. 命令行
    4. 2.4. 移动
    5. 2.5. 编辑
    6. 2.6. 计数
    7. 2.7. 修饰语
  3. 3. 进阶
    1. 3.1. 搜索和替换
    2. 3.2. 多窗口
    3. 3.3. 扩展

命令行模式

  • 正常模式
  • 插入模式
  • 替换模式
  • 可视化
  • 命令模式
    可以通过ECS从任何其他模式返回正常模式 v进入可视一般模式,V进入可视行模式 :进入命令行模式 i进入插入模式 R进入替换模式

基本操作

插入

在正常模式, 键入 i 进入插入模式。ecs 回到正常模式

缓存 标签 窗口

vim 会维护一系列打开的文件,称为 “缓存”。 一个 Vim 会话包含一系列标签页,每个标签页包含 一系列窗口 (分隔面板)。每个窗口显示一个缓存。 跟网页浏览器等其他你熟悉的程序不一样的是, 缓存和窗口不是一一对应的关系; 窗口只是视角。 一个缓存可以在 多个 窗口打开,甚至在同一 个标签页内的多个窗口打开。这个功能其实很好用, 比如在查看同一个文件的不同部分的时候。

命令行

  • :q 退出 (关闭窗口)
  • :w 保存 (写)
  • :wq 保存然后退出
  • :e {文件名} 打开要编辑的文件
  • :ls 显示打开的缓存
  • :help {标题}打开帮助文档
  • :help :w 打开 :w 命令的帮助文档
  • :help w 打开 w 移动的帮助文档

移动

  • 基本移动: 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 个词

修饰语

  • 你可以用修饰语改变 “名词” 的意义。修饰语有 i, 表示 “内部” 或者 “在内“, 和 a, 表示 ”周围“。
  • ci( 改变当前括号内的内容
  • ci[ 改变当前方括号内的内容
  • da’ 删除一个单引号字符窗, 包括周围的单引号

进阶

搜索和替换

:s (替换) 命令

  • %s/foo/bar/g ==>在整个文件中将 foo 全局替换成 bar
  • %s/[._]((._))/\1/g ==>将有命名的 Markdown 链接替换成简单 URLs

多窗口

  • 用 :sp / :vsp 来分割窗口
  • 同一个缓存可以在多个窗口中显示

扩展

  • vimtutor 是一个 Vim 安装时自带的教程
  • Vim Adventures 是一个学习使用 Vim 的游戏
Contents
  1. 1. 命令行模式
  2. 2. 基本操作
    1. 2.1. 插入
    2. 2.2. 缓存 标签 窗口
    3. 2.3. 命令行
    4. 2.4. 移动
    5. 2.5. 编辑
    6. 2.6. 计数
    7. 2.7. 修饰语
  3. 3. 进阶
    1. 3.1. 搜索和替换
    2. 3.2. 多窗口
    3. 3.3. 扩展