Linux Vim 基本操作:从入门到熟练的全方位指南

Vim(Vi Improved)是一款功能强大、历史悠久的文本编辑器,被誉为 Linux 系统下的“编辑器之神”。它继承自 Unix 时代的 Vi 编辑器,凭借高效的键盘操作、丰富的功能和高度可定制性,成为开发者、系统管理员和 Linux 爱好者的必备工具。与图形化编辑器不同,Vim 完全基于键盘操作,上手初期可能有一定门槛,但一旦掌握,其编辑效率将远超传统编辑器。

本文将从 Vim 的安装、核心模式、基本操作到高级技巧,系统讲解 Vim 的使用方法,帮助读者快速入门并逐步熟练掌握这一强大工具。

目录#

  1. Vim 的安装与启动
  2. Vim 的核心模式
  3. 基本导航操作
  4. 文本编辑基础
  5. 保存与退出
  6. 搜索与替换
  7. Vim 配置入门
  8. 常见操作实践
  9. 最佳实践与技巧
  10. 参考资料

1. Vim 的安装与启动#

1.1 安装 Vim#

Vim 在大多数 Linux 发行版中已预装,若未安装,可通过包管理器快速安装:

  • Debian/Ubuntu 系列

    sudo apt update && sudo apt install vim -y
  • RHEL/CentOS 系列

    sudo yum install vim -y  # CentOS 7 及以下
    # 或
    sudo dnf install vim -y  # CentOS 8+/RHEL 8+
  • Arch Linux

    sudo pacman -S vim

安装完成后,可通过 vim --version 验证版本:

vim --version | head -n 1
# 输出示例:VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jun 01 2023 00:00:00)

1.2 启动 Vim#

启动 Vim 的基本命令为 vim [文件名]

  • 若文件不存在,Vim 会创建新文件;若文件存在,则打开该文件。
    示例:打开(或创建)test.txt

    vim test.txt
  • 直接输入 vim 启动 Vim,默认打开一个空白缓冲区,可通过 :e 文件名 后续打开文件。

首次启动 Vim 时,会显示欢迎界面,按 Esc 键可关闭欢迎信息,进入正常模式(详见下文)。

2. Vim 的核心模式#

Vim 的核心特点是多模式编辑,不同模式下按键行为不同。初学者需重点掌握以下 4 种核心模式:

2.1 正常模式(Normal Mode)#

  • 作用:默认模式,用于导航、执行命令(如复制、删除)。
  • 进入方式:启动 Vim 后默认进入;其他模式下按 Esc 键返回。
  • 提示:底部状态栏无特殊标识(或显示文件名)。

2.2 插入模式(Insert Mode)#

  • 作用:输入文本内容,类似普通编辑器的“编辑状态”。
  • 进入方式:在正常模式下按 i(insert,在光标前插入)、a(append,在光标后插入)、o(open,在当前行下方新建一行并插入)等键。
  • 提示:底部状态栏显示 -- INSERT --

2.3 可视模式(Visual Mode)#

  • 作用:选中文本块,用于批量操作(如复制、删除、替换)。
  • 进入方式:正常模式下按 v(字符级选择)、V(行级选择)、Ctrl+v(块级选择)。
  • 提示:底部状态栏显示 -- VISUAL --(或 -- VISUAL LINE --/-- VISUAL BLOCK --)。

2.4 命令行模式(Command-line Mode)#

  • 作用:执行复杂命令(如保存、退出、搜索替换)。
  • 进入方式:正常模式下按 :(冒号)、/(搜索)、?(反向搜索)等键。
  • 提示:底部状态栏显示输入的命令(如 :wq)。

关键原则:操作 Vim 时,先确保处于正确的模式(尤其注意用 Esc 返回正常模式)。

3. 基本导航操作#

正常模式下,通过键盘完成文本导航,无需依赖鼠标,效率极高。

3.1 字符级导航#

按键功能描述
h向左移动光标
j向下移动光标
k向上移动光标
l向右移动光标

示例:按 j 键 3 次,光标向下移动 3 行;按 5l 快速向右移动 5 个字符(数字前缀表示重复次数)。

3.2 单词级导航#

按键功能描述
w移动到下一个单词的开头
e移动到当前单词的结尾
b移动到上一个单词的开头
W/E/B忽略标点符号,按空格分隔的“长单词”导航

示例:光标在 hello, worldh 处,按 e 移动到 o,按 w 移动到 w

3.3 行级导航#

按键功能描述
0移动到行首(数字 0)
^移动到行首第一个非空白字符
$移动到行尾
gg移动到文件第一行
G移动到文件最后一行
:n移动到第 n 行(如 :10 跳转到第 10 行)

示例:按 gg 回到文件开头,按 G 跳转到文件末尾,按 :5 直接定位到第 5 行。

3.4 屏幕滚动#

按键功能描述
Ctrl+f向下滚动一屏(forward)
Ctrl+b向上滚动一屏(backward)
Ctrl+d向下滚动半屏(down)
Ctrl+u向上滚动半屏(up)
zz将当前行滚动到屏幕中央

4. 文本编辑基础#

4.1 插入文本#

正常模式下,通过以下命令进入插入模式并输入文本:

命令功能描述
i在光标前插入
I在行首第一个非空白字符前插入(等价于 ^i
a在光标后插入
A在行尾插入(等价于 $a
o在当前行下方新建一行并插入
O在当前行上方新建一行并插入

示例

  • 光标在 helloe 处,按 a 输入 x,结果为 hexllo
  • O 在当前行上方插入新行,直接进入插入模式。

4.2 删除文本#

正常模式下,删除操作通过 d(delete)命令实现,格式为 [数字]d[范围](数字表示重复次数,范围表示删除区域):

命令功能描述
x删除光标下的字符(等价于 dl
dw删除从光标到下一个单词开头的内容
de删除从光标到当前单词结尾的内容
d$删除从光标到行尾的内容
dd删除整行(常用!)
3dd删除当前行及下方共 3 行
dG删除从当前行到文件末尾的所有内容

示例

  • dd 删除当前行,按 u(undo)可撤销删除。
  • d2w 删除光标后的 2 个单词。

4.3 复制(Yank)与粘贴(Paste)#

  • 复制(Yank):用 y(yank)命令,格式与 d 类似:

    命令功能描述
    yy复制当前行(常用!)
    yw复制从光标到下一个单词开头的内容
    y$复制从光标到行尾的内容
    y3j复制当前行及下方 3 行
  • 粘贴(Paste):用 pP

    命令功能描述
    p在光标后粘贴
    P在光标前粘贴

示例

  • yy 复制当前行,移动到目标位置,按 p 粘贴。
  • 在可视模式下选中多行(V + 上下键),按 y 复制,再按 p 粘贴。

4.4 撤销与重做#

命令功能描述
u撤销上一步操作(undo)
Ctrl+r重做被撤销的操作(redo)

示例:误删一行后,按 u 恢复;恢复后想再次删除,按 Ctrl+r

5. 保存与退出#

命令行模式(按 : 进入)下执行保存和退出操作:

命令功能描述
:w保存当前文件(write)
:q退出 Vim(quit),若文件未保存会提示错误
:wq保存并退出(常用!)
:q!强制退出,不保存修改(感叹号 ! 表示强制)
:w filename将当前内容另存为 filename

示例

  • 编辑完成后,按 Esc 回到正常模式,输入 :wq 保存退出。
  • 若修改后不想保存,输入 :q! 强制退出。

6. 搜索与替换#

6.1 搜索文本#

正常模式下按 /? 进入搜索:

  • 正向搜索/pattern(如 /error 搜索 “error”),按 n 跳转到下一个结果,N 跳转到上一个结果。
  • 反向搜索?pattern(如 ?warning 从当前位置向上搜索 “warning”),按 n 跳转到上一个结果,N 跳转到下一个结果。
  • 取消搜索高亮:noh(no highlight)。

示例:搜索文件中所有 “vim”,输入 /vim,按 n 逐个查看。

6.2 替换文本#

命令行模式下使用 :s(substitute)命令替换,基本格式:

:[范围]s/旧文本/新文本/[选项]
范围描述
仅当前行
%整个文件(常用!)
n,m从第 n 行到第 m 行(如 5,10s/old/new
选项描述
g替换行内所有匹配(global)
c替换前确认(confirm)
i忽略大小写(ignore case)

常用示例

  • 替换当前行第一个 “old” 为 “new”::s/old/new
  • 替换当前行所有 “old” 为 “new”::s/old/new/g
  • 替换整个文件所有 “old” 为 “new”::%s/old/new/g
  • 替换时逐行确认::%s/old/new/gc(按 y 确认替换,n 跳过,a 替换所有剩余,q 退出)。

7. Vim 配置入门#

Vim 的行为可通过配置文件 .vimrc 自定义,位于用户主目录(~/.vimrc)。若文件不存在,可手动创建:

vim ~/.vimrc

以下是常用基础配置(添加到 .vimrc 中):

" 显示行号
set number
" 显示相对行号(当前行绝对行号,其他行相对行号)
set relativenumber
" 自动缩进
set autoindent
" 智能缩进(根据语法自动调整缩进)
set smartindent
" Tab 键宽度为 4 空格
set tabstop=4
" 自动将 Tab 转换为空格
set expandtab
" 代码缩进时的空格数
set shiftwidth=4
" 搜索时忽略大小写
set ignorecase
" 搜索时若输入大写字母,则区分大小写
set smartcase
" 实时显示搜索结果
set incsearch
" 语法高亮
syntax on
" 显示光标所在列
set cursorcolumn

保存 .vimrc 后,重启 Vim 即可生效。也可在 Vim 中执行 :source ~/.vimrc 立即应用配置。

8. 常见操作实践#

8.1 快速删除多行#

  • 方法 1:正常模式下,将光标移至起始行,按 ndd(n 为行数),如 5dd 删除 5 行。
  • 方法 2:可视模式下,按 V 进入行选择,上下键选中文本块,按 d 删除。

8.2 批量注释代码#

  1. Ctrl+v 进入块可视模式(Visual Block)。
  2. 上下键选择需要注释的行。
  3. I(大写 I)进入插入模式,输入注释符号(如 #//)。
  4. Esc,所有选中行的行首会添加注释。

8.3 分屏编辑#

  • 水平分屏::split filename(缩写 :sp filename),按 Ctrl+w + j/k 在分屏间切换。
  • 垂直分屏::vsplit filename(缩写 :vsp filename),按 Ctrl+w + h/l 切换。
  • 关闭分屏::qCtrl+w + c

9. 最佳实践与技巧#

  1. 坚持使用键盘导航:初期刻意练习 h/j/k/l 代替方向键,形成肌肉记忆。
  2. 善用重复次数:如 3j(向下 3 行)、5dw(删除 5 个单词),减少按键次数。
  3. 定期备份配置:将 .vimrc 同步到 Git 仓库,便于跨设备使用。
  4. 逐步学习高级功能:熟悉基础后,探索宏录制(q 命令)、插件(如 NERDTree 目录树)等。
  5. 利用内置帮助:在 Vim 中输入 :help 查看完整文档,或 :help 命令(如 :help dd)查询具体命令。

10. 参考资料#

通过本文的学习,相信你已掌握 Vim 的基本操作。Vim 的强大之处在于其灵活性和可扩展性,持续练习是熟练的关键。祝你在 Vim 的世界中越用越高效!