Linux Vim 编辑器完全指南

小飞兽 Linux 180 次阅读 2026-06-19

概述

Vim 是 Linux 系统中功能最强大的文本编辑器之一,几乎存在于所有 Linux 发行版中。虽然它的学习曲线较为陡峭,但一旦掌握,就能实现极高的编辑效率。Vim 基于模式化设计——普通模式(Normal)、插入模式(Insert)、可视模式(Visual)各司其职,配合丰富的快捷键和命令组合,可以完成从快速导航、批量编辑到宏录制等复杂任务。

基础语法

Vim 的核心是模式切换。默认进入普通模式,在普通模式下按键是命令而非输入文字;按 i 进入插入模式开始编辑;按 Esc 返回普通模式;按 : 进入命令模式执行保存、退出等操作。理解这三种模式的分工是掌握 Vim 的关键。

    • i / a:在当前光标前/后进入插入模式。
    • x / dd / yy:删除当前字符 / 删除当前行 / 复制当前行。
    • p / P:在光标后/前粘贴已复制内容。
    • :/pattern:在文件中搜索关键词。
    • :wq / :q!:保存并退出 / 强制退出不保存。

    Vim 还支持多窗口编辑(:sp 水平分割,:vs 垂直分割)、标签页(:tabnew)、以及强大的插件扩展系统,可以将 Vim 打造成完整的 IDE。

    完整代码示例+注释

    # === 基本操作 ===
    vim file.txt           # 打开文件(不存在则新建)
    

    --- 普通模式快捷键 ---

    移动光标

    h j k l # 左下上右(也可使用方向键) w / b # 按单词前进/后退 0 / $ # 跳到行首/行尾 gg / G # 跳到文件首行/末行 Ctrl+d / Ctrl+u # 下/上翻半页 :set number # 显示行号 :15 # 跳到第 15 行

    编辑操作

    i # 在光标前插入 a # 在光标后追加 o / O # 在下方/上方插入新行 x # 删除光标处字符 dd # 删除当前行(并保存到剪贴板) dw # 删除一个单词 d$ # 删除到行尾 yy # 复制当前行 p / P # 在光标后/前粘贴 u / Ctrl+r # 撤销 / 重做

    可视模式(选中区域操作)

    v # 进入字符可视模式 V # 进入行可视模式 Ctrl+v # 进入块可视模式(矩形选择) > # 将选中区域整体右缩进 < # 左缩进 y # 复制选中内容 d # 删除选中内容

    --- 搜索与替换 ---

    /keyword # 向下搜索 keyword ?keyword # 向上搜索 n / N # 跳到下一个/上一个匹配 :%s/old/new/g # 全局替换(每行所有匹配) :%s/old/new/gc # 全局替换(逐个确认) :#,#s/old/new/g # 在指定行范围替换

    --- 命令模式(按 : 进入)===

    :w # 保存(write) :q # 退出(quit) :wq / :x # 保存并退出 :q! # 强制退出不保存 :e filename # 打开另一个文件 :r filename # 在光标处插入文件内容 :!ls # 执行外部命令(如查看文件列表) :sp filename # 水平分割窗口打开文件 :vs filename # 垂直分割窗口打开文件 Ctrl+w w # 在窗口间切换 :bn / :bp # 切换到下一个/上一个缓冲区

    --- 高级技巧 ---

    宏录制与回放

    qa # 开始录制宏到寄存器 a ...(执行一系列操作)... q # 停止录制 @a # 回放寄存器 a 中的宏 @@ # 重复上次宏 10@a # 执行宏 10 次

    多文件编辑

    :args *.txt # 将所有 txt 文件加入参数列表 :next / :prev # 切换上一个/下一个文件 :argdo %s/old/new/g | w # 对参数列表中所有文件执行替换并保存

    文本对象操作

    ci" # 修改引号内的内容(change inside ") di" # 删除引号内的内容(delete inside ") yi) # 复制括号内的内容(yank inside ) vat # 选中整个 XML/HTML 标签(visual around tag)

    --- 配置 ~/.vimrc ---

    syntax on # 启用语法高亮 set relativenumber # 显示相对行号(移动操作更方便) set cursorline # 高亮当前行 set wildmenu # 命令模式 Tab 自动补全 set wrap # 自动换行 set ignorecase # 搜索忽略大小写 set hlsearch # 高亮搜索结果 set incsearch # 实时显示搜索匹配 filetype plugin indent on # 启用文件类型检测和缩进规则

    运行效果

    在 Vim 中打开文件后,按 i 进入插入模式即可正常编辑文字。按 Esc 返回普通模式后,h、j、k、l 或方向键可以在文字间移动。按 / 进入搜索模式后输入关键词,文件中的匹配处会高亮显示,按 n 跳转到下一个匹配项。执行 :%s/old/new/g 会一次性将文件中所有 old 替换为 new,无需逐个手动修改。

    使用宏录制功能可以自动化重复操作。例如需要给每一行的行首加一个 # 注释符号:先按 gg 跳到开头,然后 qa 开始录制,接着按 I 进入行首插入,输入 # 后按 Esc 退回普通模式,再按 j 跳到下一行后按 q 停止录制,最后按 @a 执行一次宏,或按 100@a 批量执行多次。

    常见问题

    Q1:不小心在普通模式下按了大写 I 或 A,结果进入了奇怪的状态
    这是 Vim 的正常行为。大写 I 表示在行首插入(Insert at beginning of line),大写 A 表示在行尾追加(Append after cursor)。按 Esc 返回普通模式即可恢复。不要反复按 i,虽然 i 也能进入插入模式,但插入位置不同(I 在行首,i 在当前光标前)。

    Q2:文件修改后忘记加 sudo 权限保存不了怎么办
    Vim 1.x 版本开始支持 :w !sudo tee % 的方式——通过外部 sudo 命令重写文件。具体操作是执行 :w !sudo tee % > /dev/null,然后按 L 重新加载文件。或者在打开文件前确认自己有写权限。

    Q3:如何快速删除大量内容
    普通模式下按 d 加动作可以删除:dG 删除从当前行到文件末尾的所有内容,dgg 删除从文件开头到当前行的所有内容,d$ 删除从光标到行尾的内容。在可视模式下选中区域后按 d 直接删除整个选择块。

    Q4:Vim 能不能像 VSCode 一样有侧边文件树
    可以通过安装插件实现。NERDTree 是最常用的文件树插件,配合 vim-plug 等插件管理器安装后,用 :NERDTreeToggle 打开/关闭文件浏览侧边栏。Vim 8 及以上版本内置了 :Explore 命令实现基本的文件浏览功能。

    延伸阅读

    • vimtutor:命令行输入 vimtutor 即可进入官方教程,30 分钟即可入门基础操作。
    • 《Practical Vim》by Drew Neil:经典 Vim 书籍,深入讲解编辑器的核心概念和实用技巧。
  • Vim Awesome:https://vimawesome.com — 全球最大的 Vim 插件目录,可按类别浏览和安装插件。