嵌入式全栈开发学习笔记---vim编辑器

news2025/1/11 15:06:15

目录

进入vim编辑器

Shift+zz退出编辑器

vim的三种模式

命令模式

插入模式

yy复制一行

p粘贴一行

nyy复制多行

dd剪切一行

ndd剪切多行

x删除一个字符

nx删除多个字符

u撤销上一次操作

shift+g从第一行如果快速调到最后一行

gg回到第一行

page+down & page+up往下翻页&往上翻页

home & end去行末&回到行首

“ * ”查找

底行模式

冒号进入底行模式

w+回车 q+回车 wq+回车 wq!+回车

冒号底行模式下直接输入数字

斜杠进入底行模式

/ 关键字

n查找下一个

nohl去掉高亮

set nonu关闭行号

set nu调出行号

%s/old/new将old替换成new

Esc键退出编辑器的某种模式


vim是Linux中常用的一个编辑器,之后我们写代码就是使用这个vim来写。

几乎所有的Linux里面都有一个默认的编辑器vi,但是有一些Linux系统没有vim,如果没有vim就可以用vi。但是大部分Linux都是有vim的。

进入vim编辑器

当我们输入vim按回车键之后就进入了vim编辑器

Shift+zz退出编辑器

想要退出的话按shift+zz

vim的三种模式

命令模式

插入模式

底行模式

现在我们来挨个介绍这三种模式下的工作命令

命令模式

vim如何进入命令模式?

比如,我们想要用vim打开一个hello.c文件,我们输入:

这个时候vim就是检测hello.c是否存在,如果不存在,它就会创建一个再打开,如果存在它就直接打开

当你敲下回车时,就进入了hello.c文件,进来之后默认是命令模式。

注:如果想要退出,一样可以按shift+zz

插入模式

我们要让它进入插入模式,就可以往里面插入一些东西。

vim如何进入插入模式?

通过按键i(insert插入)或者a(append附加)进入插入模式

当我们按下i或者a之后,它就提示我们就进入了插入模式

注:如果想要退出插入模式,可以按键盘上的Esc键退出,退出后这里就没有“插入”两字的提示了,这个时候即为命令模式。

当我们处于插入模式时,我们就可以在里面敲代码了

比如我们简单演编辑一个C言语程序

yy复制一行

如果我们想要复制东西的时候,一定要先退出插入模式,进入命令模式。

比如想要复制头文件,就把光标放在头文件所在行,按yy就复制好一行

p粘贴一行

那比如说我们粘贴在第8行,就把光标放在第7行,按一下p就粘贴在第8行了。

nyy复制多行

如果想要复制多行,就按nyy,比如想要复制7行,就按7yy

然后想要复制在第11行将光标放在10行,按p就粘贴下来了

dd剪切一行

如果想要剪切一行,就按dd。

比如想要剪切这个:

那就光标移动到这一行,

按dd就剪切掉了

剪切掉之后,下一行会自动顶上这个位置。

ndd剪切多行

如果想要剪切10行,就是10dd

x删除一个字符

如果想要只删除一个字符,就把光标选中哪个字符就按x

nx删除多个字符

同样如果你想删除多个字符就加上数字,比如你想删除这5个字符,就按5x

u撤销上一次操作

如果你删错了想要撤销就按u

shift+g从第一行如果快速调到最后一行

gg回到第一行

以上这些命令都是在命令模式下进行的,不要在插入模式下进行!

page+down & page+up往下翻页&往上翻页

如果我们写的代码超出了一个窗口了,想要翻回到上面看看,这个时候,我们滚动鼠标,你会发现窗口没有往上滚动,这和我们用其他代码编辑器的操作不太一样,我们应该怎么办呢?

一般在Linux中我们不采用滚动鼠标的方式往前或者往后看,我们一般是按键盘上的方向键,page+down,page+up,表示翻页。

home & end去行末&回到行首

如果我们的光标在这里:

我们想要让它快速移动到这一行的末尾,我们按键盘上的end键

想要回到开头,就按home键

“ * ”查找

如果你想要查找,比如说这里有一个main,你想要查找下一个main怎么办?

把光标main的m字母上,按一下shift+8,即“*”号(用于查找),光标就可以跳到下一个main了

可以发现,光标调到下一个main的同时,它还用其他颜色标注出其他main的位置。

底行模式

最后一个是底行模式,注意,一定是从命令模式才能切换到底行模式。

怎么从命令模式进入底行模式呢?

有两种方式:

冒号进入底行模式

第一种是用“:”一个冒号来进入底行模式。

当底部出现一个冒号时表示已经在底行模式。

进入冒号底行模式能干什么呢?

w+回车 q+回车 wq+回车 wq!+回车

处于这个模式下,我们输入w+回车就是保存,q+回车是退出,wq+回车就是保存并退出(shift+zz也是保存退出)。有时候在可以强制保存退出,即wq!+回车。

已写入write即保存。

q其实是quit退出(电脑程序)的意思

可以输入vim hello.c再进入

冒号底行模式下直接输入数字

在底行模式下,直接输入数字能直接跳到第几行,比如说你想跳到第30行,那就调出底行模式,但是输入30,

按回车即跳转到第30行

斜杠进入底行模式

第二种进入底行模式的方式是用“/”

用这种方式进入底行模式的话能干什么呢?

/ 关键字

这种主要用于查找的,比如我们现在要查找“printf”,我们就输入“/printf”

回车后,它就自动跳转到有printf的地方

n查找下一个

这个时候按一下n就是next查找下一个

nohl去掉高亮

因为我们查找printf,因此vim给我们把所有的printf全用高亮的颜色标注出来了,如果停止查找后它不会把这些标注的颜色去掉,如果你有强迫症,可以在“:”形式的底行模式下输入“nohl”,h就是high高的意思,l 就是light亮的意思,no high light就是不要高亮的意思。

当我们这样输入后,高亮标注就没有了

set nonu关闭行号

我们想要复制代码的时候会把行号也选进去了,怎么才能不把这些行号复制进去呢?

在冒号底层模式下输入“set nonu”就是set no number设置没有标号的意思,当我们这样输入后,回车就发现左侧的这一整列行号全不见了

这样等你下一次关掉之后还是有行号的。

set nu调出行号

如果你想再次调出这些行号,可以输入“set nu”即set number就是设置编号的意思。

一般只是我们临时想要复制代码或者替换的时候需要关闭行号。

%s/old/new将old替换成new

如果你想替换的话,比如你想把main替换成xx,可以在冒号底行模式下,输入“%s/main/xx/”

回车

就全变成xx了

我们输入的这行命令的意思就是将mian改成xx

以上就是vim编辑器的三种模式,

注意:

Esc键退出编辑器的某种模式

以上命令一定要熟悉掌握!

如有问题可评论区或者私信留言,如果想要进交流群请私信! 

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

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

相关文章

arp欺骗详解

目录 arp攻击原理 arp协议简介 arp攻击原理 arp实验 实验环境 实验步骤 1、使用ipconfig命令查看靶机(window10)的IP地址为下一步攻击做好准备,这一步是模拟你获取对方IP的过程 2、使用ifconfig查询查看攻击者(kali&#x…

Windows如何通过wsl2迅速启动Docker desktop的PHP的Hyperf项目容器?

一、安装WSL 什么是WSL? 官网:什么是WSL? Windows Subsystem for Linux (WSL) 是一个在Windows 10和Windows 11上运行原生Linux二进制可执行文件的兼容性层。 换句话说,WSL让你可以在Windows系统上运行Linux环境,而无需…

【套接字-Socket】学习笔记(更新中)

【套接字-Socket】学习笔记 套接字(Socket)的概念TCP通信流程Socket编程中的细节字节序IP地址转换主机字节序 -> 网络字节序网络字节序 -> 主机字节序 参考资料 套接字(Socket)的概念 TCP/IP网络模型有四层:网络接口层、网络互连层、传输层和应用层。 当应用…

GCB | 陆地生态系统C:N:P化学计量对降水变化的响应

西北农林科技大学水保学院上官周平研究员团队在陆地生态系统C:N:P化学计量对降水变化的响应方面取得新进展,并以“C:N:P stoichiometry of plants, soils, and microorganisms: Response to altered precipitation”为题发表在国际生态环境领域著名期刊Global Chang…

令牌技术详解

1. 问题引出 之前我们讲 Cookie 和 Session 时提到过一个用户登录的场景:当用户登录时,服务器端可以把用户的登录信息存在Session中 并返回给客户端对应的SessionID,客户端会把这个SessionID存在Cookie 中当下次访问该服务器时,…

Ubuntu如何更换 PyTorch 版本

环境: Ubuntu22.04 WLS2 问题描述: Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案: 决定不升级CUDA版本,而是使用一个与CUDA 11.5兼容的PyTorch版本,您可…

Google Test Tutorial

Google Test Tutorial 1. 简介(Introduction) google开发的测试框架 2. 术语(Nomenclature) Test Case:一组相关的测试,GoolgeTest Test Suit: 一些出版物、教科书、包括国际软件测试认证委员会资料使用的术语 GoogleTest在逐渐使用TestSuit代替TestCa…

电商致命问题,抖音小店没有流量怎么办?三个方法解决

哈喽~我是电商月月 昨天有个朋友问我,她在抖音上做网店,图的就是抖音日活量大,有了流量,也就容易出单了,但她遇到了一个尴尬的问题:就是抖音的流量并不是她店铺的流量,她上架的商品没几个人浏览…

「Java开发指南」如何利用MyEclipse启用Spring DSL?(二)

本教程将引导您通过启用Spring DSL和使用Service Spring DSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何: 为Spring DSL初始化一个项目创建一个模型包创建一个服务和操…

【深度学习基础(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

不同路径 1 2

class Solution {public int uniquePaths(int m, int n) {int[][] dpnew int[m][n];//记录到每个格子有多少种路径for(int i0;i<m;i) dp[i][0]1;for(int j0;j<n;j) dp[0][j]1;//初始化for(int i1;i<m;i){for(int j1;j<n;j){dp[i][j]dp[i-1][j]dp[i][j-1];}}return …

【IR 论文】HyDE:让 LLM 对 query 做查询改写来改进 Dense Retrieval

论文&#xff1a;Precise Zero-Shot Dense Retrieval without Relevance Labels ⭐⭐⭐⭐ CMU, ACL 2023, arXiv:2212.10496 Code: github.com/texttron/hyde 文章目录 论文速读总结 论文速读 在以往的 dense retrieval 思路中&#xff0c;需要对 input query 做 encode 来得到…

Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步

1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步 文章目录 1. Spring6 当中 Bean 的生命周期的详细解析&#xff1a;有五步&#xff0c;有七步&#xff0c;有十步每博一文案1.1 什么是 Bean 的生命周期1.2 Bean 的生命周期 …

Halcon 检测物体定位点

文章目录 get_domain 返回所有输入图像的定义域作为一个区域add_channels 给区域增加灰度值find_shape_model 发现匹配模板find_shape_models 发现最佳模板示例 get_domain 返回所有输入图像的定义域作为一个区域 Halcon 中的区域 get_domain(Image : Domain : : ) Image : …

【JavaWeb Day 2 - JS 】

JavaWeb Day 2 - JS JS背景故事1. JS 引入方式2. JS 基本语法2.2 变量2.3 数据类型2.4 运算符 3. JS 函数4. JS 对象4.1 Array对象4.2 String对象4.3 JSON对象4.4 BOM对象4.4.1 windows 对象4.4.2 location 对象 4.5 DOM 对象DOM 案例 5. JS 事件监听5.1 JS 事件绑定 及 常见事…

Docker--compose概述与部署

目录 一、概述 1. Compose简介 1.1 docker compose常用命令 1.2 Compose配置常用字段 2. YAML简介 2.1 YAML支持的数据结构 2.2 YML文件编写注意事项 2.3 Docker Compose文件结构 3. Docker-Compose安装 ​编辑 4.docker Compose撰写nginx 镜像 1. 准备环境 ​编辑…

TinyMaix在x210开发板上的移植

目录 说明 环境准备 编译代码 源程序下载 修改tm_port.文件 修改CMake文件 测试程序运行 说明 我们教学中使用的x210开发板使用S5PV210这款CPU&#xff0c;它是根据三星的smdkv210开发板进行裁剪设计的&#xff0c;这个开发板非常的老了&#xff0c;不过在有经费购买新…

如何进行面向对象分析、面向对象设计和面向对象编程

目录 1.引言 2.案例介绍和难点剖析 3.如何进行面向对象分析 4.如何进行面向对象设计 5.如何进行面向对象编程 6.总结 1.引言 面向对象分析(OOA)、面向对象设计(00D)和面向对象编程(OOP)是面向对象开发的3个主要环节。 在以往的工作中&#xff0c;作者发现&#xff0c;很多…

one command each day on Linux

url address 1.12) grep Linux下面查找文本命令grep, 类似于Window编辑器的ctrlF查找我们想要的内容, PS:对比learning skill 看一下它的基础用法,准备一个目录文件和文本文件, 打印出这个单词,或者包含有这个字母的所有字符串 [rootiZ2vc5lqzt23aweti4j777Z ~]# grep hel…

【JAVA】part5-Java集合

Java 集合 Java集合概述 Java数组的局限性 数组初始化后大小不可变&#xff1b;数组只能按索引顺序存取。 Java的java.util包主要提供了以下三种类型的集合&#xff1a; List&#xff1a;一种有序列表的集合&#xff0c;例如&#xff0c;按索引排列的Student的List&#xff1b…