Linux学习记录——오 vim基本知识

news2024/11/16 9:48:47

**

Linux开发工具

**

Linux开发工具——vim

vim最小集

vim是一个多模式编辑器,vi也一样,但vim兼容了vi的所有指令,还有一些独有的特性,本篇只针对vim展开。vim有各种模式,每个模式的用法都有差别,模式之间也可以相互切换。不过常用的就是3~5种模式。像vs,我们写代码,执行程序都可以在vs上实现,这也就是一个集成开发环境,也就是IDE。vim虽然也可以集成,但一般不会这样做,并不适合。vim是一个单纯的编辑器,只用来写代码,linux上调试工具用gdb,编译用gcc,各司其职。vim的模式中,常用的5个是命令模式,底行模式,插入模式,视图模式,替换模式。这篇会写到命令,底行,插入模式。

vim 文件名,如果没有文件vim就会自动创建这个文件,当然也可以先touch一个再操作。打开后默认的是命令模式,此时输入代码式没有效的,即使屏幕上显示出了操作者输入的字母。想要正常的写代码,需要进入插入模式,进入的方法有很多,这里只写一种,输入i,左下角会出现INSERT,这就意味着我们可以写代码了。但是这里和vs不一样,如果没有对vim进行配置,那么这时候的vim和一个记事本一样,没有自动缩进,所以字符都需要自己敲,比如双括号,就得输入两个括号才行;缩进也得空格四下。先不说配置的问题,至少模式是有的,字符高亮是有的,代码也可以写。

在这里插入图片描述

写一段简单的代码。因为我是配置过的vim,左边带有数字序号,没有配置的不会有。
想要退出的时候,在插入模式下无法退出,得回到命令模式,回退的方式就是一个万能用键,esc。这时候左下角的INSERT就消失了,vim处在命令模式下,然后shift + :,vim就会进入底行模式,左下角就出现了一个冒号,冒号后输入的字母看这个图片!

在这里插入图片描述

我们先忽略上面三个,看冒号后的那四个。w是保存,q是退出,wq是保存并退出,q!是不保存退出,其实q也是一样的功能,不想保存时按q即可。

在这里插入图片描述

退出后cat一下就可以看到文件里已经有了代码。刚才提到过万能键esc,之所以是万能,是因为无论你处于哪个模式,操作的时候也已经混淆了,那么就可以直接esc进入到命令模式。命令模式可以切任何其他的模式。

vim指令集

刚才在图片中也看到了,上面还有三个指令。整个图片是按esc后可输入的东西,接下来我会写一些常用的指令,也包括图中那三个。

底行模式下, 调出和去掉行号:set nu/set nonu
大部分指令都是在命令模式下进行的,所以我们先esc。

基本操作

进入命令模式后,通过小键盘旁边的上下左右键调整光标位置,假设要复制这一行,按yy,要粘贴,按p,就会在下一行出现同样的内容。如果要粘贴好几行,在p前打上数字即可,比如3p,就是粘贴3遍。yy之前也可以加上数字,这时候yy的作用就是包括所在行,向下复制。比如光标在第3行,3yy则会复制345行。

如果后悔做一个操作,那么按u撤销即可。有趣的是,在复制的时候,光标无论在这一行的哪个位置都可以复制整个行的代码,当撤销时,光标也会来到之前你移动到的位置。回到撤销操作,如果对撤销这个操作后悔了,想撤销刚才的撤销操作,则按Ctrl + r.这两个操作可以互相使用,u,Ctrl + r,u,Ctrl + r,反复撤销…。

有个复制粘贴,自然也要有剪切。剪切的命令是dd,然后用p再粘贴。当然如果不粘贴,那么dd就相当于yy,也就是删除。dd之前也可以加上数字,表示剪切多少行,和yy一样。

总结一下

yy/nyy:复制当前行或者复制当前行在内的指定若干行
p/np:粘贴一行或者多行相同的内容到当前光标所在行之下
u:撤销刚刚的操作
Ctrl + r:对撤销进行撤销
dd/ndd:对当前行,或者当前行在内的n行的内容进行剪切

vim中,做了一系列操作后保存,那么还是可以撤销的,但是如果保存退出后,再进入就不能撤销了。

光标移动

假设已经有了几百行,我们想自由地移动光标,而不是用鼠标滑动,那么移动到尾部是shift g,其实也就是G,想移动到头部,则按gg。现在定位到一个准确的行数,比如47行,则在命令模式下按47shift g即可,所以它前面也是可以加数字的。

刚才是上下移动,现在是左右移动。左右移动到尾部shift 4 其实就是美元那个标识,头部则是shift 6,其实对应的就是上尖括号。左右移动的指令可以让光标可以快速移动:w,b就是向后,向前移动,以单词为单位。wb之前也可以加上数字,意味着移动过几个单词。

对于每个字母的大小写转变,这里用的都是同一个命令,shift ~,按一下即可变成小/大写,按住就会一直往后替换。如果不是大小写,而是要把其中一个字符换成另一个字符,那么按r后,输入要改成的字符即可,这也是一种替换。r前面也可以加上数字,表示往后替换n个字符。如果要替换整个一行的代码,则按shift r,此时就进入了替换模式,左下角出现REPLACE字符。这时候输入的内容vim就会替换过去,输入多个就替换多个。

假设要删除某个字符,按x,一直按则一直删。x前面也可以加上数字,表示删除n个字符。而shift x则是往前删除,也就是X。

总结一下

_shift g:光标定位到文档最结尾
gg:光标定位到文档最开始
n shift g:光标定位到文档的指定行
shift 4:光标定位到文档行的结尾
shift 6:光标定位到文档行的最开始
n w, n b:按照单词为单位,进行前后移动,w向后,b向前
shift ~:快速大小写切换
n r:替换光标所在的字符
n x:行内删除,左-右
n shift x:行内删除, 右-左
_

扩展

h,j,k,l移动光标,释放鼠标。
h左移,l右移,j下移,k上移。

关于插入模式的进入,除了按i,再写两个其他方式。
按a,光标会向后移动一下;按o则是光标向下再开一行。左下角都是INSERT。其他按键搜索一下效果就行,作用都一样。

底行模式的一点代码

在底行模式时,/后跟上内容,就会进行搜索和这个内容所有出现的地方,并加上高亮,按n就可以指向第一个位置处,持续按就一直往下找。 底行模式下,有时候wq可能无法正确实现功能,后面加上!即可强制进行,比如w! q! wq!。

退出后我们可以通过gcc编译然后./a.out执行。如果在vim里面进行编译,那么在底行模式下,也可以输入在外面输入的内容,编译:!gcc test.c, 实现代码:!./a.out。

如果想整体替换某些内容,在底行模式输入%s/原本内容/替换内容/g,g代表全部。

在之前写C语言时,我们经常用到头文件,源文件,在vim里也可以这样。底行模式下,vs 后面跟上一个文件,vim就会自动分屏,分成两个。当然继续创建文件还会分屏。分屏后,有两个区域,那么如何判断当前在哪里写代码?在分屏时,光标在哪里编写代码就在哪里。如果想编写另一个区域,也可以。这里写两个办法。按住ctrl,快速按两下w。这样我们就可以把一个文件的内容复制到另一个里。

创建多个文件后,如何退出文件?光标在哪里,那么进入底行模式后,如果不想保留文件,那么q就会退出这个文件,然后光标在移动到其他文件,继续退出。

结束。

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

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

相关文章

【数据在内存中的存储】肝货满满

前言 我们知道在C语言中的基本内置类型: char //字符数据类型short //短整型int //整形long //长整形long long //更长的整形float //单精度浮点型double //双精度浮点型 那么这些类型是如何存储的呢? 回顾指针类型: *int pi*char pc*float…

String的讲解(Java系列9)

目录 前言: 1.String 1.1字符串的构造 1.2Sting对象的比较 1.3字符串的查找 1.4字符串的转化 1.4.1数值和字符转换 1.4.2大小写转换 1.4.3字符串转数组 1.4.4格式化 1.5字符串的替换 1.6字符串拆分 1.7字符串截取 1.8字符串去空格 1.9字符串的不可变…

Matplotlib笔记 · 绘图区域的结构和子图布局与划分(figure, axes, subplots)

文章目录1. 绘图区域的结构2. subplot系方法 ( subplot布局 )2.1 使用 add_subplot(nrows, ncols, index) 逐一创建子图2.2 控制子图大小和位置 ( add_subplot(nrows, ncols, index) 参数详解 )2.3 使用 subplots(nrows, ncols) 批量创建多张子图3. axes系方法 ( axes布局 )3.1…

基于张量变换域低秩正则化的图像恢复方法

高光谱图像、磁共振图像、RGB图像等都可以表示成三维数组的形式,在数学上将这种多维数组称为高阶张量,同样,上述三种图像都可以表示成三阶张量。在空间上,图像本身就具有结构相似性,在高光谱图像的第三个模态上&#x…

日志分析工具

iis、windows日志做日志分析比较麻烦,这里找到了一款好用的免费的日志分析工具 Log Parser Lizard,下载这个工具之前建议先安装LogParser虽然他会自动弹窗提示。 1. 安装软件 安装没什么好说的一直下一步下一步就行 启动之后点击OK 弹出激活页面让激活…

mod函数怎么取模

mod 是 MySQL 中的数值函数,写法为:mod(x,y),意思是返回x/y的取模的值。 什么是取模?取模就是取余数。 ① 如果第一个值比第二个值大,我整理出来的取模公式就是:第一个值-第一个值里面包含了几个第二个值相…

MATLAB-多边形填充图绘制

fill函数用于绘制并填充二维多边图形。将数据点视为多边形顶点,并将此多边形涂上颜色,便于用户理解图形中的数据代表的含义。具体调用方法如下:fill(X, Y,C):用X和Y中的数据生成多边形,用C指定颜色填充。其中C为色图向量或矩阵。若C是行向量&…

商标注册流程有什么步骤

​一、商标注册流程有什么步骤? 商标注册流程: 1、需要企业提供营业执照副本复印件和商标样稿及主要商品或服务,递交商标局; ​ 2、商标局形式审查(7-15个工作日)接到《商标注册申请受理通知书》; 3、商标局实质审查(5-8个月左右); 4、商标公告(3…

【Linux多线程编程】3. 多线程共享资源

回顾 上篇文章【Linux多线程编程】2.线程创建与回收 简单介绍了如何创建一个线程并且回收它,末尾给出了如下这段代码,本文将从这段代码入手介绍线程资源、线程共享资源、线程独占资源,并在最后引出多线程安全访问资源的方法。 /** test_pth…

新华三(H3C)的沉浮往事

根据2023年1月3日紫光股份发布的最新公告,Hewlett Packard Enterprise Company全资子公司H3C Holdings Limited(“HPE 开曼”)和Izar Holding Co,将向紫光股份全资子公司紫光国际信息技术有限公司出售其持有的新华三集团有限公司合…

【Linux】伪目标 PHONY | 探讨项目构建问题 | Makefile | 依赖关系与依赖方法

🤣 爆笑教程 👉 《看表情包学Linux》👈 猛戳订阅 🔥 💭 写在前面:本章我们要学习的是 makefile。会不会写 makefile,从一个侧面说明一个人是否具备完成大型工程的能力。一个工程中的源文件不计…

Vector - VT System - 板卡_VT1004

今天我们来聊一下导入和测量模块VT1004版本,我们从它的技术参数、通道介绍、功能介绍几个方面来全面的介绍这块板卡,废话不多说,我们直接来看这2块板卡吧。 测量模块 - VT1004 通道功能介绍: >通过继电器切换到原始负载和母线…

Qt扫盲-QSet理论总结

QSet理论总结一、概述二、使用1. 声明2. 插入元素3. 遍历元素4. 删除元素5. 集合的运算6. 其他一、概述 QSet是Qt的通用容器类之一。俗称一个集合。QSet会按未指定的顺序存储值,也就是随机存值的方式,并提供非常快速的值查找。在内部,QSet实…

python学习|第二天

文章目录1.函数函数调用函数返回值函数参数2.bug常见类型粗心类型知识点不扎实思路不清被动掉坑常见异常类型3.文件的读写打开模式文件对象常用方法with方法4.os模块操作目录相关函数5.打包成可执行文件1.函数 函数调用 p89,笔记待补 函数返回值 1)如…

微信小程序开发过程整理

目录1微信开发相关介绍1.1微信公众平台1.2微信开放平台1.3注意事项2微信小程序开发整体介绍2.1微信小程序简介2.2小程序接入流程3框架简介3.1uni-app简介3.2学习使用uni-app3.3学习微信小程序开发4开发规范5开发示例5.1开发工具5.2开发调试5.2.1导入代码5.2.2项目运行5.2.3在微…

java常见题3

11.二分查找的次数 奇数取 中间那一个作为中值 偶数个取 中间靠左 然后不断模拟这个算法 查找的最多次数:n个元素里最多查找log二N 个元素Log2 128 7 12.equals和hashCode java.lang.Object类中有两个非常重要的方法: public boolean equals(Obje…

YOLOV5模型训练

之前在博文中讲到了YOLOV5的运行,以及转tensorrt. 但是, 一个模型通常需要结合数据训练,才能得到更好的结果. 因此,我们有必要熟悉yolov5的训练过程. 执行训练的过程 Yolov5的github提供了官方的训练脚本. 第一次运行,会自动下载数据集,然后会检测到你的gpu配置,如果不对,…

【数据结构】树

树(Tree) 知识框架 树的定义 树和图一样都是非线性结构,树是n个结点的有限集合,当n0时,称这棵树为空树。 非空树有以下特征: 有且仅有一个称为根的结点。如果n>1, 除根结点以外其它结点可以分为m(m>0)个不相交的集合T1,T…

E4445A频谱分析仪

18320918653 E4445A 名称:E4445A 频谱分析仪, 3 Hz - 13.2 GHz 详细:主要技术指标 性能 /-0.24 dB幅度精度 -155 dBm/Hz显示的平均噪声电平(DNAL) 10 kHz偏置时的相噪:-118 dBc/Hz 81 dB W-CDMA AC…

春节倒计时,让我来秀一手:用Python制作一个对联生成器

前言 跨年跨完了,马上就要迎来春节了,这不得秀一手? 那就直接开始春节的表演呗 勉勉强强来用python制作对联生成器吧 效果展示 这里的话,你自己想要啥春联主题是可以搜索滴,有些地方也是可以看着改的,…