技术知识文章集合TECHNICAL ARCHIVE · 807 DOCUMENTS

显示模式

登录
ARCHIVE DOCUMENTBE

vim 简单使用教程:四步进阶

所属分类
Backend
文件格式
Markdown
原始路径
Backend/vim 简单使用教程:四步进阶
本文目录5 个章节
  1. 第一级:存活
  2. 第二级:感觉良好
  3. 第三级:更好、更强、更快
  4. 第四级:VIM 超能力
  5. 结语

vim 简单使用教程:四步进阶

Category(分类): Backend Status: 已读

原文:vim简单使用教程(博客园),内容译自《Learn Vim Progressively》,含陈皓(coolshell)注。 本文为整理版本,保留四级进阶结构与全部命令。

vim 的学习曲线相当大,如果一上来就看到一大堆命令分类,一定会失去兴趣。这篇教程的思路是:先幸存,再一点一点学习戏法。

学习 vim 的四个步骤:

  1. 存活
  2. 感觉良好
  3. 觉得更好、更强、更快
  4. 使用 VIM 的超能力

开始前的警告:

  • 学习 vim 在开始时是痛苦的,需要时间,需要不断练习(就像学乐器一样);
  • 不要期望 3 天内比别的编辑器更有效率——事实上你需要 2 周的苦练,而不是 3 天。

约定:Ctrl-λ 写作 <C-λ>;以 : 开始的命令需回车,如 :q 即 :q<enter>。

第一级:存活

  1. 安装 vim,启动;
  2. 什么也别干!先阅读——vim 启动后在 Normal 模式,按 i 进入 Insert 模式即可输入文本(左下角显示 --insert--),按 ESC 回到 Normal 模式。

让幸存的 5 个命令(练成下意识状态):

  • i → Insert 模式,按 ESC 回到 Normal 模式
  • x → 删除当前光标所在的一个字符
  • :wq → 存盘 + 退出(:w 存盘、:q 退出)
  • dd → 删除当前行(并把删除的行存到剪贴板)
  • p → 粘贴剪贴板

推荐:

  • hjkl → 强烈推荐用其移动光标(j 就像下箭头),光标键也行
  • :help <command> → 显示相关命令的帮助

关键概念:一般编辑器里 Ctrl 是功能键,按下后 C 就不再是 C;而在 vim 的 Normal 模式下,所有的键就是功能键。

第二级:感觉良好

(所有命令都在 Normal 模式使用;不确定在什么模式时狂按几次 ESC)

  1. 各种插入模式
    • a → 在光标后插入
    • o → 在当前行后插入一个新行
    • O → 在当前行前插入一个新行
    • cw → 替换从光标所在位置到一个单词结尾的字符
  2. 简单的移动光标
    • 0 → 到行头
    • ^ → 到本行第一个不是 blank 字符的位置
    • $ → 到本行行尾
    • g_ → 到本行最后一个不是 blank 字符的位置
    • /pattern → 搜索字符串(多个匹配按 n 到下一个)
  3. 拷贝/粘贴
    • P → 粘贴(p 在当前位置之后,P 在之前)
    • yy → 拷贝当前行,相当于 ddP
  4. Undo/Redo
    • u → undo
    • <C-r> → redo
  5. 打开/保存/退出/切换文件
    • :e <path/to/file> → 打开文件
    • :w → 存盘
    • :saveas <path/to/file> → 另存为
    • :x、ZZ 或 :wq → 保存并退出(:x 仅在需要时保存)
    • :q! → 退出不保存;:qa! → 强行退出所有文件
    • :bn / :bp → 切换下一个/上一个编辑的文件

掌握到这里,你几乎可以干其它编辑器能干的所有事了。

第三级:更好、更强、更快

更好(重复)

  • . →(小数点)重复上一次命令
  • N<command> → 重复某个命令 N 次

示例:

  • 2dd → 删除 2 行
  • 3p → 粘贴文本 3 次
  • 100idesu [ESC] → 写下 100 个 "desu "(不是 100 个 desu 哦)
  • 3. → 重复 3 次 "desu"(不是 300,vim 多聪明)

更强(光标移动)

  1. NG → 到第 N 行(也可用 :N,如 :137)
  2. gg → 到第一行
  3. G → 到最后一行
  4. 按单词移动:
    • w → 到下一个单词的开头;e → 到下一个单词的结尾
    • 小写 w/e:单词由字母、数字、下划线组成(适合程序变量)
    • 大写 W/E:单词由 blank 字符分隔(适合程序语句)

最强光标移动(对程序员相当强大):

  • % → 匹配括号移动,包括 (、{、[(先把光标移到括号上)
  • * / # → 匹配光标所在单词,移动到下一个 / 上一个匹配

更快(命令连动)

很多命令可按 <start position><command><end position> 组合:

  • 0y$ → 0 先到行头,y 开始拷贝,$ 拷贝到本行最后一个字符
  • ye → 从当前位置拷贝到本单词最后一个字符
  • y2/foo → 拷贝 2 个 "foo" 之间的字符串

可被连动的命令不止 y:d(删除)、v(可视化选择)、gU(变大写)、gu(变小写)等。

第四级:VIM 超能力

当前行上移动

  • fa → 到下一个为 a 的字符处;3fa → 当前行查找第三个出现的 a
  • t, → 到逗号前的第一个字符
  • F / T → 与 f / t 一样,但方向相反
  • dt" → 删除所有内容直到遇到双引号 "

区域选择 <action>a<object> / <action>i<object>

  • action:d(删除)、y(拷贝)、v(可视模式选择)等
  • object:w 一个单词、W 空格分隔的单词、s 一个句子、p 一个段落;或特别字符 "、'、)、}、]

对字符串 (map (+) ("foo")),光标在第一个 o 上:

  • vi" → 选择 foo
  • va" → 选择 "foo"
  • vi) → 选择 "foo"
  • va) → 选择 ("foo")
  • v2i) → 选择 map (+) ("foo")
  • v2a) → 选择 (map (+) ("foo"))

块操作 <C-v>

典型操作 0 <C-v> <C-d> I-- [ESC]:到行头 → 开始块操作 → 向下移动 → 插入 -- → 按 ESC 为每一行生效。

Windows 下的 vim 需用 <C-q> 代替 <C-v>(<C-v> 是粘贴)。

自动提示 <C-n> / <C-p>

Insert 模式下输入一个词的开头,按 <C-p> 或 <C-n> 出现自动补齐。

宏录制 qa 操作序列 q、@a、@@

  • qa → 把操作记录在寄存器 a
  • @a → replay 录制的宏;@@ → replay 最新录制的宏

示例(一行只有 "1" 的文本):

  • qaYp<C-a>q:qa 开始录制,Yp 复制行,<C-a> 增加 1,q 停止录制
  • @a → 在 1 下面写下 2;@@ → 写下 3;100@@ → 创建新的 100 行,数据增加到 103

可视化选择后的操作

  • J → 把所有行连接起来(变一行)
  • < / > → 左右缩进
  • = → 自动缩进

在所有被选择的行后加东西:<C-v> 选中行 → $ 到行最后 → A 输入字符串 → 按 ESC。

分屏

  • :split / :vsplit → 创建水平 / 垂直分屏
  • <C-w><dir> → dir 为 hjkl 或方向键,切换分屏
  • <C-w>_(或 <C-w>|)→ 最大化尺寸
  • <C-w>+ / <C-w>- → 增加 / 减小尺寸

结语

走到这里,你已经是 vim 的 superstar 了。记住开头的警告:别指望 3 天速成,给自己 2 周。

807 DOCUMENTS · 12 COLLECTIONS
ARCHIVE SEARCH807 篇文章