Linux---04---Vim编辑器

news2024/12/31 5:14:50

一、vi/vim编辑器介绍

vi 是 visual interface 的简称,是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于Windows中的记事本。

vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辩别语法的正确性,极大方便了程序的设计和编辑性。

安装vim

yum -y install vim

1.1 工作模式

vi编辑器有3种模式:命令模式、输入模式、底行模式(也叫底线命令模式)。

  • 命令模式:使用 vi 编辑器时,默认处在命令模式。该模式下,所敲的按键都被编辑器理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。

  • 输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当完成修改输入等操作需要保存文件,需要先返回命令模式,在进入末行模式保存。

  • 底行模式:在命令模式下输入英文的冒号 :即可进入底行模式,通常用于文件的保存、退出。

vi三种模式的关系

命令模式相当于一个中转站,即无论当前处于何种模式,都可通过按 Esc 键进入命令模式中,再根据所需继续完成后续操作。

1.2 编辑文件

命令格式:

vi 文件路径
vim 文件路径
  • 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件

  • 如果文件路径表示的文件存在,那么此命令用于编辑已有文件

1.3 保存和退出

q quit

底行命令作用
:w保存(只是对当前文件进行保存操作,并没有退出这个文件)
:q退出,注意文件必须先保存,然后才能退出
:wq保存并退出
:q!强制退出(此时文件未保存)

已有文件

一般情况下,编辑完文件后,使用:wq保存并退出文

新文件

如果文件已经有文件名,在末行模式直接输入w保存,如果没有文件名,输入w 文件名进行保存。

\

另存为

那么在vi中也可以另存为,就是在保存完以后,再使用w 另存为文件名。

1.4 光标的移动

光标方向的移动,除了可以使用方向键,还可以使用以下命令 :

向上移动光标:k

向左移动光标:h

向右移动光标:l  

向下移动光标:j

1.5 翻页命令kk

Ctrl+F向前翻整页

Ctrl+B向后翻整页

Ctrl+U向前翻半页  

Ctrl+D向后翻半页

1.6 行内快数跳转

^移动到本行行首  

$移动到本行行尾

1.7 显示行号和取消行号(底行模式使用)

set nu显示行号  

set nonu取消行号

1.8 在命令模式下,使用以下命令可以快速的在行间跳转

gg跳转到文件首行  

G跳转到尾行  

G跳转到文件的#行

二、编辑操作

2.1 进入输入模式命令

i 插入命令

a 附加命令

o 打开命令

c 修改命令  

r 取代命令

s 替换命令

Esc 退出命令

2.2 输入模式的操作

Home光标到行首

End 光标到行尾  

Page Up和Page Down上下翻页

Delect删除光标位置的字符

2.3 删除操作(命令模式使用)

x删除光标处的单个字符  

dd删除光标所在行  

dw删除当前字符到单词尾包括空格的所有字符

x例如3x删除光标处向右的三个字符  

dd例如3dd从当前行开始向下删除三行文本  

2.4 撤销操作

u命令取消最近一次的操作,可以使用多次来恢复原有的操作

U取消所有操作  

Ctrl+R可以恢复对使用u命令的操作  

2.5 复制操作

yy命令复制当前整行的内容到vi缓冲区  

yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词  

y$复制光标所在位置到行尾内容到缓存区   

y^复制光标所在位置到行首内容到缓存区  

yy例如:5yy就是复制5行  

yw例如:2yw就是复制两个单词  

如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。

2.6 搜索和替换

在vim/gvim的命令模式,按“/”或者“?”后面跟所要搜索的内容,然后按回车开启搜索:

/str
?str

进入搜索模式后,按“n”表示寻找下一个,按“N”(shift + n)表示寻找上一个。

2.6.1 模糊搜索

/\<world\>

2.6.2 忽略大小写的搜索

缺省条件下vim的搜索是case-sensitive(大小敏感的) ,可以用属性“\c”来告诉vim在搜索时忽略大小写

/\<pattern\>\c
​
/ll\c

2.6.3 高亮搜索结果

:set hlsearch
:set nohlsearch

2.6.4 替换

「r」:替换光标所在处的字符。 ,按一下"r"然后输入要即可.

「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

恢复上一次操作

「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。

按多次"u"可以执行多次恢复.就相当于"CTRL +Z"的操作.

在命令模式下使用“s/原字符/新字符/g” 代表当前行所有

如果想全局替换,s变为%s

:%s/原字符/新字符/g

:%s/ll/xx/g

2.7 异常退出恢复文件

异常退出:指的是在编辑文件之后没有正常的保存退出,而是通过直接关闭终端或者强制退出的方式来退出文件。

vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,在下次编辑时会显示下图的效果:

  • O只读打开,不改变文件内容  

  • E继续编辑文件,不恢复.swp文件保存的内容  

  • R将恢复上次编辑以后未保存文件内容  

  • Q退出vi  

  • D删除.swp文件  

  • 或者使用vi -r 文件名来恢复未保存的内容

方式二

只需要将交换文件删除即可正常编辑文件了 (在上述的提示界面下按 D 键或通过 rm 指定删除交换文件)

rm -rf 文件名

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

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

相关文章

Using locally deployed llm with langchain‘s openai llm wrapper

题意&#xff1a;使用本地部署的LLM与Langchain的OpenAI LLM封装器 问题背景&#xff1a; I have deployed llm model locally which follows openai api schema. As its endpoint follows openai schema, I dont want to write separate inference client. 我已经本地部署了…

Mybatis框架介绍

Mybatis入门 MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Jav…

IT管控体系建设(集团企业),附网传埃森哲案例

&#xff08;一&#xff09;集团IT企业IT管控组织结构设计 1.集团分管领导 职能&#xff1a;最高级别的管理&#xff0c;负责对整个集团的信息化管控进行监督和决策。 2.CIO/管理部主任 职能&#xff1a;负责整体的IT战略和方向&#xff0c;直接向集团分管领导汇报。负责协…

一分钟了解:Java 冒泡排序算法

1. 冒泡排序算法介绍 冒泡排序是最简单的排序算法&#xff0c;如果相邻元素的顺序错误&#xff0c;则通过反复交换相邻元素来工作。Java 中的冒泡排序不是对数组进行排序的最佳方法&#xff0c;但却是最基本的实现之一。在本文中&#xff0c;我们将学习如何用 Java 编写冒泡排…

「Pytorch」解析 nn.Embedding 词嵌入 及反推输入

在Pytorch里面有三种编码方式&#xff0c;Embedding 就是其中之一&#xff0c;不同于 one_hot 需要用同长度的张量存 Embedding将单词映射为稠密向量&#xff0c;并且指定 embedding_dim维度。通过 Embedding层 转换的数据并不是经过词典映射的&#xff0c;而是原始数据。Embed…

VirtualBox扩容VDI虚拟磁盘

环境 虚拟机软件&#xff1a;VirtualBox虚拟机&#xff1a;Ubuntu 18.04.1 第一步&#xff1a;调整虚磁盘大小 方法1&#xff1a;使用VirtualBox管理器直接修改 关闭虚拟机&#xff0c;点击VirtualBox管理器菜单管理>虚拟介质管理&#xff0c;重新设大小 方法2&#x…

【Linux基础】对Linux权限的理解与管理

目录 &#x1f680;前言一&#xff0c;有关用户二&#xff0c;Linux权限管理1. 文件访问者的分类(人)2. 文件类型和访问权限(事物属性)2.1 文件类型2.2 文件/目录的基本权限 三&#xff0c;文件权限值的表示方法3.1 字符表示方法3.2 八进制数值表示方法 四&#xff0c;文件访问…

服务器是什么?怎么选择适合自己的服务器?

在这个数字化的世界中&#xff0c;我们每天都在与各种网站打交道&#xff0c;浏览新闻、购物、看视频等。你是否曾经好奇过&#xff0c;这些网站是如何运行的&#xff1f;它们又是如何实现随时随地可访问的呢&#xff1f; 在这背后&#xff0c;有一个神秘的角色在默默地支撑着…

数据结构与算法 - 贪心算法

一、贪心例子 贪心算法或贪婪算法的核心思想是&#xff1a; 1. 将寻找最优解的问题分为若干个步骤 2. 每一步骤都采用贪心原则&#xff0c;选取当前最优解 3. 因为没有考虑所有可能&#xff0c;局部最优的堆叠不一定让最终解最优 贪心算法是一种在每一步选择中都采取在当前…

letcode 分类练习 树的遍历

letcode 分类练习 树的遍历 树的构建递归遍历前序遍历中序遍历后序遍历 迭代遍历前序遍历中序遍历后序遍历 层序遍历层序遍历可以解决的问题107. 二叉树的层序遍历 II199. 二叉树的右视图637. 二叉树的层平均值429. N 叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的…

掌机系统MuOS游戏名称中文乱码解决主题

最近买了安伯尼克的rg35xxh掌机来玩儿&#xff0c;然后刷了muos&#xff0c;系统很小巧&#xff0c;1g的运行内存&#xff0c;系统运行的时候只占用了不到100m&#xff0c;而且界面也很美观&#xff0c;就是有一个问题——中文名称会乱码&#xff0c;都变成了方框&#xff0c;从…

如何给IP地址开启https—IP证书

先IP地址申请的前提&#xff1a;80端口有打开&#xff0c;或者可以短暂的打开10分钟左右等验证完IP管理权再关掉。 一&#xff1a;访问JoySSL官网&#xff0c;注册账号并填写注册码230922&#xff0c;选择IP地址证书并下单加入购物车&#xff0c;下单之后就会跳转到证书申请界…

Linux--应用层协议HTTP协议(http服务器构建)

目录 1.HTTP 协议 2.认识 URL 3.urlencode 和 urldecode&#xff08;编码&#xff09; urlencode&#xff08;URL编码&#xff09; urldecode&#xff08;URL解码&#xff09; 4.HTTP 协议请求与响应格式 4.1HTTP 常见方法&#xff08;三种&#xff09; 5.HTTP 的状态码…

C++:命名空间与输入输出

目录 前言 一、命名空间 1.1 namespace的价值 1.2 namespace的定义 1.3 命名空间的使用 二、C输入&输出 前言 C是一种面向对象的计算机程序设计语言&#xff0c;‌它扩展了C语言的功能&#xff0c;‌并引入了面向对象编程的概念&#xff0c;‌如类、‌继承和多态等&a…

【笔记】从零开始做一个精灵龙女-画贴图阶段(下)

补充四点&#xff0c;第一&#xff0c;前期画体积用一号或十三号笔刷&#xff0c;压力60&#xff0c;硬度80&#xff0c;体积大一点 2号笔刷比较适合画过渡和软一点的东东 第二&#xff0c; 游戏里面角色原画海报都是发光很亮很透。但是在bp不能画那么亮&#xff0c;因为你进…

git强制推送代码教程

git强制推送代码教程 首先说明情况&#xff0c;我的代码remote了两个git库&#xff0c;现在想要推送到其中一个&#xff0c;但是版本不对&#xff0c;被拒绝&#xff0c;因此下面将进行强制推送 首先检查远程库都有哪些 git remote -v2. 检查当前的分支 git branch当前分支前…

Python 初学者入门:揭秘 Anaconda

初学者在学习 Python 时&#xff0c;经常看到的一个名字是 Anaconda。究竟什么是 Anaconda&#xff0c;为什么它如此受欢迎&#xff1f;在这篇文章中&#xff0c;我们将探讨 Anaconda &#xff0c;了解 Anaconda 的从安装到使用的。 Anaconda 是一个免费开源的 Python 和 R 编…

PCL 三线性插值

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 三线性插值是一种在三维空间中使用已知数据点进行插值的方法。它是在立方体内的插值方法,通过利用立方体的八个顶点的已知值来估算立方体内任意一点的值。三线性插值扩展了一维的线性插值和二维的双线性插值。其基…

数据结构入门——06树

1.树 树&#xff08;Tree&#xff09;非线性数据结构&#xff0c;它是n&#xff08;n≥0&#xff09;个节点的有限集合&#xff0c;它满足两个条件 &#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b; 其余的节点可以分为m&#xff08;m…