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

【Linux】第七站:vim的使用以及配置

文章目录

  • 一、vim
    • 1.vim的介绍
    • 2.vim基本使用
    • 3.vim的命令模式常用命令
    • 4.底行模式
  • 二、vim的配置

一、vim

1.vim的介绍

vim编辑器,用来文本编写,可以写代码

它是一个多模式的编辑器

它有很多的模,不过我们暂时先只考虑这三种模式

  • 命令模式
  • 插入模式
  • 底行模式

image-20231030183350245

2.vim基本使用

我们先创建一个test.c文件

然后我们直接

vim test.c

然后,我们会进入到如下的界面,我们会发现,我们进入以后什么无论按什么都是没有任何反应的,这是因为我们刚进入的时候就是默认模式,也就是命令模式

image-20231030182908553

命令模式(默认模式):用户所有的输入都会被当作命令,一般不会给你作为文本输入

image-20231030183425823

我们先看能不能直接写上代码,所以我们需要进入插入模式,只需要进入vim后直接按i即可进入

然后我们可以简单的写一个代码

image-20231030183829439

然后我们现在需要退出vim

于是,我们可以先无脑ESC按键,然后按shift + ; ,即冒号。这样我们就切换到了底行模式,然后wq即可,

这里的w就是只保存不退出,q就是只退出不保存。wq就是保存并退出,如果加上!那么代表强制。

如果我们从底行模式转回命令模式,我们只需要无脑ESC即可

如下就是我们的三个模式之间的转换,对于插入模式和底行模式之间,我们不考虑它的直接切换

image-20231030184406446

3.vim的命令模式常用命令

gg :定位光标到最开始的行

shift + g(即G) :定位光标到最结尾的行

n+shift + g (即nG) :定位光标到第n行,注意要使用键盘正上方的数字键

(n)yy :复制光标所在行(n行,不输入n则默认为1)

(n)p : 粘贴(n重复行)到光标所在行的下一行,不写n则默认为1

u : 撤销

ctrl + r : 撤销之前的撤销

(n)dd :剪切、删除n行

shift + $ : 定位光标到当前行结尾

shift + - : 定位光标当前行开始

w,b : 光标按照单词进行行内跨行进行移动

w是向后移动,而b是向前移动

也可以是n w(b),即按照单词进行移动n次

h ,j ,k, l : 分别对应左、下、上、右

推荐使用这四个键,因为有一些键盘没有上下左右

shift + ~ : 大小写转换

(n)r : 对光标字符开始的n个字符进行批量化替换,替换为新输入的字符,n默认为1

shift + R : 替换模式,对内容进行整体替换(第四种模式,退回命令模式直接ESC)

(n)x : 对光标字符之后的字符进行删除

4.底行模式

如果我们想要对比两个test.c文件

我们可以在底行模式下使用vs xxxx对应的文件名即可

这里需要注意的是使用vim可以打开一个我们还没有创建的文件,如果我们最后是直接q离开的话,那么这个文件将不会保存,如果保存了,那么最终将生成这个文件

如下所示

image-20231030195640907

当我们想要切换的时候,我需要按ctrl + w +w ,也就是ctrl加两次w就可以切换窗口了

底行中,vs可以打开多个文件编辑窗口

ctrl ww : 窗口光标切换

光标在哪一个窗口里面,就对哪一个窗口进行操作

其次在vim的底行模式中,我们也可以编译代码,运行代码

只需要在我们正常的使用前加上一个!即可

image-20231030204301315

还有一点是在底行也支持搜索,前面加上/,然后需要搜索的字符串即可

image-20231030204434340

在底行中也可调出行号,使用set nu命令即可

image-20231030204555934

去掉行号的命令是set nonu

image-20231030204651492

二、vim的配置

当我们用vim写代码的时候,是非常难受的,因为都没有代码提示这些的

所以我们需要对vim做出一定的配置

我们先回到家目录下面,然后输入

ls -al

先查看是否有.vimrc这个隐藏文件,如果没有我们可以创建一个

image-20231030205146170

然后我们直接用vim进入这个文件

比如说如果我们要配置要带上行号

我们就可以使用

set nu

然后保存退出即可,这时候,我们在进入vim去看其他文件的时候就默认有行号了

image-20231030205535570

image-20231030205547665

那么配置都在哪里有呢?都有哪些配置呢?

其实直接百度就可以了

image-20231030210107916

然后我们可以根据自己的需要进行配置了

注意

一个用户一个vim配置,不会互相影响

一般不建议给root配置,只需要给普通用户配置即可

不过让我们自己去配置还是比较麻烦的,所以我们可以一键配置,直接在普通用户下复制粘贴下面的即可

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

下载完成之后,我们的vim就变得很舒服了

但是我们这里会多出来一个文件,我们可以直接将他给隐藏掉

image-20231030211231635

image-20231030211305210

当然我们这个配置的缩进是2,如果我们想要改为4的话直接修改即可

image-20231030211634050

相关文章:

【Linux】第七站:vim的使用以及配置

文章目录 一、vim1.vim的介绍2.vim基本使用3.vim的命令模式常用命令4.底行模式 二、vim的配置 一、vim 1.vim的介绍 vim编辑器,用来文本编写,可以写代码 它是一个多模式的编辑器 它有很多的模,不过我们暂时先只考虑这三种模式 命令模式插入模…...

汇编-算术运算符

下面给出了一些有效表达式和它们的值:...

线性代数 第六章 二次型

一、矩阵表示 称为二次型的秩。只含有变量的平方项,所有混合项系数全是零,称为标准形;平方项的系数为1、-1或0,称为规范形。 二次型的标准形不唯一,可以用不用的坐标变换化二次型为标准形;二次型的规范形唯…...

leetCode 213. 打家劫舍 II + 动态规划 + 从记忆化搜索到递推 + 空间优化

关于此题我的往期文章,动规五部曲详解篇: leetCode 213. 打家劫舍 II 动态规划 房间连成环怎么偷呢?_呵呵哒( ̄▽ ̄)"的博客-CSDN博客https://heheda.blog.csdn.net/article/details/133409962213. 打家劫舍 II - 力扣&#x…...

网络编程套接字(二)

目录 简单的TCP网络程序服务端创建套接字服务端绑定服务端监听服务端获取连接服务端处理请求单执行流服务器的弊端 多进程版TCP网络程序捕捉SIGCHLD信号让孙子进程提供服务多线程版的TCP网络程序客户端创建套接字客户端链接服务器客户端发起请求 线程池版的TCP网络程序 简单的T…...

[极客大挑战 2019]Knife 1(两种解法)

题目环境: 这道题主要考察中国菜刀和中国蚁剑的使用方法 以及对PHP一句话木马的理解 咱们先了解一下PHP一句话木马,好吗? **eval($_POST["Syc"]);** **eval是PHP代码执行函数,**把字符串按照 PHP 代码来执行。 $_POST P…...

国家统计局教育部各级各类学历教育学生情况数据爬取

教育部数据爬取 1、数据来源2、爬取目标3、网页分析4、爬取与解析5、如何使用Excel打开CSV1、数据来源 国家统计局:http://www.stats.gov.cn/sj/ 教育部:http://www.moe.gov.cn/jyb_sjzl/ 数据来源:国家统计局教育部文献教育统计数据2021年全国基本情况(各级各类学历教育学…...

mysql、clickhouse时间日期加法

mysql 在’2023-10-27 23:59:59’上增加5秒: SELECT DATE_ADD(2023-10-27 23:59:59, INTERVAL 5 second);clickhouse SELECT date_add(SECOND, 3, toDate(2018-01-01 00:00:00));clickhouse时间按秒、分、时、日、月、年作差 按秒: SELECT dateDiff…...

21.合并两个有序链表

#include <iostream>struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(nullptr) {} };class Solution { public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode dummy ListNode(-1); // 创建一个虚拟节点作为头节点ListNode* …...

thinkphp漏洞复现

thinkphp漏洞复现 ThinkPHP 2.x 任意代码执行漏洞Thinkphp5 5.0.22/5.1.29 远程代码执行ThinkPHP5 5.0.23 远程代码执行ThinkPHP5 SQL Injection Vulnerability && Sensitive Information Disclosure VulnerabilityThinkPHP Lang Local File Inclusion ThinkPHP 2.x 任…...

暴力递归转动态规划(十三)

题目 给定3个参数&#xff0c;N&#xff0c;M&#xff0c;K 怪兽有N滴血&#xff0c;等着英雄来砍自己 英雄每一次打击&#xff0c;都会让怪兽流失[0~M]的血量 到底流失多少&#xff1f;每一次在[0~M]上等概率的获得一个值 求K次打击之后&#xff0c;英雄把怪兽砍死的概率。 暴…...

java EE 进阶

java EE 主要是学框架(框架的使用,框架的原理) 框架可以说是实现了部分功能的半成品,还没装修的毛坯房,然后我们再自己打造成自己喜欢的成品 这里学习四个框架 : Spring ,Spring Boot, Spring MVC, Mybatis JavaEE 一定要多练习,才能学好 Maven 目前我们主要用的两个功能: …...

记录paddlepaddle-gpu安装

背景 由于最近需要使用paddleocr&#xff0c;因此需要安装依赖paddlepaddle-gpu&#xff0c;不管怎么安装cuda11.6-11.8安装了一遍&#xff0c;都无法正常安装成功。如下所示&#xff1a; 环境&#xff1a;wsl2linux18.04 >>> import paddle >>> paddle.u…...

django如何连接sqlite数据库?

目录 一、SQLite数据库简介 二、Django连接SQLite数据库 1、配置数据库 2、创建数据库表 三、使用Django ORM操作SQLite数据库 1、定义模型 2、创建对象 3、查询对象 总结 本文将深入探讨如何在Django框架中连接和使用SQLite数据库。我们将介绍SQLite数据库的特点&…...

面试算法47:二叉树剪枝

题目 一棵二叉树的所有节点的值要么是0要么是1&#xff0c;请剪除该二叉树中所有节点的值全都是0的子树。例如&#xff0c;在剪除图8.2&#xff08;a&#xff09;中二叉树中所有节点值都为0的子树之后的结果如图8.2&#xff08;b&#xff09;所示。 分析 下面总结什么样的节…...

云安全-云原生k8s攻击点(8080,6443,10250未授权攻击点)

0x00 k8s简介 k8s&#xff08;Kubernetes&#xff09; 是容器管理平台&#xff0c;用来管理容器化的应用&#xff0c;提供快速的容器调度、弹性伸缩等诸多功能&#xff0c;可以理解为容器云&#xff0c;不涉及到业务层面的开发。只要你的应用可以实现容器化&#xff0c;就可以部…...

性能压力测试主要目标及步骤

性能压力测试是软件开发生命周期中至关重要的一部分&#xff0c;旨在评估应用程序或系统在高负载和极端条件下的性能表现。这种测试有助于发现性能瓶颈、资源耗尽和错误&#xff0c;以确保应用程序在真实使用情况下的可靠性和稳定性。本文将探讨性能压力测试的概念、方法和最佳…...

VLAN与配置

VLAN与配置 什么是VLAN 以最简单的形式为例。如下图&#xff0c;此时有4台主机处于同一局域网中&#xff0c;很明显这4台主机是能够直接通讯。但此时我需要让处于同一局域网中的PC3和PC4能通讯&#xff0c;PC5和PC6能通讯&#xff0c;并且PC3和PC4不能与PC5和PC6通讯。 为了实…...

API接口安全设计

简介 HTTP接口是互联网各系统之间对接的重要方式之一&#xff0c;使用HTTP接口开发和调用都很方便&#xff0c;也是被大量采用的方式&#xff0c;它可以让不同系统之间实现数据的交换和共享。 由于HTTP接口开放在互联网上&#xff0c;所以我们就需要有一定的安全措施来保证接口…...

服务器的管理口和业务口

服务器管理接口和业务接口 服务器管理接口&#xff08;Server Management Interface&#xff0c;SMI&#xff09;&#xff1a; 服务器管理接口是一种用于管理服务器硬件和操作系统的标准接口。它通常用于远程管理和监控服务器&#xff0c;包括但不限于以下功能&#xff1a; …...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...