vim 掏粪工具箱

作者 耿嘉豪 日期 2019-05-19 阅读量
Vim
vim 掏粪工具箱

Insert(插入)模式

插入模式下 vim 可以直接编辑, 和其他编辑器一样

  • 使用 i(insert) 进入编辑模式, 开始输入文字

  • i 表示(insert), a(append), o(open a line below)

  • 使用 Esc 可以返回 normal 模式。使用 :wq 保存退出

Command(命令)模式

Normal 模式下输入 : 之后执行命令, 比如保存退出 :wq

  • 保存: :w, 退出: :q

  • 左右分屏: :vs(vertical split), 上下分屏: :sp(split)

  • 全局替换: :% s/foo/bar/g(s 表示替换, g 表示全局)

  • 设置行号: :set nu

Visual(可视)模式

Visual 模式一般用来块状选择文本

  • Normal 模式下使用 v 进入 visual 选择

  • 使用 V 选择行

  • 使用 ctrl+v 进行方块选择

  • 选择文本后使用 d 可删除, 使用 y 复制, 使用 p 粘贴

插入模式编辑

如何快速纠错

  • ctrl+h 删除光标上一个字符, ctrl+w 删除光标上一个单词, ctrl+u 删除当前行, 这几个快捷键还可用于终端

快速切换 insert 和 normal 模式

  • 使用 ctrl+c 代替 Esc(可能会中断某些插件), 或者 ctrl+[

  • gi 快速跳转到最后一次编辑的地方并进入插入模式

vim 的快速移动

单词间移动

  • h(左), j(下), k(上), l(右)

  • w/W 移到下一个 word/WORD 开头。e/E 移到下一个 word/WORD 尾

  • b/B 回到上一个 word/WORD 开头

  • word 指的是以非空白分割的单词, WORD 是指以空白符分割的单词

行间搜索移动

同一行快速移动的方式其实是搜索一个字符并且移动到该字符

  • 使用 f{char} 可以移动到 char 字符上, t{char} 移动到 char 的前一个字符

  • 如果第一次没搜到, 可以用分号(;)/逗号(,)继续搜该行下一个/上一个

  • 大写的 F 表示反过来搜前面的字符

水平移动

  • 0 移动到行首的第一个字符, ^ 移动到第一个非空白字符

  • $ 移动到行尾, g_ 移动到行尾非空白字符

垂直移动 - 在句子(sentence)和段落(paragraph)间移动

  • 使用括号 () 在句子间移动

  • 使用 {} 在段落之间移动

  • 可以使用 easy-motion 插件移动, 免去记忆命令

页面移动

  • gg/G 移动到文件开头和结尾, 可以使用 ctrl+o 快速返回

  • H/M/L 跳转到屏幕的开头(Head), 中间(Middle)和结尾(Lower)

  • ctrl+u 向上翻页(upword), ctrl+f 向下翻页(forward)。

  • zz 把屏幕置中间

增删改查

删除一个字符或者单词

  • 在 normal 模式下使用 x 快速删除一个字符

  • 使用 d(delete) 配合文本对象快速删除一个单词 daw(d around word)

  • d 和 x 都可以搭配数字来执行多次, 比如 2dd 表示删除 2 行, 4x 表示删除 4 个字符

快速修改

  • 常用有 3 个, r(replace), c(change), s(substitute)

  • normal 模式下使用 r 可以替换一个字符。s 删除并进入插入模式, 可配合数字使用

  • 使用 c 配合文本对象, 可以快速进行修改, 如果想修改一个单词可以使用 caw

  • R: 可以不断地替换后面的字符

  • S: 删除整行并且进入插入模式

查询

  • 使用 / 或者 ? 进行前向或者反向搜索

  • 使用 n/N 跳转到下一个或者上一个匹配

  • 使用 * 或者 # 进行当前单词的前向和后向匹配