一篇文章教会你使用命令行工具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,提高文本编辑效率!

相关推荐
达达尼昂5 分钟前
编码智能体中的模型选择与执行深度
人工智能·后端·程序员
进击切图仔22 分钟前
SAM3 微调标注流水线和 Label Studio
java·服务器·前端
自然 醒30 分钟前
前端如何实现在线预览office常见文件功能?
前端·vue.js
肉肉不吃 肉1 小时前
前端调试跨域如何解决
前端·vue.js
Liora_Yvonne1 小时前
为什么你写了3年前端还是搭不好一个项目
前端·架构
snow@li1 小时前
Java:后端项目会有一个类似前端node_modules的目录吗 / jar包在本地仓库 ~/.m2/repository 中按版本共存
java·开发语言·前端
weedsfly1 小时前
单例模式在前端中的正确打开方式
前端·javascript·面试
PedroQue991 小时前
uni-router新推useUniEventChannel,彻底解决页面通信难题
前端·uni-app
IT_陈寒1 小时前
Vite冷启动快?我遇到了个奇怪的依赖问题
前端·人工智能·后端
2603_955279701 小时前
通过 brew upgrade cmake 升级到最新版本
前端