Linux操作系统的vim常用命令和vim 键盘图

       在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执行一次。例如,在命令模式下按j键表示光标向下移动1行,而在命令模式下输入10j则表示光标将向下移动10行。显然,这样比单纯移动键盘光标键效率要高。

1、定位光标

由于文件内容的插入、删除和替换等操作都是针对光标所在的字符或行而言的,因此应该熟悉光标移动的命令和方法,并充分利用命令重复执行的次数。

w   将光标移动到下1个单词的第1个字符。

W    将光标移动到后面第2个单词的第1个字符

e或E    将光标移动到下1个单词的最后1个字符

b或B   将光标移动到前1个单词的第1个字符

/string   向后移动光标,并使之停留在字符串string的第一个字符处

?string    向前移动光标,并使之停留在字符串string的第一个字符处

$     将光标移动到本行的最后1个字符上

Ctrl+b   将光标移动到本行的第1个字符上

其中,w或W命令的差别只是在于非空格分割字符上,w命令视非空格分隔字符为单词,而W命令则忽略它。当使用/string或?string命令时,除了光标移动到指定的位置外,还使文件中所有符合字符串string的地方高亮显。

2、插入或添加

无论是插入还是添加,都是向所编辑的文件中加入新的内容,但由于插入可以在光标前或当前行前,添加可以在光标后或当前行后,所以vi提供了多种插入和添加命令:

i   在光标前插入字符

I   在当前行的行头插入字符

a   在光标后添加字符

A   在当前行的行尾添加字符

o    在当前行后添加新行

O   在当前行前添加新行

由于这6个命令都会使vi编辑器从命令模式切换到文本编辑模式下的插入状态,所以当插入或添加完成后,必须按ESC键返回到命令模式下。

3、删除

删除文本文件中的内容,可以按照字符、单词和行为单位进行删除,因此,也有多个删除命令。删除命令执行后将使vi继续处于命令模式下。

x    删除光标所在位置的字符,且光标移动到本行的下1个字符

nx  删除光标所在位置的n个字符

X    删除光标所在位置的前一个字符,且光标停留在原来的字符上

D    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾

dd     删除光标所在的行,且光标移动到下1行

ndd  从光标位置开始删除 n 行

dw     删除光标所在位置到下一个单词的第一个字符间的所有字符,且光标移动到下一个单词的第一个字符。

4、查找

在文件中查找字符串时,可以向前查找也可以向后查找,因此有两种命令,其格式为:

/expression

?expression

其中,斜杠(/)表示从当前位置开始向后查找,问号(?)表示从当前位置开始向前查找,expression是正则表达式。如果正则表达式是字符串且包含:. ^ $  / ~等特殊字符(元字符),则查找包含这些特殊字符的字符串时,一定要在它们每一个前面加上反斜杠(\)字符表示转义。

查找字符串~/yt-3.1.8,在命令行模式下输入:/\~\/yt-3\.1\.8,注意:要在

每1个标签字符前都要使用转移字符。

5、修改

在vi编辑器中修改文本文件内容的命令主要是删除指定的字符或行并输入新的字符,替换指定的字符或行。

s    删除光标所在位置的字符,且光标移动到下1个字符上。然后进入

文本编辑模式下的插入状态,等待用户输入

S    删除光标所在行,且光标仍在本行的行首,然后进入文本编辑模式下的插入状态,等待用户输入

按2次c    与S命令功能相同

C或c$    删除光标所在位置到行尾的所有字符,且光标停留在本行的行尾,然后进入文本编辑模式下的插入状态,等待用户输入

r    用r命令后输入字符替换当前光标位置处的字符。1次只能替换1个字符,如果是相同连续的字符可以用nnr命令的形式。

R    使用该命令会使用vi进入文本编辑模式的替换状态,在屏幕的左下方显示“REPLACE(替换)"状态信息。在这种状态下,从当前光标所在的位置开始,

新输入的字符将逐个替换原有的字符,直到用户按下Esc键返回命令模式为止。

注意:s、S、C、c$命令是修改命令,它们与x、X、D、d删除命令不同的地方在于删除字符或行后vi的工作模式转变,等待用户插入字符修改。R、r是替换命令,此时vi是文本编辑模式下的替换状态而非插入状态,输入的新字符将覆盖旧字符,所以在输入时一定要注意是否覆盖了不该覆盖的字符。

6、剪切与粘贴

在文本文件编辑中,经常需要将某处的1个句子或若干行文本移动或复制到本文件的其他地方,这就需要编辑器有剪切和粘贴的功能。

vi中的缓冲区分为通用缓冲区和专用缓存区,在一般情况下,最近1次的抽取、删除、插入和修改的内容都将存放在通用缓冲区中。利用这些缓冲区可以非常方便地实现文件内容的剪切和粘贴。

按2次y   将光标所在行的内容复制到通用缓冲区,该命令也称为抽取。

p    取出通用缓冲区中的内容放在光标所在位置的后面,即粘贴。

复制多行可以使用nnyy命令。另外,D、dd、O等删除、插入命令也是以行为单位将处理的内容放入通用缓冲区的。

7、撤销操作

使用编辑器的用户都会希望有撤销操作的命令。在vi编辑器中使用u键可以恢复。

8、几个特殊的命令

J命令 合并第n行与第n+1行,使用时,将光标移动到第n行上按J键即可。

.命令 重复执行前一条操作命令。

~命令  改变光标所在位置字母的大小写,即大写变小写,小写变大写。

9、移动光标

ctrl+b   屏幕往后移动一页

ctrl+f   屏蔽往前移动一页

ctrl+u   屏幕往后移动半页 

ctrl+d   屏幕往前移动半页

shift+l   光标移动到屏幕最后一行

shift+h   光标移动到屏幕第一行

shift+m  光标移动到屏幕中间一行

数字 0   移动到文件的开头,本行开始位置

G   移动到文件的最后

nG   光标移动到文件第 n 行

gg   光标移动到文件第一行,相当于 1G

$    移动到光标所在行的末尾

^   移动到光标所在行的行首

10、末行模式操作

在使用末行模式之前,请记住按住 'esc' 键确定忆经处理命令行模式后,再按冒号“:”即可进入末行模式。

set nu   显示行号

set nonu  隐藏行号

set ic  搜索时忽略大小写

set noic 取消搜索忽略大小写

n  跳转到文件的某一行,“n”表示一个数字,如输入数字15,再回车就会跳到文件的第15行

!cmd  运行 shell命令cmd

-------附加语法-------
ESC:%s/origanl/new/g

%s 表示替换文本。
origan 表示原文
new 表示新的内容
/g 表示全文替换,如果仅替换第一个则不需要/g

需要注意如果要替换的内容中包含特殊含义的字符,需要使用转义符转义

例如

:%s/\\/\//g 表示把所有 反斜杠 \ 替换成正斜杠 / 拆开来看
:%s 表示要替换
/ 语法分隔
\ 第一个 \ 表转义,第二个 \ 表示反斜杠
/ 语法分隔
/ \ 表转义, / 表示正斜杠
/ 语法分隔
/g 表示全文替换

vim键盘图:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03:HAL---中断

目录 一:中断 1:简历 2:AFIO 3:EXTI 4:NVIC基本结构 5:使用步骤 6:设计中断函数 二:中断的应用 A:对外式红外传感计数器 1:硬件介绍 2:计数代码 B:旋转编码计数器 1:硬件介绍 2:旋转编码器代码 C:按键控制LED D:代码总结 一:中断 1:简历 中断:在主程序…

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(五)——多条件搜索并分页展示

前后端数据交互 书接上文,我们上节课通过前后端数据交互实现了分页查询和单条件搜索分页查询的功能,最后留了个小尾巴,就是把其他两个搜索条件(email,address)也加进来,实现多条件搜索并分页展示。这节课我…

ThreadLocal 内存泄漏问题

ThreadLocal 用于存储线程本地的变量,如果创建了一个 ThtreadLocal 变量,在多线程访问这个变量的时候,每个线程都会在自己线程的本地内存中创建一份变量的副本,从而起到线程隔离的作用。 Thread、ThreadLocal、ThreadLocalMap 之…

RabbitMQ架构详解

文章目录 概述架构详解核心组件虚拟主机(Virtual Host)RabbitMQ 有几种广播类型 概述 RabbitMQ是⼀个高可用的消息中间件,支持多种协议和集群扩展。并且支持消息持久化和镜像队列,适用于对消息可靠性较高的场合 官网https://www.…

ShardingSphere-SQL 解析 Issue 处理流程

ShardingSphere-SQL 解析 Issue 处理流程 这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。 ShardingSphere SQL 解析 issue 列表 Issue 背景说明 当前 Issue 使用自定义的爬虫脚本从对应的数据库官…

数据中台驱动:高效交付之道

如何保证数据中台高效交付? 在数据行业中,项目交付难题尤为突出,尤其在数据中台领域。数据中台项目交付面临诸多挑战,若不妥善解决,将会降低服务质量,影响企业数字化建设的顺利开展,甚至影响项目…

智能合约语言(eDSL)—— proc_macro实现合约init函数

我们通过属性宏来实现合约的init函数,call函数其实和init是类似的; GitHub - XuHugo/xwasm 构建属性宏,要在cargo.toml里面设置一些参数,这是必须的。一般来说,过程宏必须是一个库,或者作为工程的子库&…

桑晋秋:个性化头相关传递函数的研究动态及展望 | 演讲嘉宾公布

一、3D 音频专题论坛 3D 音频专题论坛将于3月27日同期举办! 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验,跨越时空的限制,探索未知的世界。同时,提供更加丰富、立体的情感表达和交流方式,让人类能够更加深入地…

前端javascript的DOM对象操作技巧,全场景解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 所属的专栏:前端泛海 景天的主页:景天科技苑 文章目录 1.js的DOM介绍2.节点元素层级关系3.通过js修改,清空节点…

第九篇 – 过程发现(Process Discovery)是如何赋能数字化市场营销全过程?- 我为什么要翻译介绍美国人工智能科技巨头IAB公司

IAB平台,使命和功能 IAB成立于1996年,总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司,互动广告局(IAB- the Interactive Advertising Bureau)自1996年成立以来,先后为700多家媒体…

Kubesphere前端项目分析

1 KubeSphere console功能导图 模块: 命令行工具 (kubectl) 日志(Logging) 平台设置(Platform Settings) 服务组件(Service Components) 监控和警报(Monitoring & Alerting&…

iOS-系统弹窗调用

代码: UIAlertController *alertViewController [UIAlertController alertControllerWithTitle:"请选择方式" message:nil preferredStyle:UIAlertControllerStyleActionSheet];// style 为 sheet UIAlertAction *cancle [UIAlertAction actionWithTit…

纳斯达克大屏:NASDAQ广告大屏多少钱?

大舍传媒 近期,美国纽约纳斯达克大屏广告(NASDAQ广告大屏)备受瞩目,众多企业纷纷关注其广告投放效果以及费用。纳斯达克大屏广告的价格究竟是多少呢?下面我们从事件的经过、相关背景信息以及对其影响和意义的分析等方…

革命性创新!AI大模型开发崭新风貌

在当今科技日新月异的时代,人工智能(AI)作为一项颠覆性的技术,正以革命性的创新改变着我们的生活方式和工作方式。而在AI领域中,大模型的开发更是成为了展示技术实力和提升智能化水平的重要标志。 随着数据量的不断增…

STM32 NAND FLASH知识点

1.NAND FLASH的简介 NAND FLASH 的概念是由东芝公司在 1989 年率先提出,它内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。 NAND FLASH 存储器具有容量较大,改写速度快等优点,适用于大量数据的存储&…

windows关闭copilot预览版

如果用户不想在windows系统当中启用Copilot,可以通过以下三种方式禁用。 第一种:隐藏Copilot 按钮 右键点击任务栏,取消勾选“显示 Copilot(预览版)按钮”,任务栏则不再显示,用户可以通过快捷键…

外包干了5天,技术退步明显。。。。。

在湖南的一个安静角落,我,一个普通的大专生,开始了我的软件测试之旅。四年的外包生涯,让我在舒适区里逐渐失去了锐气,技术停滞不前,仿佛被时间遗忘。然而,生活的转机总是在不经意间降临。 与女…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…

Kafka MQ 主题和分区

Kafka MQ 主题和分区 Kafka 的消息通过 主题 进行分类。主题就好比数据库的表,或者文件系统里的文件夹。主题可以被分为若干个 分区 ,一个分区就是一个提交日志。消息以追加的方式写入分区,然 后以先入先出的顺序读取。要注意,由…

uniapp 手写 简易 时间轴 组件

一、案例如图 该案例设计条件: 左侧时间 和竖线、点、内容都是居中对其的,上下时间点中间要有一段距离 二、编写逻辑 1. 布局结构:一共三个元素,左侧是时间和黑点,中间是线条,右侧是内容 2. 样式难点&#…