Linux基础-VIM使用方法

Linux基础-VIM使用方法

亓翎_Re-Tikara Lv5

简介

Vim 是从 vi 演化而来的文本编辑器,核心设计基于模式切换组合命令。通过少量按键可以完成复杂文本操作,广泛用于终端开发与系统维护。

理解 Vim 的关键在于掌握其模式体系,而非单独记忆命令。


模式概览

Vim 主要包含三种核心模式,以及一个扩展的取代模式。

模式 进入方式 主要用途 退出方式
普通模式(Normal) 打开文件默认进入,或按 Esc 光标移动、复制删除、搜索跳转 i/a/o 进入输入模式,: 进入命令行模式
输入模式(Insert) i I a A o O 输入文本 Esc 返回普通模式
取代模式(Replace) rR 覆盖替换文本 Esc 返回普通模式
命令行模式(Command-line) 普通模式下输入 : 保存、退出、批量替换、配置 回车执行或 Esc 取消

快速上手流程

打开或新建文件

1
vim 文件名

例如:

1
vim runoob.txt

编辑基本流程

  1. i 进入输入模式开始编辑
  2. Esc 返回普通模式
  3. 输入 :wq 保存并退出
  4. 输入 :q! 放弃修改并退出

普通模式

普通模式是 Vim 的核心操作环境,绝大多数编辑行为都从这里发起。

光标移动

基本移动

命令 作用
h 向左移动一个字符
j 向下移动一行
k 向上移动一行
l 向右移动一个字符

支持数字前缀:

1
30j

表示向下移动 30 行。

跳转与定位

命令 作用
w / b 下一个 / 上一个单词
0 / $ 行首 / 行尾
gg / G 文件首行 / 末行
nG 跳到第 n 行
H / M / L 屏幕顶部 / 中部 / 底部
+ / - 下一行 / 上一行非空字符
Ctrl+f / Ctrl+b 下翻页 / 上翻页
Ctrl+d / Ctrl+u 下翻半页 / 上翻半页

删除操作

删除命令通常以 d 开头,可与移动命令组合。

命令 作用
x / X 删除后一个 / 前一个字符
nx 删除 n 个字符
dd 删除当前行
ndd 删除 n 行
d$ 删除到行尾
d0 删除到行首
dG 删除到文件末尾
d1G 删除到文件开头

删除内容进入剪贴缓冲区,可直接粘贴。


复制与粘贴

命令 作用
yy 复制当前行
nyy 复制 n 行
y$ / y0 复制到行尾 / 行首
yG / y1G 复制到文件末尾 / 开头
p / P 在后方 / 前方粘贴

修改与替换

命令 作用
cw 修改单词
cc 修改整行
J 合并下一行
r 替换单字符
R 连续覆盖替换

撤销与重复

命令 作用
u 撤销
Ctrl+r 重做
. 重复上一次操作

重复命令适合批量编辑,例如连续删除多个相似结构。


搜索与替换

搜索

1
/word

向下搜索字符串。

1
?word

向上搜索字符串。

命令 作用
n 跳到下一个匹配
N 反向跳转匹配

替换

全文替换:

1
:%s/old/new/g

确认式替换:

1
:%s/old/new/gc

指定范围替换:

1
:100,200s/old/new/g

输入模式

输入模式用于直接录入文本。

进入方式

命令 作用
i / I 光标处插入 / 行首插入
a / A 光标后插入 / 行尾插入
o / O 下方 / 上方新建行

输入模式支持常规键盘操作:

  • 字符输入
  • 回车换行
  • 删除键
  • 方向键移动
  • Home / End
  • Page Up / Page Down

Esc 返回普通模式。


取代模式

取代模式用于覆盖已有文本。

命令 作用
r 替换单个字符
R 连续覆盖替换

Esc 结束取代。


命令行模式

在普通模式输入 : 进入命令行模式。

保存与退出

命令 作用
:w 保存文件
:w! 强制保存
:q 退出
:q! 强制退出
:wq 保存并退出
ZZ 保存并退出
ZQ 不保存退出

文件操作

命令 作用
:w 文件名 另存为
:r 文件名 读入文件内容
:n1,n2 w 文件名 导出指定行

环境设置

命令 作用
:set nu 显示行号
:set nonu 取消行号

执行外部命令

1
:!command

示例:

1
:!ls

在 Vim 内查看系统命令输出。


数字前缀机制

Vim 支持数字前缀与命令组合,用于批量操作。

示例:

1
50dd

删除 50 行。

1
20j

向下移动 20 行。


高频操作示例

全文替换:

1
:%s/foo/bar/g

确认式替换:

1
:%s/foo/bar/gc

删除到行尾:

1
d$

复制到文件末尾:

1
yG

可视模式(Visual)

可视模式用于“先选中,再操作”,对块状编辑和批量缩进非常高效。

进入方式

命令 作用
v 字符级可视模式
V 行级可视模式
Ctrl+v 块级可视模式(列编辑)

常用组合:

命令 作用
> / < 缩进 / 反缩进选中内容
d / y 删除 / 复制选中内容
c 删除选中内容并进入输入模式
I 块模式下在多行行首插入
A 块模式下在多行行尾追加

文本对象与操作符组合

Vim 的高效率来自“操作符 + 文本对象/移动命令”。

常见操作符

操作符 作用
d 删除
c 修改(删除后进入输入模式)
y 复制

常见文本对象

文本对象 作用
iw / aw 单词内部 / 包含空格的单词
i" / a" 双引号内部 / 包含引号
i) / a) 圆括号内部 / 包含括号
ip / ap 段落内部 / 包含空行边界

示例:

1
2
3
4
diw      " 删除当前单词
ci" " 修改双引号内文本
da) " 删除一对括号及内容
yip " 复制当前段落

寄存器与系统剪贴板

Vim 的复制删除内容默认进入寄存器(register),并不总是系统剪贴板。

常见寄存器

寄存器 说明
" 默认寄存器
0 最近一次复制(y)内容
a-z 命名寄存器
+ 系统剪贴板(需 Vim 编译启用 clipboard)

示例:

1
2
3
4
"ayy     " 复制当前行到寄存器 a
"ap " 粘贴寄存器 a 内容
"+y " 复制到系统剪贴板
"+p " 从系统剪贴板粘贴

可用以下命令检查是否支持系统剪贴板:

1
:version

若输出中包含 +clipboard,即可使用 "+ 寄存器。


宏录制与回放

宏适合处理重复格式化任务。

基础流程

  1. qa:开始录制到寄存器 a
  2. 执行一组编辑动作
  3. q:结束录制
  4. @a:执行一次宏
  5. 10@a:执行 10 次

多窗口、分屏与标签页

分屏

命令 作用
:split / :sp 水平分屏
:vsplit / :vs 垂直分屏
Ctrl+w w 在窗口间切换
Ctrl+w h/j/k/l 按方向切换窗口
Ctrl+w q 关闭当前窗口
Ctrl+w = 平衡窗口尺寸

标签页

命令 作用
:tabnew 新建标签页
:tabnext / gt 下一个标签页
:tabprevious / gT 上一个标签页
:tabclose 关闭当前标签页

多文件编辑(参数列表)

同时打开多个文件:

1
vim file1.txt file2.txt file3.txt

切换文件:

命令 作用
:args 查看参数列表
:next / :n 下一个文件
:prev / :N 上一个文件
:first 第一个文件
:last 最后一个文件

实用配置(~/.vimrc

以下配置适合作为基础起点:

1
2
3
4
5
6
7
8
9
10
11
12
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set hlsearch
set incsearch
set ignorecase
set smartcase
set cursorline
syntax on

说明:

  • number:显示绝对行号
  • relativenumber:显示相对行号,配合 j/k 高效跳转
  • expandtab:将 Tab 转为空格
  • ignorecase + smartcase:默认忽略大小写,但含大写时精确匹配

常见问题

  1. 退出时提示 swap 文件:通常是异常退出留下的 .swp,确认无误后可删除。
  2. 粘贴代码缩进错乱:先执行 :set paste,粘贴后再 :set nopaste
  3. 方向键表现异常:检查终端类型与 TERM 配置,优先使用 hjkl
  4. 中文显示乱码:确认终端与文件编码为 UTF-8,可执行 :set encoding? 查看。

建议记忆顺序

如果刚开始用 Vim,按这个顺序练习会更顺手:

  1. i / Esc / :wq(进出编辑与保存退出)
  2. hjklw/b0/$gg/G(移动)
  3. ddyypu.(编辑与撤销)
  4. /n:%s/.../.../g(搜索替换)
  5. vdiwci"、宏 qa ... q(提效操作)
  • 标题: Linux基础-VIM使用方法
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-10 23:40:18
  • 更新于 : 2026-02-11 19:38:21
  • 链接: https://re-tikara.fun/Blog/posts/d51e69ff/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。