首页 > 系统相关 >【linux基础-02】vi命令

【linux基础-02】vi命令

时间:2023-05-20 22:55:04浏览次数:40  
标签:02 vi 模式 命令 Unix 当前 linux 替换 光标

一、Vi/Vim 介绍

  • VI(Visual Interface),是一个文本编辑器,主要在 Unix 及类 Unix 环境中使用。
  • Vim(Vi improved)在 Vi 的基础之上进行了功能提升,相当于 Vi 的增强版。

所有类 Unix 系统都会内建 vi 文本编辑器,就像 window 电脑上的记事本一样,可以对文本内容进行编辑,vi 编辑器是 Unix 系统最初的编辑器, 允许查看文件中的行、在文件中移动、插入、编辑和替换文本 。

然而由于 Unix 系统是商业操作系统,国外一牛逼的程序员“ 理查德·斯托曼”发起了 GNU 计划(该计划目标是创建一套完全自由的操作系统,实现 Unix 系统的标准接口,因此完全向上兼容 Unix,但是可以自由使用),在 GNU 项目中,程序员将 vi 编辑器移植到开源世界的同时对其做了改进,因此重命名为“Vi improved”,也就是我们说的 vim。

ps: GNU 项目,英文全称为“GNU is Not Unix”,简单的说,就是一个开发类 Unix 操作系统的项目,GNU 操作系统是由 GNU 软件包及其第三方的免费软件包组成,所以其最大的特点就是免费。

因此 vim 是从 vi 发展而来的一个具有编程能力的文本编辑器, 可以主动的以字体颜色辨别语法的正确性,方便程序设计。 vim 具有代码补全、编译及错误跳转等方便编程的功能,在程序员中被广泛使用。

有的 linux 发行版可能没有安装 vim(需要时自行安装即可),但是一定会有 vi 编辑器。作为入门文章本文仅演示二者共同的用法*,编辑器有三种模式:一般模式、编辑模式、命令模式*。每种模式可以进行不同的操作,完成不同的功能。

三种模式之间可以相互转换。*一般模式主要用于:复制、粘贴、删除;编辑模式主要用于编辑文本;命令模式主要执行文本的保存、查找等。*

二、一般模式

1.1 复制

命令(语法)功能描述案例(说明)
yy 复制当前光标所在行  
y*y 复制当前光标所在行开始的*行 y2y:表示从当前光标所在行开始复制 2 行
yw 赋值一个单词 光标之后开始复制,包括词尾的空格;如果想要复制整个单词,就要把光标放到单词首字母

1.2 粘贴

命令(语法)功能描述案例(说明)
p 粘贴 粘贴到当前光标的下一行(复制的行),或当前光标字符之后(复制的单词)

1.3 删除

命令(语法)功能描述案例(说明)
dd 删除光标当前行  
d*d 删除光标当前行开始的*行 d2d:表示从当前光标所在行开始删除 2 行
dw 删除光标之后的一个单词 光标之后开始删除,包括词尾空格;如果要删除整个单词,光标放到单词首字母,类似 yw
x 删除光标之后的一个字符 相当于 del
X 删除光标之前的一个字符 相当于 Backspace

1.4 撤销

命令(语法)功能描述案例(说明)
u 撤销  

1.5 定位

上边的复制、粘贴、删除,到目前我们都是通过方向键来控制鼠标的位置,但是这样效率太低,通过下边的定位命令可以快速进行定位。在一般模式下定位光标,进入编辑模式进行编辑,这样可以大大提高效率。

命令(语法)功能描述案例(说明)
shift ^ 行首  
shift $ 行尾  
1 shift g 页头 先按 1 再一起按 shift 和 g 组合键
shift g 页尾  
* shift g 任意行 先按数字*,在一起按 shift 和 g 组合键,调试程序时非常有用

三、编辑模式

在一般模式下,通过如下 i、a、o、r 命令进入编辑模式,对文档内容进行编辑。命令的区别在于进入编辑模式后光标插入点不同。

命令功能描述
i 当前光标前
I 当前光标所在行行首
a 当前光标后
A 当前光标所在行行尾
o 当前光标下一行,新开一行
O 当前光标上一行,新开一行
r 当前光标之后,新输入会替换一个字符
R 替换当前光标之后的多个字符

四、命令模式

在一般模式下,可以通过以下三个命令:“:”、“/”、“?”进入底行命令模式完成文件保存、内容查找及字符替换功能。执行完命令可以通过 ESC 返回一般模式。

3.1 文件保存

  • 语法格式

    *:[选项] 回车*

选项分为 w、q、!可以相互组合使用。

w:保存

q:退出

!:强制执行

  • 案例

    :w 保存

    :w filename 文件另存为 filename

    :wq 保存并退出

    :wq! 强制保存并退出

    :wq! filename 文件另存为 filename 并退出编辑器

3.2 查找内容

查找命令主要有 2 个:/或?二者功能一致,只记住一个即可

  • 语法格式

*/要查找的词 回车*

*?要查找的词 回车*

如果用第一个语法/进行查询,则按 n 键向下查找下一个,shift n 向上查找下一个

第二个语法则相反,n 向上查找上一个,shift n 向下查找下一个

  • 案例

    /heimatengyun 在当前文档中查找 heimatengyun 字符串

    等价于

    ?heimatengyun

3.3 替换内容

可以通过如下命令替换当前文档里的内容

  • 语法格式

*:[范围]s/要被替换的内容/新内容/[c,e,g,i] 回车*

范围:1,5 表示从第一行到第五行。1,$表示从第一行到最后一行,等价于%。%表示当前编辑的文章。

可组合选项:c 表示 confirm,每次替换前询问;e 表示不显示 error;g 表示 globe 不询问整行替换;i 表示 ignore 不区分大小写;I 表示大小写敏感

  • 案例

1,3s/you/YOU 在当前文档的 1 至 3 行搜索 you 并替换为 YOU。*注意不是单词替换,只要匹配就会替换,比如如果第二行存在 your 这个单词,则会被替换为 YOUr*

1,3s/you/YOU/c 替换前会询问是否要替换

s/e/E/g 替换当前行所有 e 为 E。假设当前光标所在行内容为 where are you from 替换后变为 hErE arE you from

3.4 显示行号

:set nu 显示行号

:set nonu 关闭行号

以上为 vi 编辑器基本的使用命令,多敲几次自然就记住了。至此我们已经学会使用 vi 编辑器,可以创建和管理各种文件了。

标签:02,vi,模式,命令,Unix,当前,linux,替换,光标
From: https://www.cnblogs.com/xfbk/p/17417963.html

相关文章

  • redis学习3linux--黑马
    持久化RDBsavebgsave工作原理bgsave->发送指令到redis,redis返回Backgroundsavingstarted给客户端,然后调用fork函数生成子进程,子进程创建rdb文件,成功后返回消息给redis,可通过日志文件查看bgsave命令时针对save阻塞问题的优化。Reids内部所有涉及到RDB操作都采用bgsave的方......
  • [Linux]香橙派orangepi下ubuntu SSH安装步骤详解
    Linux下SSH安装步骤详解(linux中ssh安装)SSH(SecureShell)是一种加密的工具,可以安全地在网上进行数据交换,是远程安全服务器登录等功能建立在现有网络环境中的一种基本安全协议。本文介绍在Linux系统中安装SSH的方法,以Ubuntu18.04为例。一、安装openssh-server我们首先要安装openss......
  • 2023.5.20——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午参观君乐宝企业,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 02-初识Verilog
    1.开发环境搭建需要使用的软件:QuartusIIModelSimVisioNotepad++2.初识Verilog2.1VerilogHDL简介VerilogHDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图\逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能Verilo......
  • C/C++程序设计课设题[2023-05-20]
    C/C++程序设计课设题[2023-05-20]ATM仿真系统-薛景背单词-叶水仙-理科实验班电信优惠套餐推荐系统的设计与实现-朱立华-通信工程多媒体文件管理及检索系统-刘林峰-广播电视工程公交路线自动化选择系统实现-张勤-测控技术与仪器基于朋友圈的商品推荐-汪云云-自动化基于数据......
  • day75(2023.5.20)
    1.通过Cookie实现客户端与服务端会话的维持 运行结果: 2.Cookie总结3.HttpSession对象的特点 4.HttpSession对象的创建 运行结果: 5.HttpSession对象的使用 运行结果:  6.HttpSession的销毁方式 运行结果: 在IE浏览器中......
  • Field userClient in com.demo.order.service.OrderService required a bean of type'
    在SpringCloud项目中使用Feign进行远程调用遇到的错误。原因是因为UserClient在com.demo.feign.clients包下面,而order-service的@EnableFeignClientd注解却在com.demo.order包下面,这两个不在同一个包下,无法扫描到UserClient。解决方法有两种1.指定Feign应该扫描的包@EnableFeig......
  • CCPC2023 河南省赛
    和零时加的队友打了一下,计算几何摆了,最优化摆了,adhoc摆了。A.小水獭游河南枚举前缀,是\(O(|\Sigma|)\)的,然后判断一下是不是回文串即可。B.ArtforRest昨天才做过这个套路的加强版。显然只用判断类似\(\max(a,b)<\min(b+1,c)\)的条件。暴力枚举是调和级数的。E.矩阵......
  • 2023年上海驾考科目三考试流程 All In One
    2023年上海驾考科目三考试流程AllInOne科目三考试一次通过秘籍demos(......
  • 2023 科目三考试技巧图解教程 All In One
    2023科目三考试技巧图解教程AllInOne上海驾考小昆山科目三考场那条科目三考线目前还不知道???科目三C2自动档上车准备模拟灯光超车变道加速掉头学校/公交站停车紧急情况处置demos(......