如何在虚拟机安装下的Linux系统下使用Vi编辑器

本文详细介绍了VI编辑器的命令模式、输入模式、末行模式及其基本使用方法,包括如何打开与退出文件、进行文件操作、光标移动、编辑操作、查找与替换等核心功能。此外,还探讨了VI编辑器如何实现多文件同时编辑与快速切换,为高效文本编辑提供全面指导。

(参考http://zhidao.baidu.com/question/123161356.html

一.vi的模式
命令模式:vi启动默认进入的模式,可进入输入模"i",或末行模式(:),除了可以完成命令的功能外,也是后两种模式的

转换点
输入模式:即文本辑辑状态,最后一行显示"-- INSERT --"提示,按ESC返回到命令模式
末行模式:可完成一些复杂操作,以":"开始,执行完一个末行命令后自动返回命令模式

二.基本使用
1.vi 编辑器的启动与退出:

(1).使用命令"vi"直接进入编辑环境
(2).在命令模式下输入":q!",可以强行退出编辑环境,对文件修改不进行保存
(3).以文件名作为"vi"命令的参数时,若存在此文件,则vi可对内容进行编辑,若不存在,打开以参数名命名的空文件

2.文件操作:

(1).打开新文件:在末行模式下":e filename"关闭当前文件并打开新文件,":e! filename 强制关闭当前文件并打开新文

件"
(2).读取文件内容到当前文件:":r filename",读取的文件内容粘贴到当前文件光标所在行的下面
(3)保存文件:命令为":w [filename]",如果文件已经命名,可直接使用":w"命令的参数,如果没有命名,第一次保存时需

指定文件名作为参数
(4).另存为文件:命令为":w filename",只保存到新文件,而不更新原来文件的内容
(5).退出vi编辑器:退出格式为":q",保存并退出为":wq",强行退出为":q!"

3.光标的移动操作(命令模式下)

(1).光标方向移动:"h"左、"l"右、"k"上、"j"下
(2).翻页移动:"ctrl+f"前一页、"ctrl+b"后一页、"ctrl+u"前半页、"ctrl+d"后半页
(3).行内快速跳转:"^"本行首字符、"$"本行尾字符、"w"后一单词首字母、"b"前一单词首字母、"e"后一单词尾字母;可

添加数字组合使用,例如:"3w"后三个单词首字母、"4b"前4个单词首字母、"5e"后5个单词尾字母
(4).文件内行间跳转:显示行号":set nu",取消显示行号":set nonu","1G"跳转到首行,"G"跳转到末尾行,"#G"跳转到

第#行

4.编辑操作

(1).进行输入模式:"i"当前光标处,"a"当前光标后,"A"当前行末,"o"当前行下插入新行,"O"当前行上插入新行,"cw"

删除当前光标到所在尾部字符,"c$"删除当前光标到行尾的字符,"c^"删除当前光标(不包括)之前到行首的字符;以上记忆

如有困难,可只记"i"从命令模式进入输入模式,完成编辑后"Esc"退回到命令模式
(2).输入模式的操作:上下左右方向进行光标移动,"Home/End"定位光标到行首行尾,"Page Up /Down"上下翻

页,"Backspace"左侧字符的删除,"Delete"删除光标位置的字符
(3).删除操作:在命令模式下,可用以下命令完成删除操作,"x"光标处单个字符,"dd"光标所在行,"dw"当前字符到单词

尾(含空格),"de"当前字符到单词尾(不含空格),"d$"当前字符到行尾,"d^"当前字符到行首,"J"合并当前行与下一行

的内容,可添加数字配合使用,例如"3x"当前光标向右3个字符,"2dd"从当前行开始向下两行文本,"3dw"当前光标向右3个

单词,"2de"当前光标向右两个单词(保留一个空格),"5J"合并5行文本
(4).撤销操作:在命令模式下,"u"取消最近一次操作,可重复使用,"U"取消对当前行进行的所有操作,"Ctrl+R"对"u"产

生的撤消进行恢复
(5).复制操作:"yy"整行,"yw"光标到单词尾,"y$"光标到行尾,"y^"光标到行首;与数字组合使用,"5yy"当前及后续共5

行,"3yw"当前光标开始的3个单词;末行命令":m,ny"m行到n行之间的文本,例如:":100,200y"100行到200的内容
(6).粘贴操作:在命令模式下,使用"p"将缓冲区中的内容粘贴到当前文档

5.查找与替换操作(末行模式)

(1).自上而下:":/word"查找指定的字符串,"n"查找下一个(自上而下)"N"反向查找下一个(自下而上)
(2).自下而上:":?word"自下而上查找指定字符串,"n"查找下一个(自下而上)"N"反向查找下一个(自上而下)
(3).普通替换:":s/old/new"由s开始,"old"指被替换的字符串,"new"替换成哪个字符串,此命令只替换当前行中第一个

匹配的字符串
(4).行内全部替换:":s/old/new/g",当前行内所有匹配的字符串
(5).在行区域内进行替换:":#,#s/old/new/g","#,#"表示两个行号之间的行区域,例如"3,5"表示第3行到第5行
(6).整个文件内的替换操作:":%s/old/new/g",加%表示整篇文档,危险,慎用
(7).使用替换确认功能:在原替换命令后加"c"可提供确认功能,例

如:":s/old/new/c",":s/old/new/gc",":#,#s/old/new/gc",":%s/old/new/gc";替换命令确认后的提示为"replace

with word (y/n/a/q/l/^E/^Y) ?",其中"y"替换,"n"放弃,"a"所有,"q"退出

三、编辑器的多文件操作

1.多文件操作的vi启动:"vi [file1] [file2] .."后跟多个文件名作为参数即可,第一个参数显示在屏幕上,其它文件处

于编辑后台状态
2.多文件切换命令:
(1).显示多文件信息:":args"结果中显示打开的文件,"[]"内为当前显示文件
(2).前后切换文件:":next"显示后一文件,":prev"显示前一文件,加"!"为强制切换,不保存当前文件
(3).定位首文件和尾文件:":first"定位首文件,":last"定位尾文件
(4).快速文件切换:已经用某个切换命令进行文件切换后,"Ctrl+^"可快速切换到前状态

<think>我们已经在之前的回答中详细说明了在Linux使用vi编辑器编写、编译和运行C语言程序的步骤。现在用户明确表示在虚拟机Linux环境中操作,但基本步骤是一致的。用户提供的引用[2]中有一个C语言示例代码(虽然包含错误:main拼写成了mian),我们可以参考这个示例但需要修正错误。我们将按照以下步骤回答:1.创建并编辑C文件2.编写正确的C代码(修正引用[2]中的错误)3.保存并退出vi4.编译程序(使用gcc)5.运行程序注意:用户是在虚拟机中的Linux系统,因此需要确保已经安装了gcc。如果没有安装,需要先安装。另外,引用[1]是关于运行Java代码的,虽然与本问题无关,但我们可以忽略。我们将提供完整的操作流程,包括代码示例(修正后的)和命令。同时,考虑到用户可能对vi操作不熟悉,我们会简要说明vi的基本操作。最后,生成相关问题。</think>### 在虚拟机Linux使用vi编辑器编写、编译和运行C语言程序 以下是详细操作步骤(以Ubuntu虚拟机为例): #### 1. 准备环境 ```bash # 1.1 更新系统 sudo apt update # 1.2 安装gcc编译器 sudo apt install gcc -y # 1.3 验证安装 gcc --version ``` #### 2. 创建并编辑C文件 ```bash # 2.1 创建文件 vi hello.c ``` #### 3. vi编辑操作流程 1. **进入插入模式**:按 `i` 键 2. **输入代码**(修正引用[2]的错误): ```c #include <stdio.h> int main() { // 修正引用[2]的void mian()错误 int a, b, c, t; printf("请输入三个整数:"); scanf("%d %d %d", &a, &b, &c); // 排序逻辑 if(a > b) { t = b; b = a; a = t; } if(a > c) { t = c; c = a; a = t; } if(b > c) { t = c; c = b; b = t; } printf("排序结果:%d %d %d\n", a, b, c); return 0; } ``` 3. **保存文件**: - 按 `Esc` 退出插入模式 - 输入 `:w` 保存 4. **退出vi**: - 输入 `:q` 退出 - 或 `:wq` 保存并退出 #### 4. 编译程序 ```bash gcc hello.c -o sort # 编译为可执行文件sort ``` - 添加编译选项(推荐): ```bash gcc -Wall -O2 hello.c -o sort # 显示所有警告+优化 ``` #### 5. 运行程序 ```bash ./sort # 执行程序 ``` **示例输出**: ``` 请输入三个整数:5 2 8 排序结果:2 5 8 ``` #### 完整流程演示 ```bash user@ubuntu:~$ vi hello.c # 创建文件并输入代码 user@ubuntu:~$ gcc hello.c -o sort user@ubuntu:~$ ./sort 请输入三个整数:9 1 4 排序结果:1 4 9 ``` ### 错误处理技巧 1. **编译错误**: - 使用 `gcc -Wall` 显示详细警告 - 修正引用[2]的常见错误: ```c // 错误:void mian() → 正确:int main() ``` 2. **vi调试辅助**: - 显示行号:`:set number` - 跳转到错误行:`:行号` - 查找错误:`/关键字` 3. **段错误调试**: ```bash gcc -g hello.c -o sort # 添加调试信息 gdb ./sort # 启动调试器 (gdb) run # 运行程序 ``` ### 高效开发技巧 1. **快速重编译**: ```bash # 编译并立即运行 gcc hello.c -o sort && ./sort ``` 2. **Makefile自动化**(参考引用[3]): ```bash vi Makefile ``` ```makefile CC = gcc CFLAGS = -Wall -O2 all: sort sort: hello.c $(CC) $(CFLAGS) hello.c -o sort clean: rm -f sort ``` **使用**: ```bash make # 编译 ./sort # 运行 make clean # 清理 ``` ### 虚拟机注意事项 1. **共享文件夹**: - 在虚拟机设置中启用"共享文件夹" - 文件保存在`/mnt/hgfs/`目录下 2. **剪贴板共享**: - 安装VirtualBox增强功能: ```bash sudo apt install virtualbox-guest-utils ``` 3. **快照功能**: - 重要操作前创建虚拟机快照 - 避免操作失误导致系统问题 > **关键提示**:vi的三种模式 > - **命令模式**:移动光标/执行命令(启动后的默认模式) > - **插入模式**:按 `i` 进入文本编辑 > - **末行模式**:按 `:` 输入保存/退出等命令[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值