vim编辑器的使用

vim编辑器

  • 1 vim编辑器三种常见模式
  • 2 命令模式
    • 2.1 移动光标的操作
    • 2.2 对数据操作
    • 2.3 查找函数
  • 3 底行模式
    • 3.1 不退出vim进行操作
    • 3.2 与文件进行对比
  • 4 vim的补充知识
    • 4.1 vim的批量化注释
    • 4.2 vim窗口的非正常关闭
  • 5 vim的配置
  • 6 配置sudoer文件

1 vim编辑器三种常见模式

我们在编写C++语言用的都是vs2022这样的一个工具!它是属于集成开发环境,是编写代码,编译代码,调试代码为一体的IDEA。而在Linux环境下,vim就是我们用来编写代码的,而后面所学到的gcc是用来编译代码的,gdb是用来调试代码的!本节我们将介绍vim的使用!作为一名初学者,我们应当首先来了解一下vim编辑器中三种常见的模式!

1️⃣命令模式:vim 文件名

利用上述命令,打开一个文件,一开始的就是命令模式!如下图所示(我是打开了自己的一个文件):
在这里插入图片描述

2️⃣插入模式:i/o/a

在命令模式的基础上,按i/o/a三个键中的任意一个,就可以进入插入模式,插入模式就可以编写代码了!如下图所示:
在这里插入图片描述

3️⃣底行模式:shift+;也就是:

注意底行模式也是在命令模式的基础上切换过去的,也就是说,命令模式才是中间的桥梁,是核心所在,那么对于如何从某一种模式退回到命令模式呢?用的就是我们esc这个键!综上所述,三种命令模式的图解如下所示:

在这里插入图片描述
对于插入模式就不做介绍了,因为是编码的模式!

2 命令模式

在这里就简单的介绍一下,命令模式中常用的命令!这里简单解释以下下文中我要介绍的命令,以第一个命令为例子,shift+6意味着是两个组合键,等于^就是两个组合键的意思就是要表达这个符号!

2.1 移动光标的操作

shift+6=^ 定位到本行最开始的位置
shift+4=$ 定位到本行末尾的位置
shift+g=G 定位到文件的最后一行开始的位置
n+shift+g 表示定位到第n行最开始的位置(n表示数字)
gg 光标定位到文本最开始的位置
h 光标往左走(键盘的左边)
j 光标往下走(jump所以往下走)
k 光标往上走 (king高高在上就往上走)
l 光标往右走(键盘的右边)
w 从当前行,按照”单词”顺序往右边走,适合定位行内的某个数据
b 从当前行,按照”单词”顺序往左边走,适合定位行内的某个数据

2.2 对数据操作

n+yy 从光标当前行开始数,复制往下的n行
n+p 从当前光标的下一行位置进行粘贴,粘贴n次
u 撤销编辑操作,只要你没有退出vim,就可以一直往上撤销
ctrl+r 对撤销操作进行撤销
n+dd 从光标当前行开始,删除n行(也可以理解是剪切n行,结合p操作)
shift+`=~ 对字母大小写进行切换
n+r+你要替换的字符 从当前光标开始数,替换n个你要替换的字符
shift+r 进入替换模式,就是可以进行替换
n+x 从当前光标开始数,往右边删除n个字符
n+shift+x 从当前光标的前一个位置开始,往左边删除n个字符

2.3 查找函数

shift+3=# 高亮当前光标所在的字符串名或者是函数名
n 去到下一个查找到的字符名或者是函数名
在底行模式下输入noh可以取消关键字高亮

3 底行模式

w 写入并保存
q 退出
!强制(w!强制写入保存 q!强制退出,wq!写入保存并强制退出等)
set nu 把每一行前面标起行号
set nonu 取消行号
/或者是? 跟上关键字可以进行查找
help vim-modes 可以查看有哪几种模式

3.1 不退出vim进行操作

如果我们不想退出vim,而查看外面的文件内容等操作可以使用以下命令!

!shell命令

示例图如下所示:

在这里插入图片描述
在这里插入图片描述
此时我们在按回车键就又可以回到vim中了!

3.2 与文件进行对比

vs 要对比的文件名

在这里插入图片描述

我们此时可以发现,有两个终端的窗口,但是底行却只有一个!那么此时底行对应的就是光标所在的那个窗口,我们也可以在多窗口的环境下,实现光标跨窗口的切换!利用命令

ctrl+ww

4 vim的补充知识

4.1 vim的批量化注释

1 ctrl+v 切换模式,进入可视行模式
2 hjkl 控制光标要注释的范围区域
3 shift+i
4 //
5 esc

以上五个步骤就可以完成批量化的注释了,如何取消批量化注释呢?

1 ctrl+v 进入可视行模式
2 hjkl 选择作用区域范围
3 d

4.2 vim窗口的非正常关闭

有些时候如果我们不是正常的退出vim窗口,我们再次打开文件,会发现如下所示的错误:
在这里插入图片描述
我们该如何解决呢?我们一般输入R然后保存退出程序,然后再次打开,在输入D然后退出就行了!这是因为不是正常的关闭,vim就会生成一个.test.c.swp这样的一个临时文件!另外一种方法就是删除这个临时文件,这样打开也就正常了!

5 vim的配置

网上有许多优秀的文章可以参考,这里我建议大家统一用自动化配置,因为简单!不需要那么多的花里胡哨,能用就行!写cpp就选下面这个,不过只支持centos 7版本,才可以有效!
vimforcpp配置
要想进一步的了解vim的使用,可参考以下这个链接中的文章vim的使用

6 配置sudoer文件

在某些场景下,我们普通用户如果想要和管理员一样的权限,我们一般是需要使用sudo提权指令,但是提权的普通用户是要经过相应的配置的,如何进行配置呢?如下所示:我们必须是在管理员角色下进行操作,其他人打开文件是没有读取该配置文件的信息的!
在这里插入图片描述
在这里插入图片描述
找到如上图所示的位置,加入普通用户名,后面照抄root的写法就行了,最后写入保存并强制退出就行了!

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

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

相关文章

AMD显卡和英伟达显卡哪个好?

显卡是计算机中负责处理图形和视频输出的硬件设备,主要分为两种类型:AMD的A卡和NVIDIA的N卡。那么AMD显卡和英伟达显卡哪个好?怎么选? 答:不能一概而论地说哪个好,因为它们各有优势,选择应基于…

【Python报错】已解决ModuleNotFoundError: No module named ‘packaging’

成功解决“ModuleNotFoundError: No module named ‘packaging’”错误的全面指南 在Python编程中,遇到ModuleNotFoundError: No module named packaging这样的错误,通常意味着你的Python环境中缺少名为packaging的模块,或者该模块没有被正确…

Docker笔记-解决非交互式运行python时print不输出的问题

换句话来说就是在docker中如何不会python的print 只需要在启动时&#xff0c;不让python缓冲其输出。 关键命令如下&#xff1a;PYTHONUNBUFFERED1 如下&#xff1a; docker run -e PYTHONUNBUFFERED1 <your_image> 下面解释下-e "-e"选项的全称是"…

DDMA信号处理以及数据处理的流程---DDMA原理介绍

Hello&#xff0c;大家好&#xff0c;我是Xiaojie&#xff0c;好久不见&#xff0c;欢迎大家能够和Xiaojie一起学习毫米波雷达知识&#xff0c;Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程&#xff0c;本系列文章将从目标生成、信号仿真、测距、测速、cfar…

IT学习笔记--Flink

概况&#xff1a; Flink 是 Apache 基金会旗下的一个开源大数据处理框架。目前&#xff0c;Flink 已经成为各大公司大数据实时处理的发力重点&#xff0c;特别是国内以阿里为代表的一众互联网大厂都在全力投入&#xff0c;为 Flink 社区贡献了大量源码。 Apache Flink 是一个…

微信小程序uniapp的父子之间的通信传递

1.父传递给子信息 my-test是子组件 demo是父组件 这是定义在父组件中的的info信息 要将这个传递给子组件 子组件在properties 中接收父组件传递来的数据 msg type 是类型 value是默认值&#xff0c;当父组件没有传递数据时&#xff0c;就会默认使用value的数据 子组件…

JavaScript html css前端 日期对象 date对象 日期格式化 时间戳

日期对象 Date对象 Date 对象和 Math 对象不一样&#xff0c;他是一个构造函数&#xff0c;所以我们需要实例化后才能使用 Date 实例用来处理日期和时间 Date()使用方法 示例&#xff1a;获取当前时间 let now new Date() console.log(now) 示例&#xff1a;获取指定时间…

LabVIEW液压伺服压力机控制系统与控制频率选择

液压伺服压力机的控制频率是一个重要的参数&#xff0c;它直接影响系统的响应速度、稳定性和控制精度。具体选择的控制频率取决于多种因素&#xff0c;包括系统的动态特性、控制目标、硬件性能以及应用场景。以下是一些常见的指导原则和考量因素&#xff1a; 常见的控制频率范…

Vscode发生鼠标悬停正在加载、无法跳转和提示词的问题

Vscode发生鼠标悬停正在加载、无法跳转和提示词的问题 查看python语言服务器的日志&#xff0c;确定问题。 我的问题是加载的vscode 目录下存在一个很大的数据集目录&#xff0c;导致无法正常工作。 解决办法&#xff1a; 在vscode的pylance设置中&#xff0c;排除对应的目…

【WP】猿人学_13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

组装服务器重装linux系统【idrac集成戴尔远程控制卡】

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

亮数据代理IP助力高效数据采集

文章目录 &#x1f4d1;前言一、爬虫数据采集痛点二、代理IP解决爬虫痛点2.1 为什么可以2.2 本篇采用的代理IP 四、零代码获取数据4.1 前置背景4.2 亮数据浏览器自动抓取数据4.3 使用步骤&#xff1a; 五、数据集5.1 免费样本5.2 定制数据集 &#x1f324;️个人小结 &#x1f…

IP质量不够好,可以使用高质量的代理IP吗?

在当今互联网时代&#xff0c;IP代理是一个不可或缺的工具&#xff0c;但许多人可能对它的原理和应用感到困惑。IP代理涉及IP地址的使用和切换&#xff0c;旨在提供更好的隐私保护和访问控制。本文将介绍IP代理的工作原理以及为什么选择高质量的代理IP。 一、IP代理的基本原理…

前端表单校验完成之后,点击确认功能无反应FormInstance, FormRules

**产生原因&#xff1a;可能是在el-form 中添加的ref 前面加了“&#xff1a;”&#xff0c;也可能是ref中的值写错了** FormInstance, FormRules

如何永久擦除Android手机中的所有个人数据?

在这个数字化的时代&#xff0c;确保您的个人数据的安全和隐私至关重要。如果您计划出售或回收您的Android手机&#xff0c;了解如何正确擦除Android手机是至关重要的。本综合指南将引导您通过安全擦除Android手机的分步过程&#xff0c;以保护您的敏感信息。 手机是极其敏感的…

CEC2017(Python):五种算法(SSA、RFO、OOA、PSO、GWO)求解CEC2017

一、5种算法简介 1、麻雀搜索算法SSA 2、红狐优化算法RFO 3、鱼鹰优化算法OOA 4、粒子群优化算法PSO 5、灰狼优化算法GWO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem defin…

海外媒体通稿:9个极具创意的旅游业媒体推广案例分享-华媒舍

如今&#xff0c;旅游业正迅速发展&#xff0c;媒体推广成为吸引游客的关键。为了更好地展示旅游目的地&#xff0c;许多创意而富有创新的媒体推广策略应运而生。本文将介绍九个极富创意的旅游业媒体推广案例&#xff0c;为广大从业者带来灵感和借鉴。 1. 视频系列&#xff1a;…

【Mybatis】动态SQL标签2

choose (when, otherwise)标签是使用举例 类似switch...case&#xff0c;从上到下匹配&#xff0c;找到匹配的条件&#xff0c;就结束匹配其他的&#xff01; set标签是使用举例 set这个标签是用在更新操作上的 set标签代替sql中的set关键字&#xff0c;可以把set语句后多余的…

手搓顺序表(C语言)

目录 SeqList.h SeqList.c 头插尾插复用任意位置插入 头删尾删复用任意位置删除 SLtest.c 测试示例 顺序表优劣分析 SeqList.h //SeqList.h#pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h> #define IN_CY 3typedef int S…

nc解决自定义参照字段前台保存后只显示主键的问题

nc解决自定义参照字段前台保存后只显示主键的问题 自定义参照类VoucherRefModel.java package nc.ui.jych.ref;import nc.ui.bd.ref.AbstractRefModel;/*** desc 凭证号参照* author hanh**/ public class VoucherRefModel extends AbstractRefModel {Overridepublic String[…