vi编辑器的使用(1)

2023-10-28

 Linux 系统下的文本编辑器有很多种,包括图形模式下的gedit、kwrite等,文本模式下的vi、vim(vi的增强版本)、emacs等。其中vi和emacs是Linux系统中最常用的两个编辑器。本节主要介绍vi编辑器,主要内容包括:

  •      vi编辑器的基本使用,包括vi的启动与退出、工作模式的切换、光标的移动、屏幕的滚动、文本的插入与删除、复制与粘帖、查找与替换等。
  •      vi编辑器之程序编辑,包括程序设计中光标的跳转、关键字的补全,以及代码的缩进等。

     希望通过本节的学习,能够基本掌握vi编辑器的使用方法和相关技巧,能够独立完成程序源代码的编辑和修改。

1 vi编辑器的基本使用

     vi编辑器是Linux系统下的标准编辑器。虽然命令繁多复杂,并且绝大多数功能的输入都依靠键盘来完成,但如果我们熟悉掌握之后就会发现vi编辑器的功能、效率等都是其他图形界面编辑器无法比拟的,下面让我们来揭开它的神秘面纱。

1.1 vi的启动

     在终端输入命令vi,后面接着输入想要创建或编辑的文件名,即可进入vi编辑器。

     $ vi example.c

     命令的结果如图1-1所示:

1-1

图1-1 vi编辑器新建文件

     如果vi命令后面所输入的文件不存在,则系统会自动创建一个以该字符串命名的文本文件。如上图,光标停留在左上方,由于新建文件中没有任何内容,所以每一行的开头都为波浪线。窗口的底部为状态栏,显示当前编辑文件的相关信息。

     打开文件后,光标停留在屏幕左上方。状态栏显示了当前编辑文件的文件名、行数以及字符数等信息,如图1-2所示。

     vi命令打开文件时还可以带参数,这些参数用于修正vi的打开方式,主要包括如下:

  •      -R 以只读方式打开文件。

     如果只需阅读文件内容而不想对其进行修改时,可以使用这个参数,以防对文件的误操作,如下:

     $ vi –R example.c

     运行命令如图1-3所示。

1-2 1-3

                                                                        图1-2 vi编辑器打开文件                                                        图1-3 以只读方式打开文件

  •       -x 对文件进行加密。

     该参数可以在保存文件时对其进行加密,以后每次打开都需要输入密钥,否则将出现乱码。

     如果在打开vi时,没有给出文件名,也没有给出任何参数,即:

     $ vi

     命令结果如图1-4所示:

1-4

图1-4 直接打开vi编辑器

     此时,vi编辑器中所有行都为空,窗口中央给出的是vi编辑器的使用帮助,当用户在vi中输入文本或执行命令时,该帮助信息会自动消失。另外,如果以这种方式打开vi编辑器,在保存文件时,需要指定文件名。

1.2 vi的工作模式

     vi有3种工作模式:普通模式、编辑模式和命令模式,这3种模式之间可以相互切换,如图1-5所示。

1-5

图1-5 vi编辑器的工作模式

1.普通模式

     由Shell进入vi编辑器时,首先进入普通模式。在普通模式下,从键盘输入任何字符都被当作命令来解释。普通模式下没有任何提示符,当输入命令时立即执行,不需要回车,而且输入的字符不会在屏幕上显示出来。

     普通模式下可以输入命令进行光标的移动,字符、单词、行的复制、粘帖以及删除等操作。

2.编辑模式

     编辑模式主要用于文本的输入。在该模式下,用户输入的任何字符都被作为文件的内容保存起来,并在屏幕上显示出来。在普通模式下,输入a(附加命令)、c(修改命令)、i(插入命令)、o(另起新行)、r(取代命令)以及s(替换命令)都将进入编辑模式,此时vi窗口的最后一行会显示“插入”。输入i命令时屏幕上并无变化,但是通过执行i命令,编辑器由普通模式切换为编辑模式,如图1-6所示。

1-6

图1-6 编辑器由普通模式切换为编辑模式

     接着输入x=,屏幕显示如图1-7所示。

     要返回到普通模式,只需按键Esc即可。

1-7

图1-7 在编辑模式下输入字符

3.命令模式

     命令模式下,用户可以对文件进行一些附加处理。尽管普通模式下的命令可以完成很多功能,但要执行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式的。

     在普通模式下输入冒号即可进入命令模式,此时vi窗口的状态行会显示出冒号,等待用户输入命令。用户输入完成后,按回车执行,之后vi编辑器又返回到普通模式下。

1.3 文件的保存和退出

     当编辑完毕,需要退出vi编辑器时,可以在命令模式下使用命令退出vi,返回到Shell。

1.保存退出

     保存退出是指将缓冲区中的内容写入文件,可以使用的命令为wq和x,如图1-8所示。

1-8

图1-8 vi编辑器的保存退出

2.强行退出

     强行退出是指无条件退出,不把缓冲区中的内容写入文件,所使用的命令为q!。其中感叹号“!”表示不管文件是否被修改,放弃所修改的内容强行退出。

3.直接退出

     直接退出和强行退出的区别是如果文件内容有修改则给出提示,如图1-9所示,否则直接退出。直接退出使用的命令为q。

1-9

图1-9 vi编辑器的直接退出

     应该要注意一点,vi编辑器编辑文件时,用户的操作都是基于缓冲区中的副本进行的。如果退出时没有保存到磁盘,则缓冲区中的内容就会被丢失。所以,在退出vi编辑器时应该考虑是否需要保存所编辑的内容,然后再选择执行合适的退出命令。保存命令为w,如果打开vi时没有给出文件名,这时还需要给相互文件名。


FROM:  http://www.cnblogs.com/iuices/archive/2011/12/02/2272409.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vi编辑器的使用(1) 的相关文章

  • C++音视频开发从放弃到入门(基于FFmpeg+OpenCV)

    前言 音视频开发一定要学C 吗 答案是肯定的 虽然其它语言也能搞音视频开发 甚至使用起来更简单 但 语言越高级 离真相就越远 当你的功能需求日益增多 程序的性能需求越来越迫切 你想进一步了解程序实现的细节时 使用其它语言往往会面临 无法解决

随机推荐

  • Pinely Round 2 (Div. 1 + Div. 2) A~D

    A Channel 题意 有n个订阅者 a个初始在线人数 q个上下线情况 问是否一定或有可能所有订阅者都阅读了新的帖子 思路 同时在线人数等于n时 一定都阅读了 输出YES 初始在线人数加上所有的上线人数 所有的 号 大于等于n的话输出MA
  • STL- 常用算法(拷贝和替换,算术生成,集合算法)

    目录 1 常用拷贝和替换算法 1 1copy 容器内指定范围的元素拷贝到另一容器中 1 2replace 将容器内指定范围的旧元素修改为新元素 1 3 replace if 将区间内满足条件的元素 替换成指定元素 1 4 swap 互换两个
  • Docker安装redis集群

    文章目录 1 Redis集群介绍 2 Redis 集群的数据分片 3 Redis 集群的主从复制模型 4 docker搭建Redis集群 3主3从 5 主从容错切换迁移案例 6 主从扩容案例 7 主从缩容案例 1 Redis集群介绍 Red
  • 时序预测

    时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 目录 时序预测 MATLAB实现PSO GRU 粒子群优化门控循环单元 时间序列预测 预测效果 基本介绍 模型介绍 PSO模型 GRU模型 PSO GRU模型
  • C++中的静态和动态多态

    之前学过继承 子类继承父类的属性 多态就是基于继承而来的 我们在如果只用继承 那么子类继承父类的各种属性在编译环节 就已经被确认了 导致代码不灵活 如果继承下来的某个子类不支持某种问题的解决 那么父类就需要重新编写代码 这样这个子类ok了
  • (四)为深度伪造预处理数据集

    目录 在Notebook上设置基础 提取视频帧 人脸检测和提取 下载项目文件 75 5 MB 深度伪造 使用深度学习在视频中将一个人的脸换成另一个人的脸 是当今使用人工智能的最有趣和最可怕的方式之一 虽然深度伪造可用于合法目的 但它们也可用
  • Redis新数据类型

    Bitmaps 1 简介 现代计算机用二进制 位 作为信息的基础单位 1个字节等于8位 例如 abc 字符串是由3个字节组成 但实际在计算机存储时将其用二进制表示 abc 分别对应的ASCII码分别是97 98 99 对应的二进制分别是01
  • C++实现简易图书馆管理系统

    目录 一 概要设计 二 详细设计 模块一 管理员模块 一 概要设计 二 详细设计 模块二 借阅者模块 一 概要设计 二 详细设计 模块三 初始界面模块 三 总结 一 概要设计 本程序为图书馆管理系统 按需求 本程序大致分为2个部分 其一是管
  • nodejs:三个点(...)是什么

    参考 JS中三个点 是什么鬼
  • IKE SA和IPSec SA的区别

    刚接触IPSec的时候 一直很奇怪 为什么要做两阶段的协商 先协商出来一个IKE SA 然后再IKE SA的基础上协商出来一个IPSec SA 直接一步到位协商出IPSec SA不是很好吗 但是在实际应用中 直接协商IPSec SA就显得不
  • 人工智能-动物识别系统

    在本系统当中 知识库中的知识用产生式规则来表示 共有如下15条规则 R1 IF该动物有奶THEN该动物是哺乳动物 R2 IF该动物有毛发THEN该动物是哺乳动物 R3 IF该动物有羽毛THEN该动物是鸟 R4 IF该动物会飞AND会下蛋TH
  • 《深入浅出深度学习》之“从逻辑学到认知科学”

    大家应该都听说过 在2016年 Google DeepMind 的AlphaGo 与韩国围棋大师李世石九段进行了著名的人机大战 并且取得完胜 媒体描述AlphaGo的胜利时 都提到了人工智能 Artificial Intelligence
  • MySQL数据库for CentOS7 yum安装、5.7.30编译安装和基础操作

    1 MySQL数据库简介 MySQL 是一种关系数据库管理系统 关系数据库将数据保存在不同的表中 而不是将所有数据放在一个大仓库内 这样就增加了速度并提高了灵活性 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言 关系数据库管
  • 华为手机恢复出厂设置出现com.android.phone,如何在华为手机中恢复出厂设置?怎么在华为手机中一键还原?...

    如何在华为手机中恢复出厂设置 怎么在华为手机中一键还原 许多使用华为手机的小伙伴在使用一段时间手机过后 手机会变得有些卡顿 我们可以将手机恢复出厂设置来缓解手机卡顿的现象 今天 小编就教大家在华为手机中恢复出厂设置 具体如下 1 我们打开手
  • 一文讲完Java常用设计模式(全23种)

    文章目录 介绍 设计模式的六大原则 一 创建型模式 1 单例模式 Singleton Pattern 1 饿汉式 2 懒汉式 双检锁 3 静态内部类 4 枚举 2 原型模式 Prototype Pattern 3 工厂模式 Factory
  • js点击按钮改变文本

    h1 My Web Page h1 p A Paragraph p
  • linux环境下搭建宝塔(一键部署)

    了解宝塔 简单好用的服务器运维面板 宝塔Linux面板是提升运维效率的服务器管理软件 支持一键LAMP LNMP 集群 监控 网站 FTP 数据库 JAVA等100多项服务器管理功能 有30个人的专业团队研发及维护 经过200多个版本的迭代
  • Spring Boot 最核心的 25 个注解

    Spring Boot 最核心的 25 个注解 1 SpringBootApplication 这是 Spring Boot 最最最核心的注解 用在 Spring Boot 主类上 标识这是一个 Spring Boot 应用 用来开启 Sp
  • h5事件监听

    问题 点击div 或弹框 外的任何区域div 或弹框 消失 前情提要 项目是用angular写的移动端页面 测试反馈点击确认按钮每次都要点击2次才生效 体验很不好 需要优化 页面如下图所示 点击金额输入框键盘出现输入金额 键盘是单独封装的组
  • vi编辑器的使用(1)

    Linux 系统下的文本编辑器有很多种 包括图形模式下的gedit kwrite等 文本模式下的vi vim vi的增强版本 emacs等 其中vi和emacs是Linux系统中最常用的两个编辑器 本节主要介绍vi编辑器 主要内容包括 vi