一篇文章教会你使用命令行工具vi

前言

在 Linux 和 macOS 终端环境下,vi(Vim 的前身)是最常见的文本编辑器之一。尽管初学者可能会被它的界面吓到,但熟练掌握后,vi 可以让你高效地编辑文本,成为开发者和运维工程师的利器。

本篇文章将从 vi 的基本操作讲起,带你逐步掌握这个强大的命令行工具。

1. 如何打开和退出 vi

打开 vi

在终端中输入以下命令即可打开 vi

复制代码
vi 文件名

如果 文件名 存在,则打开该文件;如果不存在,则创建一个新文件。

退出 vi

vi 最让新手困惑的地方之一是如何退出。可以使用以下命令:

  • :q ------ 退出(如果有未保存的修改,则会报错)。
  • :q! ------ 强制退出,不保存修改。
  • :wqZZ ------ 保存并退出。

2. vi 的模式

vi 有三种主要模式:

模式名称 说明
普通模式 默认模式,用于移动光标、删除文本等
插入模式 允许输入文本,类似于普通编辑器
命令模式 允许执行保存、搜索、替换等命令

模式切换

  • 普通模式 → 插入模式:按 i(在光标前插入)、a(在光标后插入)、o(新建一行并插入)。
  • 插入模式 → 普通模式:按 Esc 键。
  • 普通模式 → 命令模式:按 : 键。

3. vi 的基本操作

光标移动

按键 作用
h 左移
l 右移
j 下移
k 上移
0 移动到行首
$ 移动到行尾
gg 移动到文件开头
G 移动到文件结尾

📌 提示 :你也可以使用 Arrow(方向键)进行移动。

删除和撤销

命令 作用
x 删除光标所在字符
dd 删除当前行
D 删除光标后所有内容
u 撤销上一步操作
Ctrl + r 重新执行撤销的操作

复制、剪切和粘贴

命令 作用
yy 复制当前行("yank")
p 在光标后粘贴内容
dd 剪切当前行
d$ 剪切光标到行尾的内容
y$ 复制光标到行尾的内容

快捷键速查表

快捷键 功能
Ctrl + f 向下翻页
Ctrl + b 向上翻页
Ctrl + d 向下移动半页
Ctrl + u 向上移动半页
J 将当前行与下一行合并
. 重复上一次操作

4. 搜索与替换

搜索

  • /关键词 ------ 向下搜索 关键词
  • ?关键词 ------ 向上搜索 关键词
  • n ------ 跳到下一个匹配项。
  • N ------ 跳到上一个匹配项。

替换

  • :%s/旧字符串/新字符串/g ------ 替换整个文件中的所有匹配项。
  • :s/旧字符串/新字符串/g ------ 替换当前行中的所有匹配项。

5. 进阶技巧

多窗口编辑

  • :split 文件名 ------ 水平分屏打开文件。
  • :vsplit 文件名 ------ 垂直分屏打开文件。
  • Ctrl + w 再按 h/j/k/l 进行窗口切换。

宏录制(批量操作)

  1. 进入普通模式,按 q 再按一个字母(例如 a)开始录制。
  2. 执行一系列操作。
  3. q 停止录制。
  4. @a 运行宏。
  5. @@ 运行上次执行的宏。

6. 练习与进阶学习

可以使用以下方法提高 vi 操作技能:

  • 练习 vimtutor

    shell 复制代码
    vimtutor

    这是一个内置的 vi 教程,非常适合新手。

  • 在线练习网站:vim-adventures.com

  • 多使用 vi 进行日常文本编辑。

结语

虽然 vi 乍看之下有些复杂,但掌握基本操作后,你会发现它的高效之处。希望这篇文章能帮助你快速入门 vi,提高文本编辑效率!

相关推荐
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60617 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅8 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅8 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅8 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment8 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅9 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊9 小时前
jwt介绍
前端
爱敲代码的小鱼9 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax