news 2026/4/23 1:53:48

3、Vi编辑器使用指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3、Vi编辑器使用指南

Vi编辑器使用指南

1. 非ASCII文件处理

当你调用编辑的文件不是常规文本文件时,会出现提示。此时,你需要输入:q!退出,然后使用file命令检查你要编辑的文件。

如果你因为之前提到的问题输入:q,会出现 “No write since last change (:quit! overrides)” 的提示,这意味着你在未意识到的情况下修改了文件。你需要输入:q!离开vi,本次会话所做的更改将不会保存到文件中。

2. Vi的操作模式

vi有两种模式:命令模式和插入模式。你一开始处于命令模式,在该模式下,每个按键都是一个命令;在插入模式下,你输入的所有内容都会成为文件中的文本。

有时候,你可能会意外进入或离开插入模式,这可能会导致你的文件出现意外的更改。你可以按ESC键强制vi进入命令模式。如果你已经处于命令模式,按下ESC键时vi会发出蜂鸣声,因此命令模式有时也被称为 “蜂鸣模式”。进入命令模式后,你可以修复意外更改,然后继续编辑文本。

3. 文件的保存与退出

你可以随时停止对文件的编辑,保存更改并返回Unix提示符。vi中退出并保存更改的命令是ZZ(注意是大写)。

假设你创建了一个名为practice的文件来练习vi命令,并输入了六行文本。要保存文件,首先按ESC键确保你处于命令模式,然后输入ZZ。操作及结果如下表所示:
| 按键操作 | 结果 |
| ---- | ---- |
| ZZ | “practice” [New file] 6 lines, 320 characters
执行写入和保存命令,文件作为常规Unix文件保存 |
| ls | ch01 ch02 practice
列出目录中的文件,显示你创建的新文件practice|

你也可以使用ex命令保存更改:
- 输入:w保存文件但不退出vi
- 如果你没有进行任何编辑,输入:q退出;
- 输入:wq保存更改并退出(:wq等同于ZZ)。

4. 不保存更改退出

在刚开始学习vi时,尤其是喜欢大胆尝试的人,有两个ex命令很有用:
-:e! ENTER:返回文件的最后保存版本,你可以重新开始编辑。
-:q! ENTER:退出正在编辑的文件并返回Unix提示符。使用这两个命令,你将丢失自上次保存文件以来在缓冲区中所做的所有更改。vi通常不允许你丢弃更改,在:e:q命令后加上感叹号可以覆盖此限制。

5. 文件保存问题及解决方法

以下是一些常见的文件保存问题及解决办法:
-文件已存在:当你尝试写入文件时,可能会收到 “File exists” 或 “File is read only” 的提示。你可以输入:w! file覆盖现有文件,或者输入:w newfile将编辑后的版本保存到新文件中。
-没有写入权限:如果你收到 “Permission denied” 的消息,可以使用:w newfile将缓冲区内容写入新文件。如果你对目录有写入权限,可以使用mv命令用你的副本替换原始版本;如果没有权限,可以输入:w pathname/file将缓冲区内容写入你有权限的目录(如你的主目录或/tmp)。
-文件系统已满:当你收到文件系统已满的消息时,可以输入:!rm junkfile删除一个(大的)不需要的文件以释放空间(在ex命令前加感叹号可以使用Unix命令);或者输入:!df查看其他文件系统是否有空间,如果有,选择该文件系统上的目录,使用:w pathname写入文件。
-临时文件磁盘已满:系统进入打开模式并提示文件系统已满时,vi的临时文件所在磁盘已满。你可以输入:!ls /tmp查看是否有可以删除的文件以获取磁盘空间。如果有,可以输入:sh创建一个临时Unix shell,在其中删除文件或执行其他Unix命令;输入CTRL - Dexit终止shell并返回vi。在现代Unix系统中,使用作业控制shell时,你可以输入CTRL - Z暂停vi并返回Unix提示符,输入fg返回vi。释放空间后,使用:w!写入文件。
-达到磁盘配额:当你收到磁盘配额已达到的消息时,尝试使用ex命令:pre:preserve的缩写)强制系统保存缓冲区。如果不行,寻找一些文件删除。使用:sh(或CTRL - Z)离开vi删除文件,完成后使用CTRL - D(或fg)返回vi,然后使用:w!写入文件。

6. 练习

学习vi的唯一方法是练习。现在你已经有足够的知识来创建新文件并返回Unix提示符。操作步骤如下:
1. 打开当前目录中的practice文件:vi practice
2. 插入文本:i any text you like
3. 返回命令模式:ESC
4. 保存更改并退出viZZ

7. 简单编辑入门

简单编辑主要涉及移动光标、添加和更改文本、删除、移动和复制文本以及更多进入插入模式的方法。

vi有命令模式和插入模式。进入文件后,你处于命令模式,编辑器等待你输入命令。命令可以让你在文件中移动、执行编辑操作或进入插入模式添加新文本,也可以用于退出文件(保存或忽略更改)返回Unix提示符。

插入模式下,键盘就像打字机;命令模式下,每个键都有新的含义或触发特定指令。最常见的进入插入模式的方法是按i,按ESC停止插入文本并返回命令模式。

8. 光标移动

在编辑会话中,你可能只有少量时间在插入模式下添加新文本,大部分时间是对现有文本进行编辑。在命令模式下,你可以将光标定位到文件的任何位置。

以下是一些光标移动命令:
-单个字符移动
-h:向左移动一个空格
-j:向下移动一行
-k:向上移动一行
-l:向右移动一个空格
你也可以使用光标箭头键、+-键、ENTERBACKSPACE键,但它们不太方便。一开始使用字母键移动光标可能会觉得别扭,但很快你就会发现这是vi的优点之一,你可以不用将手指从键盘中心移开就能移动。
-数字参数:你可以在移动命令前加上数字。例如,4l会将光标向右移动四个空格,就像连续按四次l键一样。
-行内移动
-0(数字零):移动到行首。
-$:移动到行尾。
-按文本块移动
-w:将光标向前移动一个单词,符号和标点也视为单词。
-W:按单词移动,不将符号和标点视为单词。
-b:向后移动一个单词。
-B:向后移动一个单词,不考虑标点。
-G:移动到特定行,G到文件末尾,1G到文件顶部,42G到第42行。

9. 简单编辑操作

在文件中输入文本时,很难保证完美,你可能需要更改、删除、移动或复制文本。在vi中,你可以使用一些基本按键执行这些操作:
-插入新文本:你已经了解了使用i插入文本。在编辑现有文本时,也可以使用插入命令添加缺失的字符、单词和句子。
-其他编辑操作
-a:追加文本。
-c:更改文本。
-d:删除文本。
- 移动文本:先按d删除,再按p放置。
- 复制文本:先按y复制,再按p放置。

下面是一个简单的流程图,展示了vi编辑的基本流程:

graph TD; A[打开文件] --> B[命令模式]; B --> C{操作选择}; C -->|插入文本| D[按 i 进入插入模式]; D --> E[输入文本]; E --> F[按 ESC 返回命令模式]; C -->|移动光标| G[使用移动命令]; C -->|保存退出| H[按 ZZ 或 :wq]; C -->|不保存退出| I[按 :q!]; C -->|编辑操作| J[使用 a, c, d 等命令];

通过以上内容,你可以初步掌握vi编辑器的基本使用方法,包括文件的打开、编辑、保存和退出,以及光标移动和简单的文本编辑操作。不断练习这些操作,你将逐渐熟练掌握vi的使用。

10. 编辑操作示例

为了更好地理解vi的编辑操作,下面给出一些具体示例。

假设我们有以下文本内容:

This is a sample text for testing vi editor. You can perform various operations here.

插入新文本
如果我们想在 “This” 后面插入 “new ”,可以将光标移动到 “This” 的 “s” 后面,按下i进入插入模式,输入 “new ”,然后按ESC返回命令模式。操作步骤如下:
1. 使用hjkl或其他移动命令将光标移动到 “This” 的 “s” 后面。
2. 按下i进入插入模式。
3. 输入 “new ”。
4. 按ESC返回命令模式。

此时文本变为:

This new is a sample text for testing vi editor. You can perform various operations here.

追加文本
若要在第一行末尾追加 “ and more”,将光标移动到第一行末尾,按下a进入追加模式,输入 “ and more”,再按ESC返回命令模式。操作步骤如下:
1. 使用$命令将光标移动到第一行末尾。
2. 按下a进入追加模式。
3. 输入 “ and more”。
4. 按ESC返回命令模式。

文本变为:

This new is a sample text for testing vi editor and more. You can perform various operations here.

更改文本
如果要将 “sample” 改为 “test”,可以将光标移动到 “sample” 的 “s” 上,按下cw命令。cw表示更改一个单词,输入 “test” 后按ESC。操作步骤如下:
1. 使用移动命令将光标移动到 “sample” 的 “s” 上。
2. 按下cw
3. 输入 “test”。
4. 按ESC返回命令模式。

文本变为:

This new is a test text for testing vi editor and more. You can perform various operations here.

删除文本
若要删除第二行,将光标移动到第二行任意位置,按下dd命令。操作步骤如下:
1. 使用移动命令将光标移动到第二行。
2. 按下dd

文本变为:

This new is a test text for testing vi editor and more.

移动文本
假设我们想将 “This new” 移动到行尾,先将光标移动到 “This” 的 “T” 上,按下dw删除 “This”,再按下dw删除 “new”,然后将光标移动到行尾,按下p放置文本。操作步骤如下:
1. 使用移动命令将光标移动到 “This” 的 “T” 上。
2. 按下dw删除 “This”。
3. 按下dw删除 “new”。
4. 使用$命令将光标移动到行尾。
5. 按下p放置文本。

文本变为:

is a test text for testing vi editor and more This new

复制文本
若要复制 “test” 到行尾,将光标移动到 “test” 的 “t” 上,按下yw复制单词,然后将光标移动到行尾,按下p放置文本。操作步骤如下:
1. 使用移动命令将光标移动到 “test” 的 “t” 上。
2. 按下yw复制单词。
3. 使用$命令将光标移动到行尾。
4. 按下p放置文本。

文本变为:

is a test text for testing vi editor and more This new test
11. 常见问题及解决方法总结
问题描述解决方法
非ASCII文件输入:q!退出,用file命令检查文件
未意识到修改文件后输入:q输入:q!离开,更改不保存
文件保存时提示已存在或只读:w! file覆盖,:w newfile保存到新文件
没有写入权限:w newfile写入新文件,有目录权限用mv替换,无权限用:w pathname/file写入有权限目录
文件系统已满:!rm junkfile删除文件释放空间,:!df查看其他文件系统空间,用:w pathname写入
临时文件磁盘已满:!ls /tmp查看可删文件,:sh创建shell操作,释放空间后:w!写入
达到磁盘配额:pre强制保存,不行则删除文件,完成后返回vi:w!写入
12. 总结与拓展

通过前面的介绍,我们已经了解了vi编辑器的基本使用方法,包括文件的打开、保存、退出,不同模式的切换,光标移动以及各种简单编辑操作。这些基本操作是进一步学习和使用vi的基础。

在实际使用中,你可能会遇到更复杂的编辑需求,例如批量替换文本、正则表达式搜索等。这些高级功能将在后续的学习中逐渐掌握。同时,不断练习基本操作可以提高你的编辑效率,让你在使用vi时更加得心应手。

以下是一个更详细的vi操作流程图,涵盖了更多的操作和选择:

graph TD; A[打开文件] --> B[命令模式]; B --> C{操作选择}; C -->|插入文本| D[按 i 或 a 进入插入/追加模式]; D --> E[输入文本]; E --> F[按 ESC 返回命令模式]; C -->|移动光标| G[使用 h, j, k, l 等移动命令]; C -->|保存退出| H[按 ZZ 或 :wq]; C -->|不保存退出| I[按 :q!]; C -->|编辑操作| J[使用 c, d, y 等命令]; J --> K{编辑类型}; K -->|更改| L[使用 cw 等命令更改文本]; K -->|删除| M[使用 dd 等命令删除文本]; K -->|复制| N[使用 yw 等命令复制文本]; K -->|移动| O[先 d 后 p 移动文本]; C -->|处理文件问题| P[根据不同问题使用对应解决方法];

希望通过本文的介绍,你能对vi编辑器有一个全面的认识,并开始在实际工作中使用它。不断探索和实践,你将发现vi是一个功能强大且高效的文本编辑工具。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 11:48:50

小米MiMo-Audio开源:音频大模型迈入少样本学习新纪元

小米MiMo-Audio开源:音频大模型迈入少样本学习新纪元 【免费下载链接】MiMo-Audio-7B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/XiaomiMiMo/MiMo-Audio-7B-Instruct 导语 2025年9月19日,小米XiaomiMiMo团队正式开源新一代音频语言…

作者头像 李华
网站建设 2026/4/22 17:12:10

三大技巧:彻底掌握note-gen工作区配置与资源管理

还在为笔记文件散落各处而烦恼吗?项目文档与个人笔记混杂不清?迁移设备时担心数据丢失?note-gen作为一款专注于记录和写作的跨端AI笔记应用,其强大的工作区功能正是解决这些问题的关键。本文将为你揭示工作区配置的核心技巧&#…

作者头像 李华
网站建设 2026/4/23 13:43:31

Bruno完美兼容Postman:一键解决API集合导入的大小写标准化难题

Bruno完美兼容Postman:一键解决API集合导入的大小写标准化难题 【免费下载链接】bruno 开源的API探索与测试集成开发环境(作为Postman/Insomnia的轻量级替代方案) 项目地址: https://gitcode.com/GitHub_Trending/br/bruno 在API测试工…

作者头像 李华
网站建设 2026/4/23 12:10:19

Oracle数据库开发新手指南:从零开始掌握官方示例项目

Oracle数据库开发新手指南:从零开始掌握官方示例项目 【免费下载链接】oracle-db-examples 项目地址: https://gitcode.com/gh_mirrors/ora/oracle-db-examples 还在为Oracle数据库开发而苦恼吗?别担心,Oracle官方推出的示例项目就是…

作者头像 李华
网站建设 2026/4/23 13:35:53

Joplin:重新定义个人知识管理的开源神器

Joplin:重新定义个人知识管理的开源神器 【免费下载链接】joplin Joplin 是一款安全笔记记录与待办事项应用,具备跨平台同步功能,支持 Windows、macOS、Linux、Android 和 iOS 平台。 项目地址: https://gitcode.com/GitHub_Trending/jo/jo…

作者头像 李华