Linux命令之vim/vi

news2025/1/1 22:33:12

目录

vim/vi简介

vi/vim 的使用

操作实例

总结


vim/vi简介

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

命令模式:用户用过vi filename 进入该模式,可进行阅读、剪切(dd  ndd)、粘贴(p)、复制(yy)和恢复文本(u)。

输入模式:用户在命令模式下输入i便可进入,该模式下可以对文本进行自由编辑,输入ESC便可退出。

底线名列模式:用户在命令模式下输入便可进入,该模式下可以输入

w(保存)、q(退出)、wq(保存并退出)、q!(不保存修改、强制退出)

set nu(显示行号)、set nonu(取消行号)

s/oldtext/newtext(单行文本替换,只是替换当前行的内容)

1,10s/oldtext/newtext  指定行范围(第1行到第10行,替换内容)

.表示当前行 .,10s/oldtext/newtext 

$表示最后一行 .,$s/oldtext/newtext 

%表示所有的行,即1.$  %s/oldtext/newtext  所有行,都要执行替换动作   (注意上面的替换都是替换某行的第一个匹配内容!!!!!非全局) 

 %s/oldtext/newtext/g  g:global全局,即所有的匹配内容都要替换(如果你有一部分不想替换 就加上询问control)%s/oldtext/newtext/gc   

%s/oldtext/newtext/gic i,ignore忽略大小写。

操作实例

1.通过vi 文件名 进入命令模式

lsf@bs-pc:~/2dir$ vi 2.c

2. 输入i进入输入模式,此刻能够发现 左下角有INSERT字样

 3.写入文字 完成后点击ESC 返回命令模式

 4.输入:进入底线命令模式 在此可以测试上面的部分命令

如:将全文的i替换成I 1,$s/i/I/g(下图为替换前,旨在展示左下角命令)

 如:将全文的s替换成S %s/s/S/g(下图为替换后)

 5.:wq 保存并退出

总结

本文只列举了部分指令,更多请跳转至菜鸟。

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思!(如,20dd:删除 20行) 也有可能是代表去到第几行的意思(如,2:跳到第二行)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542153.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

i.MX6ULL - 远程视频监控方案实现(nginx-rtmp流媒体服务器、ffmpeg推流)

i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流) 目录 i.MX6ULL - 远程视频监控配置(nginx-rtmp流媒体服务器、ffmpeg推流)1、前言2、buildroot文件系统构建2.1 勾选alsa-utils(选做:如果…

桥接模式与NAT模式的区别以及设置静态IP

概述 日常我们都会使用到虚拟机,本文章以VMware虚拟机为例,主要介绍下虚拟机设置桥接模式与NAT模式的区别,并通过示意图进行讲解。并且会介绍如何去设置静态IP。 模式介绍 NAT模式NAT模式下 ,创建出来的虚拟机只能访问当前主机…

基于ensp的跨地区的校园网组网方案

本博客是基于模拟器ensp的校园网组网方案,有总校区和分校区,主要用了vlan划分、dhcp、nat、ospf、acl、bgp等技术。首先说一下本博客的局限性: 总校区和分校区之间只是使用的传统的bgp建立连接,这样可以在运营商上看到内网的明细&…

HTTP1.1(七)内容协商和资源表述

一 内容协商和资源表述 ① 铺垫 1) 由于一种资源对应许多种状态,所以客户端接收资源表述的转移时需要进行协商比如:[1]、一个来自中国的用户他的浏览器访问一个页面时得到中文页面[2]、一个其它国家的用户访问同一个页面时得到的是他本国的页面补充:…

在线协作助力团队合作:解析多种高效工具实现团队协同

在线协作是通过网络为平台,将团队成员连接起来,使其共同创作、共享讯息,进行团队合作。这种协作方式突破了线下的空间限制性,使团队合作更加及时便捷。因此,越来越多的团队选择了在线协作。 在线协作为团队带来了什么帮…

IDEA 2019.1 与 apache-maven-3.6.3 版本不兼容解决办法

-------IDEA 2019.1 与 apache-maven-3.6.3 版本不兼容 解决办法:降低 Maven版本为 3.3 到底得踩过多少坑,才能让你不再流泪,

接初识HTML中的基础知识,简单明了!!!

续——HTML的基础知识&#xff01;&#xff01;&#xff01; 一、表格 关于HTML中用table表示一个表格&#xff0c;用tr来表示一行&#xff0c;用td来表示一列。 Demo&#xff1a;表示一个二行三列的表格 <!--根--> <html><!--头--> <head><…

瑞吉外卖 - 文件上传与下载功能(15)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

pandas dataframe 中 explode()函数用法及效果

最近在使用pyspark处理数据&#xff0c;需要连接各种各样的表和字段&#xff0c;因此记录相关函数的使用情况。今天介绍explode(). 1. explode()函数简介 explode 函数是 pandas.DataFrame 类的一个方法&#xff0c;能够通过pyspark间接调用。 它可以将一个包含list或者其它可…

【零基础学JS - 7 】javaScript 中的8大数据类型

&#x1f468;‍&#x1f4bb; 作者简介&#xff1a;程序员半夏 , 一名全栈程序员&#xff0c;擅长使用各种编程语言和框架&#xff0c;如JavaScript、React、Node.js、Java、Python、Django、MySQL等.专注于大前端与后端的硬核干货分享,同时是一个随缘更新的UP主. 你可以在各个…

Python之selenium关于Chrome驱动位置,闪退的问题和安装路径

目录 零、查看Python的安装路径一、Chromedriver放置的位置二、浏览器闪退 零、查看Python的安装路径 一、Chromedriver放置的位置 背景&#xff1a;之前由于Chrome浏览器自动升级后&#xff0c;导致驱动与浏览器不匹配&#xff0c;自己也不知道问题出在哪儿&#xff0c;花费了…

hadoop和spark配置问题记录

hadoop和spark配置问题记录 Spark的WebUI访问不了 直接启动的start-all.sh是环境变量中配置的hadoop的脚本&#xff0c;不是spark的&#xff0c;因此启动spark的start-all.sh脚本即可。 Spark看不到Worker信息 启动Spark在UI界面上看不到worker节点的信息_潇洒哥WH3的博客-C…

【Java|基础篇】包和访问权限修饰符

文章目录 1. 前言2. 包的概念3. 包的创建以及优点4. 访问权限修饰符5. 总结 1. 前言 包和访问权限修饰符是Java中两个常用的概念&#xff0c;它们都与访问控制有关. 2. 包的概念 在面向对象体系中&#xff0c;提出了一个软件包的概念&#xff0c;即&#xff1a;为了更好的管…

代码随想录算法训练营第四十四天 | 完全背包、完全背包的遍历顺序

完全背包 理论基础 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;带你学透完全背包问题&#xff01; 和 01背包有什么差别&#xff1f;遍历顺序上有什么讲究&#xff1f;_哔哩哔哩_bilibili 完全背包和01背包问题唯一不同的地方就是&#xff0c;每…

品牌战略规划:如何让你的品牌脱颖而出

虽然很多国内企业家都非常重视战略&#xff0c;什么商业战略、渠道战略之类的一通研究&#xff0c;但惟独却缺乏对品牌战略的一个正确理解。 很多时候一把手不参与&#xff0c;也不关心品牌建设&#xff0c;经常上来就让团队实操动作&#xff0c;而自己只看最终结果&#xff0…

LeetCode20.有效的括号

题目 思路 每一个右括号应该与与在它左边最近的左括号相匹配&#xff0c;所以这道题可以通过栈实现 代码 &#x1f4ac;由于博主还没有学习到C&#xff0c;能力有限&#xff0c;所以只能自己实现一个栈&#xff0c;学过C的朋友可以直接使用CSTL中的栈来实现 #define _CRT_S…

深入理解事务的隔离性 —— 多版本并发控制( MVCC )

文章目录 一、数据库并发的三种场景二、多版本并发控制&#xff08;MVCC&#xff09;的初步认识三、事务的隐藏列字段四、UNDO 日志五、Read View 读视图六、深入理解 MVCC —— 隔离级别的实现原理七、RC 与 RR 的本质区别 一、数据库并发的三种场景 数据库并发指的是多个用户…

如何将Shapefile文件导入Sketch Up进行建模

涉及软件&#xff1a;ArcGIS10.4.1&#xff0c;Sketch Up Pro2022 1.shapefile的属性编辑 基于我们已有的shp文件&#xff0c;打开属性表&#xff0c;添加一个高度字段用于存放平面图形高度信息&#xff0c;为后期三维拉伸做好准备&#xff08;如果已有相关信息&#xff0c;请…

区间合并【pair、sort】

将有交集&#xff08;包括端点&#xff09;的区间进行合并 802. 区间和 - AcWing题库 例如&#xff0c;现在有这样一个数据 1 2 2 4 5 6 7 8 7 9最终合并的结果就是 1 —— 45 —— 67 —— 9 得到三个区间 第一步&#xff1a;按照区间左端点排序 第二步&#xff1a;扫描…

【C++初阶】:模板初阶

模板初阶 一.函数模板1.简单使用2.模板原理3.函数模板的实例化4.模板参数的匹配原则 二.类模板1.基本格式2.类模板实例化 一.函数模板 1.简单使用 函数模板代表了一个函数家族&#xff0c;该函数模板与类型无关&#xff0c;在使用时被参数化&#xff0c;根据实参类型产生函数的…