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

相关推荐
前端码虫4 分钟前
JS分支和循环
开发语言·前端·javascript
GISer_Jing6 分钟前
MonitorSDK_性能监控(从Web Vital性能指标、PerformanceObserver API和具体代码实现)
开发语言·前端·javascript
余厌厌厌7 分钟前
墨香阁小说阅读前端项目
前端
fanged8 分钟前
Angularjs-Hello
前端·javascript·angular.js
lichuangcsdn9 分钟前
springboot集成websocket给前端推送消息
前端·websocket·网络协议
程序员阿龙9 分钟前
基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统
前端·数据可视化·野生动物保护·濒危物种·态环境监测·web系统开发
岸边的风13 分钟前
JavaScript篇:JS事件冒泡:别让点击事件‘传染’!
开发语言·前端·javascript
前端大卫2 小时前
Vue3 里的 h 函数的运用场景!
前端·vue.js
ladymorgana2 小时前
【OSS】 前端如何直接上传到OSS 上返回https链接,如果做到OSS图片资源加密访问
前端·网络协议·https
鬼多不菜2 小时前
一篇学习CSS的笔记
java·前端·css