Skip to content

vi/vim

所有的 Unix Like 系统都会内建 vi 文书编辑器, 但是目前主要使用的是 vim.

vim 是一款在 Linux 系统中非常流行的文本编辑器. 它具有强大的功能和灵活的配置选项, 可以用于编辑各种类型的文件.

vim 是从 vi 编辑器发展而来的, 具有 vi 的所有功能, 并且新增了许多扩展功能

vim 具有模式切换 (输入模式命令模式底线命令模式可视化模式)、命令行操作、多窗口编辑等特性, 使得编辑更加高效.

Install

  • 在大多数 Linux 发行版中, vim 已经预装了, 可以直接使用. 如果没有预装, 可以通过包管理器进行安装, 例如:
    • Ubuntu: sudo apt-get install vim
    • CentOS: sudo yum install vim
    • Arch Linux: sudo pacman -S vim
    • macOS: 已内置

基本命令:

  • 基本操作:

    • 打开文件: vim 文件名.
    • 保存文件: 在 命令模式 下按下 :w, 然后按回车键.
    • 保存并退出: 在 命令模式 下按下 :wq, 然后按回车键, 或直接按下 ZZ.
    • 另存为其他文件: 在 命令模式 下按下 :w 文件名, 然后按回车键.
    • 退出 vim: 在 命令模式 下按下 :q, 然后按回车键.
    • 强制退出 vim: 在 命令模式 下按下 :q!, 然后按回车键.
    • 进入 输入模式: 按下 i.
    • 退出 输入模式: 按下 Esc.
  • 光标移动:

    • 上移: 按下 k.
    • 下移: 按下 j.
    • 左移: 按下 h.
    • 右移: 按下 l.
    • 移动到行首: 按下 0.
    • 移动到行尾: 按下 $.
    • 移动到下一个单词的开头: 按下 w.
    • 移动到上一个单词的开头: 按下 b.
    • 移动到单词的结尾: 按下 e.
    • 移动到下一段的开头: 按下 }.
    • 移动到上一段的开头: 按下 {.
    • 跳转到文件的第一行: 按下 gg.
    • 跳转到文件的最后一行: 按下 G.
    • 跳转到文件的第 N 行: 按下 NggNG.
    • 向下翻页: 按下 Ctrl + f.
    • 向上翻页: 按下 Ctrl + b.
    • 跳转到匹配的括号 (如 ()): 按下 %.
  • 复制、粘贴、删除:

    • 复制当前行: 在 命令模式 下按下 yy.
    • 复制 N 行: 在 命令模式 下按下 Nyy.
    • 粘贴到光标之后: 在 命令模式 下按下 p.
    • 粘贴到光标之前: 在 命令模式 下按下 P.
    • 删除当前行: 在 命令模式 下按下 dd.
    • 删除 N 行: 在 命令模式 下按下 Ndd.
    • 删除光标所在位置的字符: 按下 x.
    • 删除光标前一个字符: 按下 X.
    • 删除光标所在位置的单词: 按下 dw.
  • 搜索:

    • 向前搜索: 在 命令模式 下按下 /, 然后输入要搜索的内容, 按下回车键.
    • 向后搜索: 在 命令模式 下按下 ?, 然后输入要搜索的内容, 按下回车键.
    • 搜索下一个匹配项: 在 命令模式 下按下 n.
    • 搜索上一个匹配项: 在 命令模式 下按下 N.
  • 查找与替换:

    • 替换当前行的第一个匹配项: :s/旧内容/新内容, 然后按回车键.
    • 替换当前行的所有匹配项: :s/旧内容/新内容/g, 然后按回车键.
    • 替换全文的所有匹配项: :%s/旧内容/新内容/g, 然后按回车键.
    • 替换全文的所有匹配项并逐个确认: :%s/旧内容/新内容/gc, 然后按回车键.
    • 取消搜索结果的高亮显示: :noh, 然后按回车键.
  • 其他常用操作:

    • 撤销上一次操作: 按下 u.
    • 重做上一次撤销的操作: 按下 Ctrl + r.
    • 重复执行上一次操作: 按下 ..
    • 删除光标所在位置到行尾的内容: 按下 d$.
    • 删除光标所在位置到行首的内容: 按下 d0.
    • 删除整行并进入 输入模式: 按下 cc.
    • 复制当前光标所在位置的单词: 按下 yw.
    • 替换光标所在位置的单个字符: 按下 r, 然后输入要替换的字符.
    • 进入连续替换模式: 按下 R, 之后输入的内容会逐个覆盖原有字符, 按下 Esc 退出.
    • 切换光标所在字符的大小写: 按下 ~.
    • 合并下一行到当前行: 按下 J.
    • 向右缩进当前行: 按下 >>.
    • 向左缩进当前行: 按下 <<.
    • 自动缩进当前行: 按下 ==.
    • 显示行号: :set nu, 然后按回车键.
    • 取消显示行号: :set nonu, 然后按回车键.
    • 在当前行的末尾添加新行并进入 输入模式: 按下 o.
    • 在当前行的上方添加新行并进入 输入模式: 按下 O.
  • 多文件与多窗口:

    • 打开另一个文件: :e 文件名, 然后按回车键.
    • 水平分割窗口: :split, 然后按回车键.
    • 垂直分割窗口: :vsplit, 然后按回车键.
    • 在窗口之间切换: 按下 Ctrl + w, 然后按方向键, 或连续按下两次 Ctrl + w.
    • 关闭当前窗口: :close, 然后按回车键.

模式

  • 输入模式 (Insert Mode):

    • 在输入模式下, 你可以像在普通文本编辑器中一样输入和编辑文本.
    • 进入输入模式的方式:
      • 在命令模式下按下 i 键: 光标会进入到当前位置, 你可以在光标后插入文本.
      • 在命令模式下按下 a 键: 光标会进入到当前位置的下一个位置, 你可以在光标后插入文本.
      • 在命令模式下按下 o 键: 会在当前行的下方插入新行, 并将光标移动到新行的起始位置, 你可以在新行中输入文本.
      • 在命令模式下按下 O 键: 会在当前行的上方插入新行, 并将光标移动到新行的起始位置, 你可以在新行中输入文本.
  • 命令模式 (Normal Mode):

    • 在命令模式下, 你可以执行各种编辑和移动光标的命令.
    • 进入命令模式的方式:
      • 在输入模式 (或底线命令模式) 下按下 Esc 键, 即可返回到命令模式.
    • 在命令模式下, 可以使用各种快捷键和命令来编辑文本、移动光标、复制粘贴等.
  • 底线命令模式 (Command-Line Mode):

    • 在底线命令模式下, 你可以执行一些底线命令, 如保存文件、退出 vim 等.
    • 进入底线命令模式的方式:
      • 在命令模式下按下 : 键: 屏幕底部会出现一个冒号, 表示进入底线命令模式.
    • 在底线命令模式下, 可以输入各种命令来执行不同的操作, 如保存文件 (:w)、退出 vim (:q)、显示行号 (:set nu) 等.
  • 可视化模式 (Visual Mode):

    • 在可视化模式下, 可以选中一段文本, 然后对选中的区域统一进行操作 (复制、删除、缩进等).
    • 进入可视化模式的方式:
      • 在命令模式下按下 v 键: 进入字符可视化模式, 以字符为单位选中.
      • 在命令模式下按下 V 键: 进入行可视化模式, 以整行为单位选中.
      • 在命令模式下按下 Ctrl + v 键: 进入块可视化模式, 可以选中一个矩形区域.
    • 选中文本后, 可以按下 y 复制、d 删除、~ 切换大小写, 或按下 > / < 缩进.

总结:

  • 输入模式用于编辑文本, 光标可以在文本中移动并输入内容.
  • 命令模式用于执行各种编辑和移动光标的命令.
  • 底线命令模式用于执行一些底线命令, 如保存文件、退出 vim 等.
  • 可视化模式用于选中文本区域, 便于对多行文本进行批量操作.