Vi/Vim 文本编辑器使用指南:指尖上的魔法

Vi/Vim 文本编辑器使用指南:指尖上的魔法

作者:书到用时方恨少!

发布日期:2026年4月13日

阅读时长:约18分钟

📌 写在前面

你是否曾面对黑漆漆的终端,看着 vim filename 后进入一个神秘界面,光标无法移动、字符无法输入,只能强行关闭终端窗口?是否曾因为服务器上只有 Vi 而手足无措,改个配置文件比登天还难?

Vim 被誉为"编辑器之神",它的学习曲线陡峭,但一旦掌握,编辑效率将呈指数级上升。它无需鼠标,双手不离开键盘,手指在字母间跳舞,犹如一场指尖上的魔法表演。这篇博客将用最直白的语言,带你走出 Vi/Vim 的迷雾,掌握那些"书到用时方恨少"的必备命令。

别再被 :q! 劝退了,让我们一起驯服这匹编辑器烈马!


1. 🧙 Vi 与 Vim:编辑器之神的前世今生

1.1 Vi 与 Vim 的关系

  • Vi (Visual Interface) 是 Unix 系统的标准文本编辑器,诞生于 1976 年。
  • Vim (Vi IMproved) 是 Vi 的增强版,增加了多级撤销、语法高亮、插件系统等强大功能。

现代 Linux 发行版中,输入 vi 通常会被重定向到 vim。你可以用 vim --version 确认。

1.2 为什么学习 Vim?

  • 无鼠标操作:双手不离键盘,效率飞升。
  • 服务器标配:几乎所有 Linux/Unix 系统都预装 Vi。
  • 高度可定制 :通过 .vimrc 配置成你专属的 IDE。
  • 肌肉记忆:一旦形成,终身受用。

笔者曾用 Vim 在一个下午重构了三千行代码,手指翻飞的感觉,用过就回不去了。


2. 🚪 三大模式:Vim 的灵魂所在

Vim 最让人困惑的就是模式。它不像普通编辑器那样打开就能打字,而是分为三种主要模式。

模式 进入方式 作用 屏幕底部显示
普通模式 Esc 或启动 Vim 浏览、复制、删除、移动 空白或文件名
插入模式 i, a, o 输入文本 -- INSERT --
命令行模式 : 保存、退出、搜索、替换 : 提示符

模式切换图

复制代码
   启动 Vim
      ↓
  [普通模式] ←(Esc)─ [插入模式]
      ↓ :
 [命令行模式]

💡 任何时候不知道自己在什么模式,狂按 Esc 回到普通模式准没错。


3. ✍️ 基础生存命令:至少能改配置文件

3.1 打开与退出

bash 复制代码
vim filename          # 打开文件(不存在则新建)
vim +10 filename      # 打开文件并定位到第10行
vim +/pattern filename # 打开文件并定位到第一个匹配 pattern 的行

退出命令(命令行模式)

命令 作用
:q 退出(未修改时)
:q! 强制退出,不保存修改
:w 保存
:wq:x 保存并退出
ZZ (普通模式)保存并退出(相当于 :wq
ZQ (普通模式)强制退出不保存

🔥 生存口诀i 进入编辑,Esc 退出编辑,:wq 保存离开。

3.2 移动光标(普通模式)

Vim 的核心哲学是让手指保持在基准键位

按键 移动方向 替代键
h 方向键←
j 方向键↓
k 方向键↑
l 方向键→

进阶移动

命令 作用
w 跳到下一个单词开头
b 跳到上一个单词开头
e 跳到单词末尾
0 跳到行首
$ 跳到行尾
gg 跳到文件第一行
G 跳到文件最后一行
:n 跳到第 n 行

🧠 记忆方法h 在最左边,所以是左;l 在最右边,所以是右;j 像一个向下的钩子。

3.3 进入插入模式的多种姿势

命令 作用
i 在光标前插入
I 在行首插入
a 在光标后插入(append)
A 在行尾插入
o 在下一行新起一行插入
O 在上一行新起一行插入
s 删除当前字符并进入插入模式
S 删除当前行并进入插入模式

用得最多的是 i,但 oA 也很顺手。


4. ✂️ 编辑命令:效率从这里起飞

4.1 删除、复制、粘贴

Vim 中删除 = 剪切,被删除的内容会存入寄存器,可用 p 粘贴。

命令 作用 记忆技巧
x 删除光标所在字符 像用橡皮擦
dd 删除(剪切)整行 d elete d
yy 复制整行 y ank y
p 在光标后粘贴 paste
P 在光标前粘贴
dw 删除一个单词 delete word
d$D 删除到行尾
d0 删除到行首
u 撤销 undo
Ctrl + r 重做 redo

组合技示例

text 复制代码
yy   → 复制当前行
p    → 粘贴到下一行
dd   → 剪切当前行
5dd  → 剪切5行
y$   → 复制从光标到行尾的内容

💡 Vim 命令通常是 [数字] + 命令 的形式,如 3dw 删除3个单词。

4.2 可视化模式

v 进入字符可视化模式,移动光标选中文本,然后执行操作。

命令 作用
v 字符选择
V 行选择
Ctrl + v 块选择(列编辑)

块选择实战:注释多行代码

text 复制代码
Ctrl + v   → 进入块选择模式
jjj        → 向下选中多行
I          → 进入插入模式,输入 #
Esc        → 所有选中行行首都会添加 #

这个功能被称为"列编辑",简直是批量操作的神器!

4.3 查找与替换

查找(普通模式):

命令 作用
/pattern 向下搜索 pattern
?pattern 向上搜索 pattern
n 跳转到下一个匹配
N 跳转到上一个匹配
* 向下搜索光标所在的单词
# 向上搜索光标所在的单词

替换(命令行模式):

vim 复制代码
:s/old/new/         " 替换当前行第一个匹配
:s/old/new/g        " 替换当前行所有匹配
:%s/old/new/g       " 替换整个文件所有匹配
:%s/old/new/gc      " 替换整个文件,每次询问确认
:5,10s/old/new/g    " 替换第5到第10行所有匹配

⚠️ 替换命令中的 / 可以用其他字符代替,如 :%s#old#new#g,当路径中含有 / 时特别有用。


5. 🧰 多文件与分屏操作

5.1 打开多个文件

bash 复制代码
vim file1.txt file2.txt   # 同时打开多个文件

在 Vim 内切换文件:

命令 作用
:n 切换到下一个文件
:N:prev 切换到上一个文件
:ls 列出所有缓冲区
:b 2 切换到编号为2的缓冲区
:bd 关闭当前缓冲区

5.2 窗口分割

命令 作用
:sp [file] 水平分割窗口,可选打开文件
:vsp [file] 垂直分割窗口
Ctrl + w, w 在窗口间切换
Ctrl + w, h/j/k/l 切换到左/下/上/右窗口
Ctrl + w, + / - 增加/减少窗口高度
Ctrl + w, > / < 增加/减少窗口宽度
:q 关闭当前窗口

🖥️ 分屏是查看多个文件的神器,配合 Ctrl + w 系列快捷键,比 IDE 的标签页还顺手。

5.3 标签页

vim 复制代码
:tabnew [file]      " 新建标签页
:tabn               " 下一个标签页
:tabp               " 上一个标签页
gt                  " 普通模式下切换到下一个标签页
gT                  " 上一个标签页

6. ⚙️ 定制你的专属 Vim:.vimrc 配置

Vim 的强大在于可定制性,通过 ~/.vimrc 文件个性化设置。

6.1 基础配置示例

vim 复制代码
" 语法高亮
syntax on

" 显示行号
set number

" 显示当前光标位置
set ruler

" 高亮搜索结果
set hlsearch

" 增量搜索(边输入边跳转)
set incsearch

" 自动缩进
set autoindent
set smartindent

" Tab 相关
set tabstop=4
set shiftwidth=4
set expandtab        " 将 Tab 转换为空格

" 显示匹配的括号
set showmatch

" 启用鼠标支持(在某些终端下可用)
set mouse=a

" 编码设置
set encoding=utf-8

6.2 按键映射

vim 复制代码
" 将 <leader> 键设为空格键
let mapleader = " "

" 保存文件的快捷键
nnoremap <leader>w :w<CR>

" 退出插入模式时禁用方向键(强迫使用 hjkl)
inoremap <Up> <Nop>
inoremap <Down> <Nop>
inoremap <Left> <Nop>
inoremap <Right> <Nop>

💡 nnoremap 表示在普通模式下进行非递归映射。


7. 🚀 高级技巧与实用场景

7.1 宏录制:重复操作的自动化

q + 寄存器名(如 a)开始录制,再次按 q 结束录制。用 @a 执行宏。

场景:将多行文本统一添加引号和逗号。

text 复制代码
qa        → 开始录制到寄存器 a
I"        → 行首插入 "
A",       → 行尾插入 ",
j         → 移动到下一行
q         → 结束录制
10@a      → 对接下来10行执行该宏

7.2 与 Shell 交互

命令 作用
:! command 执行 Shell 命令,按回车返回 Vim
:r !command 将命令输出插入到光标位置
:sh 临时进入 Shell,exit 返回 Vim

示例

vim 复制代码
:r !ls -l        " 将当前目录列表插入到文件中
:!python %       " 运行当前 Python 文件

7.3 拼写检查

vim 复制代码
:set spell       " 开启拼写检查
]s               " 跳转到下一个拼写错误
[s               " 跳转到上一个拼写错误
z=               " 查看拼写建议
zg               " 将单词添加到个人词典

7.4 折叠代码

命令 作用
zf + 移动 创建折叠(如 zf5j 折叠下面5行)
zo 打开折叠
zc 关闭折叠
za 切换折叠状态
zR 打开所有折叠
zM 关闭所有折叠

8. 📊 常用命令速查表

操作 普通模式 命令行模式
进入插入 i / a / o -
保存 ZZ :w
退出 ZQ :q / :q!
保存并退出 - :wq / :x
撤销 u -
重做 Ctrl + r -
复制行 yy -
剪切行 dd -
粘贴 p / P -
删除字符 x -
查找 /text -
替换 - :%s/old/new/g
跳转到行首 0 -
跳转到行尾 $ -
跳转到文件头 gg -
跳转到文件尾 G -
显示行号 - :set number
执行 Shell - :!cmd
分屏 - :sp / :vsp

9. 🎯 总结

Vim 的学习就像学一门乐器,前期枯燥乏味,后期行云流水。不要试图一次性记住所有命令,先从生存命令开始

  1. vim file 打开文件
  2. i 进入插入模式
  3. 编辑内容
  4. Esc 回到普通模式
  5. 输入 :wq 保存退出

掌握了这五步,你就能在服务器上修改配置文件了。接下来逐步练习移动、复制粘贴、查找替换,假以时日,你也会爱上这种双手不离开键盘的高效感觉。

几个建议

  • 禁用方向键 :强迫自己用 hjkl,两周形成肌肉记忆。
  • 每日一 Vim:每天学一个小命令,积少成多。
  • 玩游戏 :终端输入 vimtutor 进入官方教程,或者玩在线游戏 Vim Adventures
  • 配置 .vimrc:让编辑器更符合你的习惯。

最后,送上一句笔者喜欢的话:

"编辑器有两种:Emacs 和 Vi。一个是操作系统,一个是编辑器之神。"

愿你在 Vim 的世界里,游刃有余,指随心动!✨


本文采用 CC BY-NC-SA 4.0 协议,转载请注明出处。

相关推荐
念恒123062 小时前
Linux基础开发工具(Vim篇)
linux·c语言
有味道的男人2 小时前
抖音关键词搜索,视频详情api
linux·数据库·音视频
念恒123062 小时前
Linux基础开发工具(yum篇)
linux·c语言
RisunJan2 小时前
Linux命令-nfsstat(显示 NFS(Network File System)客户端和服务器统计信息)
linux·运维·服务器
何中应3 小时前
服务器主机时钟未同步告警解决
linux·运维·服务器
磊 子3 小时前
编译链接过程讲解
linux·运维·服务器
哼?~3 小时前
Socket--UDP 构建简单聊天室
linux·网络·udp
SPC的存折3 小时前
分布式(加一键部署脚本)LNMP-Redis-Discuz5.0部署指南-小白详细版
linux·运维·服务器·数据库·redis·分布式·缓存
Cx330❀3 小时前
线程进阶实战:资源划分与线程控制核心指南
java·大数据·linux·运维·服务器·开发语言·搜索引擎