vi 入门教程:五分钟接管你的终端编辑器

vi 入门教程:五分钟接管你的终端编辑器

1. 背景与痛点(Why)

简单的说,vi 是一个文本编辑器。

你可能会问,现在有了 VS Code、Sublime Text 甚至 JetBrains 全家桶,为什么还要去学一个诞生于 1976 年、界面简陋、不支持鼠标的古董编辑器?

理由主要有两点:

  1. 无处不在的通用性:当你通过 SSH 登录到远程 Linux 服务器(比如阿里云、AWS),通常没有图形界面。此刻,vi 是你唯一能找到、且系统默认必带的编辑器。它是服务器领域的“通用语言”。
  2. 极致的效率:vi 的设计哲学是“手不离键盘”。一旦你掌握了它的逻辑,编辑速度会远超频繁在鼠标和键盘间切换的操作方式。

初学者觉得它难,是因为它违反了现代软件的直觉:打开软件居然不能直接打字?

这是因为 vi 引入了“模式”的概念。理解了模式,就理解了 vi。今天我们不谈高深的技巧,只谈如何让你存活下来。

:现在主流系统中的 vi 命令,通常实际上运行的是 Vim(Vi IMproved)。Vim 是 vi 的增强版,完全兼容 vi。本文以下内容均基于 Vim 环境,但通用逻辑适用于所有 vi 变种。

2. 快速上手(Quick Start)

MacOS 和几乎所有的 Linux 发行版都预装了 Vim。你不需要安装,直接在终端使用即可。

但是,原生的 Vim 界面非常简陋(没有行号、没有语法高亮)。为了让你在 5 分钟内获得现代化的体验,我们需要简单的配置一下。

2.1 环境配置(MacOS/Linux 通用)

请打开你的终端(Terminal),执行以下命令来创建配置文件 .vimrc

# 1. 打开(或创建)vim 配置文件
vim ~/.vimrc

此时你可能还不会编辑,没关系,请严格按以下步骤操作(这是你第一次使用 vi):

  1. 按一下键盘上的 i 键(进入插入模式,屏幕左下角会出现 -- INSERT --)。
  2. 复制并粘贴下面的配置代码。
  3. 按一下 Esc 键(退出插入模式)。
  4. 输入 :wq 并回车(保存并退出)。

推荐配置代码(.vimrc):

" 开启语法高亮,看代码更清晰
syntax on

" 显示行号,方便定位
set number

" 在状态栏显示光标当前位置(行、列)
set ruler

" 搜索时忽略大小写(除非包含大写字母)
set ignorecase
set smartcase

" 启用鼠标支持(允许你用鼠标点击定位光标,对新手友好)
set mouse=a

" 缩进设置:Tab键宽度为4个空格
set tabstop=4
set shiftwidth=4
set expandtab

2.2 行业标准辅助工具

如果你想深入使用 Vim,vim-plug 是目前行业标准的插件管理器。它相当于 Node.js 的 npm,或者 Python 的 pip。

虽然入门阶段不强制安装,但了解它对未来很有帮助。

# MacOS/Linux 安装 vim-plug (可选)
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

3. 核心命令/操作速查(Cheatsheet)

为了降低认知负担,我把命令拆分为“生存必备”“效率进阶”两张表。

初学者只需要死记硬背第一张表即可存活;当你觉得手速跟不上脑速时,再来查阅第二张表。

表 1:基础生存指令(存活必看)

这部分命令覆盖了 80% 的日常使用场景。

功能描述 命令/代码 关键参数说明 备注
模式切换
进入插入模式 i insert 在光标开始输入
进入插入模式 a append 在光标开始输入
回到普通模式 Esc - 迷路时狂按它就对了
基础移动 (尽量少用方向键)
左 下 上 右 h j k l - 对应手指在键盘自然放置的位置
编辑操作
删除当前行 dd delete 其实是剪切,可配合 p 粘贴
复制当前行 yy yank 复制整行
粘贴 p paste 粘贴在光标之后
撤销 u undo 后悔药,这也是必须用 vi 的理由之一
保存与退出 需在普通模式下输入 : 进入
保存 :w write 也就是 Save
退出 :q quit 如果文件未保存,会提示错误
强制退出 :q! - 不保存直接退出(慎用)
保存并退出 :wq - 最常用的结束动作
搜索
向下搜索 /关键词 - 输入后回车。按 n 找下一个,N 找上一个

表 2:进阶移动指令(效率倍增)

当你熟悉了上面的操作,下面的指令能让你在文本间“瞬间移动”。

功能描述 命令/代码 关键参数说明 备注
单词跳转 比按 l 键快得多
下一个单词 w word 跳到下一个单词开头
上一个单词 b back 跳到上一个单词开头
行内跳转 修改配置时的神器
行首 0 (数字零) 绝对行首
行首(非空) ^ - 跳到这一行第一个文字(忽略空格)
行尾 $ - 跳到这一行最后一个字符
长距离跳转 大文件浏览必备
跳到文件首 gg - 快速回顶端
跳到文件尾 G - 快速到底部
指定行跳转 :n n为数字 例如 :10 回车,跳到第10行
向下翻页 Ctrl + f forward 相当于 PageDown
向上翻页 Ctrl + b backward 相当于 PageUp

4. 实战场景

假设你需要修改服务器上的一个 Nginx 配置文件 nginx.conf,将端口号从 80 改为 8080

操作步骤演示:

  1. 打开文件
    在终端输入 vim nginx.conf,回车。
    (此时进入普通模式)

  2. 搜索定位
    输入 /80 并回车。光标会跳到 80 所在的位置。
    (如果不是你想要的那行,按 n 继续查找)

  3. 开始修改
    光标移动到 80 的后面,按 a 进入插入模式。
    输入 80
    (此时文本变成了 8080)

  4. 保存退出
    Esc 回到普通模式。
    输入 :wq 并回车。

结果:你已经成功在没有鼠标、没有图形界面的情况下完成了配置修改。

5. 参考资料(References)

学习 vi 是一个肌肉记忆的过程,不需要死记硬背,多用几次就熟了。以下是权威且高质量的学习资源:

  1. Vim 官方文档:最权威的参考手册。
    • 在终端输入 :help 即可查看。
  2. Vim Adventures(强烈推荐):
    • https://vim-adventures.com/
    • 一个网页游戏,通过玩游戏的方式让你学会 h, j, k, l 移动和基本操作,非常有趣。
  3. OpenVim 交互式教程
  4. Vim Awesome:
posted @ 2026-01-17 18:26  thxis0  阅读(0)  评论(0)    收藏  举报