vim/vi 是 Linux 系统核心的文本编辑器,vim 是 vi 的增强版,支持语法高亮、撤销重做等丰富功能,且几乎所有 Linux 发行版均预装,是 Linux 操作的必备工具。vim 的核心是模式化编辑,不同模式下按键功能完全不同,掌握模式切换和核心操作,就能高效完成文本编辑。

一、vim/vi 核心三种模式

命令模式(Normal)

这是打开 vim 后的默认模式,主要用于移动光标、执行复制 / 删除 / 粘贴 / 撤销 / 重做等基础编辑操作,所有模式下按 Esc 键均可返回命令模式

插入模式(Insert)

专门用于输入、编辑文本内容,需要从命令模式通过指定按键切换进入,进入后可直接输入文字。

末行模式(Command)

主要用于执行保存、退出、查找替换、设置编辑器参数等指令,从命令模式按:///?键可进入,操作后需按回车生效。

二、基础操作

1. 打开 / 关闭文件

打开文件,文件不存在则新建 vim filename.txt # 打开文件并精准定位(调试代码/修改配置常用) vim +10 filename.txt # 直接定位到第10行

vim +/error filename.txt # 直接定位到第一个包含error的行

# 退出vim(均在末行模式下执行,按回车生效)

:q # 未修改文件内容时,正常退出

:q! # 强制退出,放弃所有未保存的修改

:wq # 保存修改并退出(等价于 :x,更简洁)

:w # 仅保存修改,不退出编辑器

:w new.txt # 将文件另存为new.txt,原文件不变

2. 命令模式:光标移动(高效编辑的关键,无需按回车)

基础移动(手不离开核心键盘区,比方向键更高效):h(左)、j(下)、k(上)、l(右)快速跳转:

  • 0 跳转到当前行首,$ 跳转到当前行尾
  • gg 跳转到文件首行,G 跳转到文件末行
  • 数字 + G 跳转到指定行,如5G跳转到第 5 行
  • Ctrl+d 向下翻半屏,Ctrl+u 向上翻半屏
  • w 跳转到下一个单词开头,b 跳转到上一个单词开头

3. 命令模式:核心编辑操作(无需按回车,复制 / 删除 / 粘贴 / 撤销)

  • 删除(剪切):dd 删除当前行;5dd 删除从当前行开始的 5 行;x 删除光标所在字符;dw 删除光标所在单词
  • 复制:yy 复制当前行;5yy 复制从当前行开始的 5 行
  • 粘贴:p 将复制 / 剪切的内容粘贴到光标下一行;P 粘贴到光标上一行
  • 撤销 / 重做:u 撤销上一步操作;Ctrl+r 重做被撤销的操作

4. 命令模式:切换到插入模式的 6 种方式(光标位置不同,按需选择)

  • i:在光标前方插入文本
  • a:在光标后方插入文本
  • o:在当前行下方新建一行,光标定位到新行并插入
  • I:直接跳转到当前行行首,并进入插入模式
  • A:直接跳转到当前行行尾,并进入插入模式
  • O:在当前行上方新建一行,光标定位到新行并插入

5. 末行模式:高频实用指令(按回车生效)

查找与替换
  • 快速查找:命令模式下按/,输入查找关键词,按n跳转到下一个匹配项,按N跳转到上一个匹配项
  • 全局替换::s/old/new/g 仅替换当前行的所有 old 为 new;:1,10s/old/new/g 替换 1-10 行的所有 old 为 new;:%s/old/new/g 替换全文的所有 old 为 new(% 表示全文,g 表示全局匹配)
行号显示与关闭
  • :set nu 临时显示行号,关闭文件后失效
  • :set nonu 关闭行号显示
  • 永久显示行号:编辑~/.vimrc文件,添加set nu后保存退出,后续打开 vim 将自动显示行号
多文件分屏编辑
  • :sp filename.txt 水平分屏打开另一个文件
  • :vsp filename.txt 垂直分屏打开另一个文件
  • 分屏切换:Ctrl+w 配合方向键,在不同分屏间切换光标

三、进阶实用技巧(提升编辑效率)

1. 批量注释 / 取消注释

均在末行模式执行,按回车生效,可替换注释符适配不同语言(#////* 等)

  • 批量注释::1,10s/^/#/g 给 1-10 行的行首添加 #注释符(^ 表示行首)
  • 取消注释::1,10s/^#//g 删除 1-10 行行首的 #注释符

2. 快速缩进

命令模式下操作,无需按回车,适合编写代码 / 配置文件时调整格式

  • >> 让当前行向右缩进(相当于按 Tab)
  • << 让当前行向左缩进(相当于按 Backspace)
  • 数字 +>>/<< 批量缩进,如5>> 让当前行开始的 5 行一起向右缩进

3. 保存只读文件(普通用户打开 root 权限文件的解决方案)

若以普通用户身份打开 root 权限的文件(如/etc/profile),修改后直接:w会提示保存失败,可在末行模式执行:

:w !sudo tee %

执行后输入系统密码,即可强制保存修改。

四、核心总结

  1. vim 的核心是模式切换,Esc 是返回命令模式的通用键,新手需先熟记模式切换方式;
  2. 命令模式是 vim 的核心,dd/yy/p/u(删 / 复制 / 粘贴 / 撤销)和gg/G/0/$(光标跳转)是高频必记操作;
  3. 末行模式的:wq/:q!(退出)、:%s/old/new/g(全局替换)、:set nu(显示行号)是新手必备指令;
  4. 新手可通过 Linux 内置的vimtutor命令,进入交互式教程,快速巩固基础操作。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐