嵌入式驱动学习第一周——vim的使用
前言
本篇博客学习使用vim,vim作为linux下的编辑器,学linux肯定是绕不开vim的,因为不确定对方环境中是否安装了编译器,但一定会有vim。
对于基本的使用只需要会打开文件,保存文件,编辑文件即可。
嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程,未来预计四个月将高强度更新本专栏,喜欢的可以关注本博主并订阅本专栏,一起讨论一起学习。现在关注就是老粉啦!
行文目录
- 前言
- 一、vim编辑器
- 二、vim的模式
- 2.1 vim四种模式的切换
- 2.2 命令模式
- 2.3 编辑模式
- 2.4 可视化模式
- 2.5 末行模式
- 三、vim的常规使用
- 3.1 打开文件
- 3.1.1 打开指定文件
- 3.1.2 打开文件并指定光标
- 3.1.2 打开文件并指定光标
- 3.2 关闭文件
- 3.2.1 保存并退出
- 3.2.2 强制退出
- 3.3 设置行号
- 3.4 保存文件
- 3.5 输入文件
- 4. 命令模式下的使用
- 4.1 移动光标
- 4.2 编辑操作
- 4.3 搜索字符
- 4.4 替换字符
- 5. 可视化模式下的使用
- 5.1 进入可视化模式方法的区别
- 5.2 添加多行注释
- 5.3 去除多行注释
- 6. 使用中出现的问题
- 7. 参考文献
一、vim编辑器
vim是vi编辑器的加强版,可以全兼容vi,最明显的区别是vim可以语法加亮。
通常情况下默认已经安装好了vi或vim,只需要通过在终端输入vim即可打开vim编辑器
使用vim打开文件时,使用tab补全文件名,如果文件不存在,则会创建一个新的文件
二、vim的模式
2.1 vim四种模式的切换
vim有四种模式:命令模式,编辑模式,可视化模式,末行模式
命令模式——可进行删除、复制、粘贴等快捷操作
编辑模式——可以编辑文件内容
可视化模式——可以做一些列选操作
末行模式——可以通过命令操作文件,如搜索、保存、退出等
不同模式之间的转化需要按esc键。
2.2 命令模式
输入vim 文件名 打开文件后,默认处于命令模式,在该模式下可以移动光标位置,通过快捷键对文件内容进行复制、粘贴、删除等操作。
2.3 编辑模式
在命令模式下输入小写字母i或a或o即可进入编辑模式,在该模式下可以对文件内容进行编辑
2.4 可视化模式
在命令模式下输入小写字母v(行)或者ctrl+v(块)即可进入可视化模式,该模式下可以做一些列选操作,通过方向键选择某些列的内容,类似于windows鼠标选中
2.5 末行模式
在命令模式下输入冒号:即可进入末行模式,可以在末行输入命令对文件进行查找、替换、保存、退出等操作。
三、vim的常规使用
3.1 打开文件
3.1.1 打开指定文件
vim 文件路径
如果文件存在,则直接打开,如果文件不存在,vim会自动创建一个新文件
编辑完成后,按两下esc退出编辑
3.1.2 打开文件并指定光标
vim +行数 文件
打开后,光标会停在指定的行,默认是在首行
3.1.2 打开文件并指定光标
vim +/关键字 文件路径
打开文件时,指定的关键字会高亮
:noh 或 :nohlsearch
退出高亮
3.2 关闭文件
3.2.1 保存并退出
在任何模式下,连续按两次esc键,即可返回到命令模式,然后按:进入末行模式,输入wq即是保存并退出。
3.2.2 强制退出
在命令模式下按:q!,强制退出但不保存文件
改错文件后,可以使用不保存强制退出
q!
3.3 设置行号
正常打开是不具有行号的,在实际使用过程中,增加行号更方便对文件修改
:set nu
取消行号用如下指令
:set nonu
3.4 保存文件
另存为文件分为两种,一种是全另存为,一种是将指定的行另存为新文件,其指令分别如下所示:
:w [文件名]
:2,5w [文件名]
3.5 输入文件
将另一个文件的内容输入到光标的下一行中需要用以下指令:
:r [文件名]
4. 命令模式下的使用
vim打开文件后,默认是命令模式,如果处于其他三种模式下,可以连续按两次esc键也可以返回命令模式。
4.1 移动光标
| 指令 | 作用 |
|---|---|
| ↑ | 向上移动一个字符 |
| ↓ | 向下移动一个字符 |
| ← | 向左移动一个字符 |
| → | 向右移动一个字符 |
| Ctrl + f | 屏幕向下移动一页 |
| Ctrl + b | 屏幕向上移动一页 |
| PgUp | 屏幕向上翻半屏 |
| PgDn | 屏幕向下翻半屏 |
| fn+home | 光标移动到行首 |
| fn+end | 光标移动到行尾 |
| gg | 移动到文件的第一行 |
| G | 移动到文件的最后一行 |
vim中的数字键表示重复次数,配合其他指令简化操作,可以快速定位
行号+G,例如
10G表示直接移动光标到第10行
10↑表示可以向下移动10行
4.2 编辑操作
| 指令 | 作用 |
|---|---|
| x | 从光标开始往后删除一个字符 |
| X | 从光标开始往前删除一个字符 |
| dd | 剪切一行,继续则删除下一行 |
| D | 剪切一行,此行空白,下行不上移 |
| n(数字)dd | 光标往下剪切n行 |
| yy | 复制当前一行 |
| n(数字)yy | 光标往下复制n行 |
| p | 粘贴到下一行 |
| P | 粘贴到上一行 |
| u | 撤回 |
| Ctrl+r | 撤回刚才u的撤回操作 |
| .(小数点) | 重复刚才的操作 |
vim中,剪切和删除都是dd
如果剪切了文件,没有使用p粘贴就是删除;如果使用了p就是剪切操作
4.3 搜索字符
| 指令 | 作用 |
|---|---|
| /字符串+ 回车 | 向下搜索指定字符串 |
| ?字符串+ 回车 | 向上搜索指定字符串 |
| n | 跳到已搜索的下一个字符串 |
| N | 跳到已搜索的上一个字符串 |
命令模式下,输入/,输入要查找或搜索的关键词,然后回车
存在多个满足条件的结果,可以上下切换结果,用n和N
取消高亮则输入:noh
4.4 替换字符
| 指令 | 作用 |
|---|---|
| : s/string1/string2/g | 将光标所在行的string1替换为string2 |
| :%s/string1/string2g | 将全文的string1替换为string2 |
| :%s/string1/string2/gc | 将文件中的string1替换为string2,但替换前需要用户确认 |
| :1,10s/string1/string2/g | 将第1行到第10行的string1替换为string2 |
s 是只替换光标所在行的第一个满足条件的结果,只替换1次
/g 表示全局
%s表示对整个文档的所有行替换
1,10s表示对指定行进行替换,此处为1到10行进行替换
5. 可视化模式下的使用
5.1 进入可视化模式方法的区别
在命令模式下,按小写的v进入可视模式,可以左右上下选单个字符;而按大写的V进入可视行模式,只能上下选行;ctrl+v进入可视列模式,对文本整块选择。
5.2 添加多行注释
按
esc退出到命令模式,按gg切换到第1行
按ctrl+v进入可视列模式
使用上下键选择要注释的行
按下大写的I进入插入模式
输入注释符号(此时只显示第一行有注释,继续就行)
完成后按两次esc完成多行注释
5.3 去除多行注释
按
esc退出到命令模式,按gg切换到第1行
按ctrl+v进入可视列模式
方向键选中要移除的注释
按d删除注释
6. 使用中出现的问题
如果意外断开vim没有保存,再打开会报错
原因是已经生成了临时文件.xxx.swap,用ls -a 找到文件,并用rm -tf删掉次临时文件即可正常打开
7. 参考文献
[1] vim 编辑器使用详解
相关文章:
嵌入式驱动学习第一周——vim的使用
前言 本篇博客学习使用vim,vim作为linux下的编辑器,学linux肯定是绕不开vim的,因为不确定对方环境中是否安装了编译器,但一定会有vim。 对于基本的使用只需要会打开文件,保存文件,编辑文件即可。 嵌入式驱动…...
loop_list单向循环列表
#include "loop_list.h" //创建单向循环链表 loop_p create_head() { loop_p L(loop_p)malloc(sizeof(loop_list)); if(LNULL) { printf("create fail\n"); return NULL; } L->len 0; L->nextL; retur…...
Python爬虫实战第二例【二】
零.前言: 本文章借鉴:Python爬虫实战(五):根据关键字爬取某度图片批量下载到本地(附上完整源码)_python爬虫下载图片-CSDN博客 大佬的文章里面有API的获取,在这里我就不赘述了。 一…...
Eclipse是如何创建web project项目的?
前面几篇描述先后描述了tomcat的目录结构和访问机制,以及Eclipse的项目类型和怎么调用jar包,还有java的main函数等,这些是一些基础问题,基础高清出来才更容易搞清楚后面要说的东西,也就是需求带动学习,后面…...
Excel的中高级用法
单元格格式,根据数值的正负分配不同的颜色和↑ ↓ 根据数值正负分配颜色 2-7 [蓝色]#,##0;[红色]-#,##0 分配颜色的基础上,根据正负加↑和↓ 2↑-7↓ 其实就是在上面颜色的代码基础上加个 向上的符号↑,或向下的符号↓ [蓝色]#,##0↑;[红色…...
【ArcGIS】基本概念-空间参考与变换
ArcGIS基本概念-空间参考与变换 1 空间参考与地图投影1.1 空间参考1.2 大地坐标系(地理坐标系)1.3 投影坐标系总结 2 投影变换预处理2.1 定义投影2.2 转换自定义地理(坐标)变换2.3 转换坐标记法 3 投影变换3.1 矢量数据的投影变换…...
Qt QWidget 简约美观的加载动画 第五季 - 小方块风格
给大家分享两个小方块风格的加载动画 😊 第五季来啦 😊 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…...
针对KZG承诺和高效laconic OT的extractable witness encryption
1. 引言 2024年以太坊基金会等成员论文 Extractable Witness Encryption for KZG Commitments and Efficient Laconic OT,开源代码实现见: https://github.com/rot256/research-we-kzg(Rust) 在该论文中,提供了一种…...
Spring Boot中实现列表数据导出为Excel文件
点击下载《Spring Boot中实现列表数据导出为Excel文件》 1. 前言 本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能,并解释其背后的原理、提供完整的流程和步骤,以及带有详细注释的代码示例。最…...
华为ipv6 over ipv4 GRE隧道配置
思路: PC1访问PC2时,会先构造源ipv6为2001:1::2,目的IPV6为2001:2::2的ipv6报文,然后查看PC1的路由表,发送到R1,r1接收后,以目的IPV6地址2001:2::2查询IPV6路由表,出接口为tun0/0/0…...
项目解决方案:海外门店视频汇聚方案(全球性的连锁店、国外连锁店视频接入和汇聚方案)
目 录 一、概述 二、建设目标及需求 2.1 建设目标 2.2 需求描述 2.3 需求分析 三、建设方案设计 3.1 系统方案拓扑图 3.2 方案描述 3.3 服务器配置推荐 四、产品功能 4.1 资源管理平台 (1)用户权限管理 (2)…...
Java中的数据类型详解
引言 在Java编程中,数据类型是非常重要的概念,它定义了数据的类型和范围,帮助程序员有效地操作数据。Java的数据类型可以分为两大类:基本数据类型和引用数据类型。本文将详细介绍Java中的各种数据类型,并附上相应的代…...
ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍
ABBYY FineReader 16作为一款OCR和PDF一体化程序,其强大的功能使得文档处理变得简单高效。在众多功能中,文档转换、PDF管理和文档比较这三大功能尤为突出,成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下ÿ…...
导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统
随着元宇宙、VR、AR等新技术的快速发展,旅游服务也更加多元化、智能化。景区导览系统作为旅游服务的重要组成部分,其形式更加多元化智能化。智能导览系统作为一种新的服务方式,能够为游客提供更加便捷的旅游服务和游览体验,也逐渐…...
oracle 如何使用脚本实现访问控制(无需额外插件)
随着这些年勒索病毒的爆发,各个企业对数据安全的要求越来越高,常见的办法有开启数据库审计,加数据库防火墙,网络限制等等;但是细粒度审计会消耗大量系统资源,第三方数据库防火墙一般是需要收费的;这里介绍我个人常用的四个db级别trigger,用于记录部分关键信息可以应对部…...
【C语言】指针初阶
正文开始之前,我们要记住一个东西就是:地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…...
07_html
文章目录 引言前端概述分类 HTML快速入门重要的body标签注释hr标签br标签一些常见的标签标题标签div标签span标签p标签a标签img标签路径问题 ol和ul标签table标签input标签(表单元素)textarea标签(表单元素)select标签(…...
全量知识系统问题及SmartChat给出的答复 之1
Q1. 一套完整的全量知识系统应该有哪些组成部分? 一套完整的全量知识系统应该包括以下组成部分: 数据采集:收集、整理、清洗和存储各种数据,包括结构化数据、半结构化数据和非结构化数据等。 数据存储和管理:建立可靠…...
【appium】App类型、页面元素|UiAutomator与appium|App元素定位
目录 一、App前端基础知识 1、App类型划分 2、App类型对比 3、App页面元素 App页面元素分为布局和控件两种 常见布局: 常见控件:定位软件:appium和sdk自带的uiautomatorviewer都可以定位 二、App元素定位 1、id定位 2、text定位 3…...
ChatGpt大模型入门
环境配置 创建虚拟环境 建议创建一个新的虚拟环境,避免安装依赖冲突, conda下载: https://docs.conda.io/en/latest/miniconda.html conda安装: https://zhuanlan.zhihu.com/p/591091259 或者使用venv 使用参考:http…...
嵌入式端部署Qwen1.5-0.5B的实战血泪史(栈溢出→DMA加速→Flash-XIP全链路调优)
第一章:嵌入式端轻量级大模型部署的挑战全景在资源受限的嵌入式设备(如 Cortex-M7、RISC-V MCU、边缘AI加速器)上部署轻量级大模型,远非简单地将训练好的模型“移植”即可实现。其本质是计算能力、内存带宽、功耗预算与模型表达力…...
实战指南:三分钟让Mem Reduct内存清理工具显示中文界面
实战指南:三分钟让Mem Reduct内存清理工具显示中文界面 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 你…...
告别VM软件界面!用C#给VisionMaster 4.2 SDK做个专属上位机(附完整源码)
用C#打造VisionMaster 4.2工业视觉定制化上位机实战指南 在工业自动化领域,标准化的视觉处理软件往往难以完全匹配特定产线的操作流程和界面需求。VisionMaster作为业内知名的机器视觉算法平台,其SDK为开发者提供了强大的二次开发能力。本文将带您从零开…...
STM32F103用CubeMX实现ADC欠采样:用800Hz采样率捕获1kHz正弦波(附工程源码)
STM32F103实战:用CubeMX配置ADC欠采样捕获1kHz正弦波 在嵌入式系统开发中,ADC采样是获取模拟信号的关键技术。传统采样理论告诉我们,采样频率必须至少是信号最高频率的两倍(奈奎斯特采样定理),但欠采样技术…...
Hunyuan-MT Pro安全审计:本地部署杜绝数据出境与隐私泄露风险
Hunyuan-MT Pro安全审计:本地部署杜绝数据出境与隐私泄露风险 1. 为什么翻译数据安全如此重要 在日常工作和学习中,我们经常需要处理各种语言的文档和内容。无论是商业合同、技术文档、还是个人通信,这些材料往往包含敏感信息。传统的在线翻…...
仅剩3%团队真正启用镜像签名!深度拆解Docker Content Trust弃用后,Cosign替代方案的5层可信验证架构
第一章:Docker镜像签名的现状与信任危机在容器化生产环境中,Docker镜像已成为软件分发的事实标准。然而,镜像来源不可信、中间人篡改、供应链投毒等事件频发,暴露出签名机制在实际落地中的严重断层。尽管Docker Content Trust&…...
从.wrl文件到三维点云:手把手教你用MATLAB提取并处理VRML模型数据
从.wrl文件到三维点云:MATLAB自动化处理VRML模型全流程解析 当你拿到一个复杂的VRML场景文件(.wrl格式),是否曾为如何提取其中的三维几何数据而头疼?这类文件虽然可以用文本编辑器查看,但手动复制粘贴顶点坐…...
给硬件工程师的PCIe实战避坑指南:从LTSSM状态机到链路均衡,这些调试细节你踩过几个?
PCIe链路调试实战:从LTSSM状态机到信号完整性的深度解析 实验室里示波器屏幕上跳动的眼图,协议分析仪里抓取到的异常TLP包,还有那反复出现的"Link Training Failed"红色警告——这些场景对硬件工程师来说再熟悉不过。PCIe作为现代计…...
终极指南:如何用BetterJoy在PC上完美使用Switch控制器玩模拟器游戏
终极指南:如何用BetterJoy在PC上完美使用Switch控制器玩模拟器游戏 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://…...
如何快速解密Wii U游戏文件:CDecrypt终极指南
如何快速解密Wii U游戏文件:CDecrypt终极指南 【免费下载链接】cdecrypt Decrypt Wii U NUS content — Forked from: https://code.google.com/archive/p/cdecrypt/ 项目地址: https://gitcode.com/gh_mirrors/cd/cdecrypt 还在为无法访问Wii U游戏文件而烦…...
