嵌入式驱动学习第一周——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 编辑器使用详解

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

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

相关文章

iconfont的组件化使用方法(SVG)

目录 一、需求描述二、操作步骤1.在iconfont中选择项目需要使用的图标2.在项目中创建iconfont.js3.创建svgIcon组件 一、需求描述 将iconfont图标库选择的图标以SVG的形式引入项目并通过组件化的形式在项目中引用可控制图标的大小和颜色 二、操作步骤 1.在iconfont中选择项目…

yaml文件详解

Kubernetes 支持 YAML 和 JSON 格式管理资源对象 JSON 格式:主要用于 api 接口之间消息的传递 YAML 格式:用于配置和管理,YAML 是一种简洁的非标记性语言,内容格式人性化,较易读 YAML 语法格式: ●大小写敏…

Mysql常见函数和用法(重点)

where子句中经常使用的运算符 -- 查询总分大于200分的所有同学 select * from student2 where (chineseenglishmath)>200; -- 查询math大于60 并且(and)id大于4的学生成绩 select * from student2 where math>60 and id>4; -- 查询英语成绩大于语文成绩的同学 select …

跟着cherno手搓游戏引擎【26】Profile和Profile网页可视化

封装Profile: Sandbox2D.h:ProfileResult结构体和ProfileResult容器,存储相应的信息 #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void OnAttach()ove…

【Python 数据分析 实战案例】通过用户和订单的数据分析,制定营销策略

在互联网行业中,电子商务领域绝对是数据分析用途最多的地方,各大电商平台都依赖数据分析帮助其挖掘用户订单增长机会。比如某宝的随手买一件,核心思路也就是根据用户的日常浏览内容及停留时间,以及订单的关联度来进行推荐的。 本…

AI与大数据:智慧城市安全的护航者与变革引擎

一、引言 在数字化浪潮的席卷下,智慧城市正成为现代城市发展的新方向。作为城市的神经系统,AI与大数据的融合与应用为城市的安全与应急响应带来了革命性的变革。它们如同城市的“智慧之眼”和“聪明之脑”,不仅为城市管理者提供了强大的决策…

VScode连接远端服务器一直输入密码解决方法

文章目录 1 关闭远程连接2打开命令面板3 输入remote-ssh: kill vs code server on host… 1 关闭远程连接 2打开命令面板 3 输入remote-ssh: kill vs code server on host… remote-ssh: kill vs code server on host… 然后一路回车(选中出问题的主机),输一遍密码…

chap gpt的底层逻辑是什么?chap gpt如何进行训练?chap gpt会产生自我迭代和自我意识吗?

ChatGPT的底层逻辑是基于生成式预训练模型(Generative Pre-Training)。它使用了大量的无监督学习来预训练模型,然后通过有监督学习进行微调,以提高对语言的理解能力。 ChatGPT的训练过程可以分为两个阶段:预训练和微调…

tmux的使用方法

1. tmux的定义 我:什么是tmux? GPT:tmux(terminal multiplexer)是一个强大的终端复用器,它允许用户在一个终端窗口中创建、访问和控制多个会话。使用tmux,你可以在一个窗口中打开多个终端会话&…

SpringMVC(1)

目录 SpringMVC简介入门案例启动服务器初始化过程单次请求过程bean加载控制 PostMan请求与响应设置请求映射路径请求参数五种类型参数传递JSON数据日期类型参数传递响应 RestRest 简介RESTful快速开发 SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发&a…

快速搭建宠物医院服务小程序的步骤,无需编程经验

如果你是一家宠物医院或者宠物服务机构,想要拥有一款方便用户预约、查询信息的小程序,那么乔拓云网提供的轻应用小程序是你的不二选择。下面将为你详细介绍如何轻松打造宠物医院服务小程序。 1. 进入乔拓云网后台,点击【轻应用小程序】中的【…

FDTD算法总结

计算电磁学(Computational Electromagnetics, CEM)是通过数值计算来研究电磁场的交叉学科。 数值求解电磁学问题的方法可以分成频域(Frequency Doamin, FD)、时域(Time Domain, TD)等两类。 频域法基于时谐微分,通过对多个采样值的傅里叶逆变换得到所需的脉冲响应…

代码随想录|学习工具分享

工具分享 画图 https://excalidraw.com/ 大家平时刷题可以用这个网站画草稿图帮助理解!如果看题解很蒙或者思路不清晰的时候,跟着程序处理流程画一个图,90%的情况下都可以解决问题! 数据结构可视化 https://www.cs.usfca.edu/…

Springboot应用执行器Actuator源码分析

文章目录 一、认识Actuator1、回顾Actuator2、Actuator重要端点 二、源码分析1、Endpoint自动装配(1)自动配置入口(2)普通Endpoint自动装配(3)配置Web - Endpoint(4)注册Endpoint为M…

vue_pdf,word,excel,pptx等文件预览

项目背景&#xff1a;vue3elementPlusvite 1.pdf 1.1 iframe预览 #toolbar0 拼接到src后&#xff0c;可隐藏iframe顶部的工具栏 <template><div class"viewPDF.vue"><uploadFile file"getFile" accept".pdf,.PDF" ></up…

redis八股

文章目录 数据类型字符串实现使用场景 List 列表实现使用场景 Hash 哈希实现使用场景 Set 集合实现使用场景 ZSet 有序集合实现使用场景 BitMap实现使用场景 Stream使用场景pubsub为什么不能作为消息队列 数据结构机制SDS 简单动态字符串压缩列表哈希表整数集合跳表quicklistli…

【已解决】UE5 plugin ‘xxx‘ failed to load because module ‘xxx‘ could not be found.

运行unrealeditor-cmd跑commandlet的时候遇到如下报错&#xff1a; plugin ‘xxx’ failed to load because module ‘xxx’ could not be found. Please ensure the plugin is properly installed, otherwise consider disabling the plugin for this project. 解决方案 重编…

Hadoop-Yarn-NodeManager是如何监控容器的

一、源码下载 下面是hadoop官方源码下载地址&#xff0c;我下载的是hadoop-3.2.4&#xff0c;那就一起来看下吧 Index of /dist/hadoop/core 二、上下文 在我的博客<Hadoop-Yarn-NodeManager是如何启动容器的>中的ContainerLaunch prepareForLaunch()会触发Containe…

vue3+electron开发桌面应用,静态资源处理方式及路径问题总结

1、静态资源放到src/assets/目录下 静态资源,例如图片、静态的JSON文件、视频、CSS等等,放到src/assets目录下。 不然会很蛋疼,这个坑我踩过了。切记,切记!! 以下是CHATGPT-4 Turbo的回答: 在 Vue 应用程序中,src/assets 目录确实有特别的处理。当你使用 Vue CLI 创…

每日五道java面试题之spring篇(七)

目录&#xff1a; 第一题. 什么是Spring beans&#xff1f;第二题. 一个 Spring Bean 定义 包含什么&#xff1f;第三题. 如何给Spring 容器提供配置元数据&#xff1f;Spring有几种配置方式?第四题. Spring基于xml注入bean的几种方式?第五题&#xff1a;你怎样定义类的作用域…