当前位置: 首页 > news >正文

嵌入式驱动学习第一周——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 编辑模式

   在命令模式下输入小写字母iao即可进入编辑模式,在该模式下可以对文件内容进行编辑

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 简约美观的加载动画 第五季 - 小方块风格

给大家分享两个小方块风格的加载动画 &#x1f60a; 第五季来啦 &#x1f60a; 效果如下: 一个三个文件,可以直接编译运行 //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&#xff0c;开源代码实现见&#xff1a; https://github.com/rot256/research-we-kzg&#xff08;Rust&#xff09; 在该论文中&#xff0c;提供了一种…...

Spring Boot中实现列表数据导出为Excel文件

点击下载《Spring Boot中实现列表数据导出为Excel文件》 1. 前言 本文将详细介绍在Spring Boot框架中如何将列表数据导出为Excel文件。我们将通过Apache POI库来实现这一功能&#xff0c;并解释其背后的原理、提供完整的流程和步骤&#xff0c;以及带有详细注释的代码示例。最…...

华为ipv6 over ipv4 GRE隧道配置

思路&#xff1a; PC1访问PC2时&#xff0c;会先构造源ipv6为2001:1::2&#xff0c;目的IPV6为2001:2::2的ipv6报文&#xff0c;然后查看PC1的路由表&#xff0c;发送到R1&#xff0c;r1接收后&#xff0c;以目的IPV6地址2001:2::2查询IPV6路由表&#xff0c;出接口为tun0/0/0…...

项目解决方案:海外门店视频汇聚方案(全球性的连锁店、国外连锁店视频接入和汇聚方案)

目 录 一、概述 二、建设目标及需求 2.1 建设目标 2.2 需求描述 2.3 需求分析 三、建设方案设计 3.1 系统方案拓扑图 3.2 方案描述 3.3 服务器配置推荐 四、产品功能 4.1 资源管理平台 &#xff08;1&#xff09;用户权限管理 &#xff08;2&#xff09…...

Java中的数据类型详解

引言 在Java编程中&#xff0c;数据类型是非常重要的概念&#xff0c;它定义了数据的类型和范围&#xff0c;帮助程序员有效地操作数据。Java的数据类型可以分为两大类&#xff1a;基本数据类型和引用数据类型。本文将详细介绍Java中的各种数据类型&#xff0c;并附上相应的代…...

ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍

ABBYY FineReader 16作为一款OCR和PDF一体化程序&#xff0c;其强大的功能使得文档处理变得简单高效。在众多功能中&#xff0c;文档转换、PDF管理和文档比较这三大功能尤为突出&#xff0c;成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下&#xff…...

导览系统厂家|景区电子导览|手绘地图|AR导览|语音导览系统

随着元宇宙、VR、AR等新技术的快速发展&#xff0c;旅游服务也更加多元化、智能化。景区导览系统作为旅游服务的重要组成部分&#xff0c;其形式更加多元化智能化。智能导览系统作为一种新的服务方式&#xff0c;能够为游客提供更加便捷的旅游服务和游览体验&#xff0c;也逐渐…...

oracle 如何使用脚本实现访问控制(无需额外插件)

随着这些年勒索病毒的爆发,各个企业对数据安全的要求越来越高,常见的办法有开启数据库审计,加数据库防火墙,网络限制等等;但是细粒度审计会消耗大量系统资源,第三方数据库防火墙一般是需要收费的;这里介绍我个人常用的四个db级别trigger,用于记录部分关键信息可以应对部…...

【C语言】指针初阶

正文开始之前&#xff0c;我们要记住一个东西就是&#xff1a;地址指针 目录 一、指针的解释二、指针变量和地址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标签&#xff08;表单元素&#xff09;textarea标签&#xff08;表单元素&#xff09;select标签&#xff08…...

全量知识系统问题及SmartChat给出的答复 之1

Q1. 一套完整的全量知识系统应该有哪些组成部分&#xff1f; 一套完整的全量知识系统应该包括以下组成部分&#xff1a; 数据采集&#xff1a;收集、整理、清洗和存储各种数据&#xff0c;包括结构化数据、半结构化数据和非结构化数据等。 数据存储和管理&#xff1a;建立可靠…...

【appium】App类型、页面元素|UiAutomator与appium|App元素定位

目录 一、App前端基础知识 1、App类型划分 2、App类型对比 3、App页面元素 App页面元素分为布局和控件两种 常见布局&#xff1a; 常见控件&#xff1a;定位软件&#xff1a;appium和sdk自带的uiautomatorviewer都可以定位 二、App元素定位 1、id定位 2、text定位 3…...

ChatGpt大模型入门

环境配置 创建虚拟环境 建议创建一个新的虚拟环境&#xff0c;避免安装依赖冲突&#xff0c; conda下载&#xff1a; https://docs.conda.io/en/latest/miniconda.html conda安装&#xff1a; https://zhuanlan.zhihu.com/p/591091259 或者使用venv 使用参考&#xff1a;http…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...