当前位置: 首页 > news >正文

Linux教程8:文本编辑命令vi

一、文本编辑命令介绍

vi(Visual Interface)是一种广泛使用的文本编辑器,特别是在Unix和类Unix系统(如Linux)中。尽管现代系统通常提供了更现代的文本编辑器(如vim,它是vi的增强版本),但了解vi的基本用法仍然是非常有用的,因为它在许多系统和环境中都是预装的。

1、vi 介绍

vi是一种模式化的文本编辑器,意味着它有几种主要的工作模式:

(1)命令模式(Command Mode)

这是vi启动时的默认模式。在这个模式下,你可以输入命令来移动光标、删除文本、搜索文本等。大多数键盘输入都被解释为命令。

(2)插入模式(Insert Mode)

在这个模式下,你可以输入文本。要从命令模式切换到插入模式,你需要输入i(在光标前插入)、a(在光标后追加)、o(在当前行下方新开一行并进入插入模式)等命令。

(3)命令模式-末行模式:

vi的命令模式下,通过输入冒号(:)并按下回车键,即可进入末行模式。此时,屏幕底部会显示一个冒号提示符,表示用户现在处于末行模式,可以输入命令。

2、语法和指令

(1)命令模式

  • i:在当前光标位置进入插入模式。
  • a:在当前光标位置的下一个字符开始插入文本。
  • o:在当前行下方新开一行并进入插入模式。
  • x:删除光标处的字符。
  • dd:删除当前行。
  • yy:复制当前行。
  • p:粘贴之前删除或复制的文本。
  • u:撤销上一步操作。
  • Ctrl + r:重做上一步撤销的操作。
  • G:跳转到文件的最后一行。
  • gg 或 :1:跳转到文件的第一行。

 (2)编辑模式

  • 按i:进入
  • 按ESC:退出

 (3)末行模式 

  • :w        保存当前文件,但不退出vi
  • :w filename 将当前文件保存为指定的文件名。
  • :wq 或 :x 保存当前文件并退出vi
  • :q! 不保存更改,强制退出vi

 二、编辑命令操作介绍

注意:vi命令不能编辑文件夹

vi 文件夹,使用末行命令:wq,会出现以下报错,只能:q退出,不可以编辑保存

1、编辑文本指令

代码:vi 文件名

例:当前文件夹下有一个wenben.txt文件,对其进行编辑
vi wenben.txt
按i进入编辑模式

2、vi编辑后保存并退出 

保存退出:按Esc键进入退出编辑模式进入命令行模式;然后输入:wq 退出vi
:wq!强制保存退出,但是编辑文件夹也不可以退出,因为文件夹不可编辑。

回车回到界面,退出编辑的文档

3、编辑后不想保存直接退出 

当我们修改了文件,又不想保存时输入:q 回车会报错

这时候需要:q! 回车强制退出

4、vi界面中的其他常用指令 

命令模式,进入文本按ESC(不要按I进入编辑模式)

 (1)按v:选择文本

 

通过键盘上下左右控制选择文本

(2)按y:复制 

y复制,选择好文本以后按y复制,可以配合v使用

 (3)按p:复粘贴

p粘贴,粘贴复制好的文本(如果粘贴的文字是一行内的几个字,粘贴的时候不可以换行,换行要进入编辑模式开一个新行后粘贴)

 (4)yy:复制当行

yy复制当行 ,p粘贴这时候会一行一行的粘贴(复制的时候是多行粘贴也是多行)

 (5)dd:删除

将光标定位在想要删除的行,按下dd,删除光标所在行。

(6) u:撤销

u撤销上一个操作

(7) x:删除

x删除当前光标下的字符,可以配合v使用(先用v选择想删除的字符)

测试媛小七:

学习测试基础知识,点个关注,跟我一起系统学习,本专栏为linux知识内容,从0基础到入门的全部内容将持续更新。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 哪款宠物空气净化器能更好的清理浮毛?希喂、352、IAM测评分享
  • 「Python程序设计」循环控制:for和while循环语句
  • SQL进阶技巧:如何查询最近一笔有效订单? | 近距离有效匹配问题
  • 进程间通信方式(共享内存、信号灯集、消息队列)
  • 【重学 MySQL】五、MySQL 的卸载
  • C++——类与对象(一)
  • 海绵城市雨水监测系统
  • XC企业建站系统V1.2.5
  • Mac 数据恢复技巧:恢复 Mac 上已删除的文件
  • [ A*实现 ] C++,矩阵地图
  • 理解 Java 中的join方法
  • 接口测试工具SoapUI、Jmeter、Postman
  • E32.【C语言】练习:指针运算习题集(下)(未完)
  • 统计学习与方法实战——K近邻算法
  • 编译u-boot报错configuration written to .config
  • 网络传输文件的问题
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • AngularJS指令开发(1)——参数详解
  • Apache Zeppelin在Apache Trafodion上的可视化
  • classpath对获取配置文件的影响
  • CSS 专业技巧
  • CSS相对定位
  • ECMAScript入门(七)--Module语法
  • ECS应用管理最佳实践
  • Mysql5.6主从复制
  • Spark RDD学习: aggregate函数
  • springMvc学习笔记(2)
  • Vue 动态创建 component
  • vue脚手架vue-cli
  • 搞机器学习要哪些技能
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • ​人工智能书单(数学基础篇)
  • ​虚拟化系列介绍(十)
  • # C++之functional库用法整理
  • #pragma multi_compile #pragma shader_feature
  • #VERDI# 关于如何查看FSM状态机的方法
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C++哈希表01)
  • (二) 初入MySQL 【数据库管理】
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (转)3D模板阴影原理
  • (转)shell调试方法
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • **python多态
  • . NET自动找可写目录
  • .NET C# 使用GDAL读取FileGDB要素类
  • .net mvc 获取url中controller和action
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .Net8 Blazor 尝鲜
  • /etc/fstab 只读无法修改的解决办法