Linux--vim

文章目录

  • Vim的介绍
  • Vim的几种模式
  • 命令模式下的基本操作
  • 批量化注释
  • Vim的简单配置
    • 使用插件

Vim的介绍

Vim是一个强大的文本编辑器,是从vi编辑器发展而来的,在vi编辑器的基础上进行了改进和拓展,具有强大的特性和功能。
Vim是一个自由开源软件,可在多个系统上运行,包括Windows、MacOS、Linux发行版;适用于各种编程和系统管理任务。

Linux通常都默认安装好了Vim文本编辑器,我们只需要通过Vim指令就可以直接打开Vim编辑器了;
执行命令

vim [文件名]

我们将通过test.c文件来进行演示讲解:
在这里插入图片描述

进去效果:在这里插入图片描述

Vim的几种模式

Vim是有操作模式的,在各个模式下,可以利用键盘做出不同的操作;
这里将讲解vim的几种常用的模式;

命令模式(Command mode):在我们打开Vim时,默认处于命令模式。在这个模式下,你可以执行各种命令,例如搜索、复制、粘贴、删除、移动光标等。

插入模式(Insert mode):在命令模式下,按下i、a、o其中一个字符,就可以进入插入模式,在当前光标位置开始输入文本。这时既可以像在常规文本编辑器中一样输入和编辑文本。

可视模式(Visual mode):在命令模式下,按下v进入可视模式。在可视模式中,可以使用移动命令选中一定范围的文本,并对其进行文本操作,例如复制、替换、删除等。

命令行模式(Command-line mode):在命令模式下,按下冒号(:)键后,进入命令行模式。在这个模式中,可以输入各种命令,例如保存文件、退出Vim等。完成命令输入后,按下回车执行该命令。

命令模式下的基本操作

我们先进入插入模式输入一些基本文本;
在这里插入图片描述
在除了命令模式的其他模式下,都可以通过esc返回到命令模式

移动光标

操作指令作用
shift+4光标定位在当前行的最右侧结尾处
shift+6光标定位在当前行的最左侧结尾处
shift+g光标定位到文本的最结尾
gg光标定位到文本的最开始
h向左移动光标
j向下移动光标
k向上移动光标
l向右移动光标
w按照单词向后移动,行尾会自动换行
b按照单词向后移动, 行尾会自动换行

插入文本

操作指令作用
i在光标前插入文本
a在光标后插入文本
o在当前行下方插入新行并进入插入模式
O在当前行上方插入新行并进入插入模式

删除、复制、粘贴

操作指令作用
n+yy从当前光标位置,向下复制n行(包括光标位置的行),没有输入n默认复制光标位置行
n+p在下一行开始粘贴,n表示粘贴次数,没有n表示粘贴一次
n+x删除光标所在字符(向右方向),n表示n个字符
n+X删除光标所在字符(向左方向),n表示n个字符
n+dd剪切行,从光标位置(包括光标位置行),n表示行数

替换

操作指令作用
~大小写快速切换
n+r输入任意字符可替换当前光标所在字符
R进入替换模式

高亮、撤销和重做

操作指令作用
#高亮查找,可高亮相同的单词
n对高亮的进行查找
u撤回上一步操作
ctrl+r对撤销操作进行撤回

保存和退出

操作指令作用
:w保存文件
:q退出编辑器
:wq保存并退出
:q!强制退出,丢弃修改

复制粘贴操作:

复制多行后粘贴
在这里插入图片描述

复制一行粘贴3次
在这里插入图片描述

删除多行:
在这里插入图片描述

保存和退出:
一般我们最常用的操作就是:wq,最后回车键确定;
-blog.csdnimg.cn/673e65e027f84f3d837d195fb6bd0fd0.png)

!感叹号是强制的意思,搭配w或q进行使用;
如果我们在编辑文本时,没有保存就退出时:
在这里插入图片描述

批量化注释

如果我们想批量化注释,可以按以下操作进行:
在这里插入图片描述
批量化去注释
在这里插入图片描述

Vim的简单配置

在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户均有效。
在这里插入图片描述
如果以上的退出操作都没用,可以使用shift+zz的操作,进行保存并退出vim。

在用户目录下,我们可以自己创建一个.vimrc文件,来进行配置:
在这里插入图片描述

使用插件

在这里,要配置好看的界面和齐全的功能,需要安装插件来完善配置;
这里我们将使用别人配置好的文件进行安装;
VimforCpp链接入口
在该页面滑下去,按照指示步骤进行;
在这里插入图片描述
在这里插入图片描述
这样就可以像其他编辑器一样正常使用了。

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

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

相关文章

技术分享 | app自动化测试(Android)--显式等待机制

WebDriverWait类解析 WebDriverWait 用法代码 Python 版本 WebDriverWait( driver,timeout,poll_frequency0.5,ignored_exceptionsNone) 参数解析: driver:WebDriver 实例对象 timeout: 最长等待时间,单位秒 poll_frequency: 检测的间…

MySQL 8.0 Clone Plugin 详解

文章目录 前言1. 克隆插件安装2. 克隆插件的使用2.1 本地克隆2.2 远程克隆 3. 克隆任务监控4. 克隆插件实现4.1 Init 阶段4.2 File Copy4.3 Page Copy4.4 Redo Copy4.5 Done 5. 克隆插件的限制6. 克隆插件与 Xtrabackup 的异同7. 克隆插件相关参数后记 前言 克隆插件&#xff…

Go uuid库介绍

简介: 在现代软件开发中,全球唯一标识符(UUID)在许多场景中发挥着重要的作用。UUID是一种128位的唯一标识符,它能够保证在全球范围内不重复。在Go语言中,我们可以使用第三方库github.com/google/uuid来方便…

python 之 集合的相关知识

文章目录 1. 创建集合使用花括号 {}使用 set() 函数 2. 集合的特点3. 集合操作添加元素删除元素 4. 集合运算5. 不可变集合总结 在 Python 中,集合(Set)是一种无序且不重复的数据集合。它是由一组唯一元素组成的。下面是关于集合的一些基本知…

【云原生】使用nginx反向代理后台多服务器

背景 随着业务发展, 用户访问量激增,单台服务器已经无法满足现有的访问压力,研究后需要将后台服务从原来的单台升级为多台服务器,那么原来的访问方式无法满足,所以引入nginx来代理多台服务器,统一请求入口…

Leetcode-234 回文链表

我的解法:使用栈,定义了len略微复杂,拿链表的后半部分和前半部分比较即可,没必要全部比较 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* List…

369-HI-R-M-0-0-0-E 数字化转型如何改变DCS和SCADA

369-HI-R-M-0-0-0-E 数字化转型如何改变DCS和SCADA 高瞻远瞩的过程制造商正在投资数字化转型,而DCS和SCADA最终将成为这些努力的一部分。因此,它们与所有其他流程制造技术一起发展。DCS和SCADA系统的变化符合自动化金字塔正在进行的转变,它也…

Linux驱动开发——USB设备驱动

目录 一、 USB 协议简介 二、 Linux USB 驱动 三、 USB 设备驱动实例 一、 USB 协议简介 USB(Universal Serial Bus,通用串行总线)正如它的名字一样,是用来连接PC外设的一种通用串行总线,即插即用和易扩展是它最大的特点。所谓即插即用&am…

GPT-4V:AI在医疗领域的应用

OpenAI最新发布的GPT-4V模型为ChatGPT增添了语音和图像功能,为用户提供了更多在日常生活中使用ChatGPT的方式。这次更新将为用户带来更加便捷、直观的交互体验,用户可以直接通过拍照上传图片,并提出相关问题。OpenAI的最终目标是构建一个安全…

MYSQL多表联查on和where的区别

目录 一、背景 二、探究 2.1、统计每个班级中女生的数量 错误的写法 查询结果 正确的写法 查询结果 2.2、只统计"一班"的学生数量 错误的写法 查询结果 正确的写法 查询结果 三、总结 一、背景 在一次对数据进行统计的时候,需要对两张表进行…

【vite】vite.defineConfig is not a function/npm无法安装第三方包问题

当使用vite命令 npm init vite-app 项目名称时配置 import vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })会报错vite.defineConfig is not a function 还有就是npm下载的时候也会报错 原因vite插件vitejs/plugin-vue和vite版本问题 解决 调…

Intel oneAPI笔记(3)--jupyter官方文档(SYCL Program Structure)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/02_SYCL_Program_Structure文档的学习记录,包含对Device Selector、Data Parallel Kernel、Host Accessor、Buffer Destruction、的介绍,最后还有一个小关于向量(Vector)加法的实例 …

zookeeper:启动原理

主类: QuorumPeerMain, 其中调用了main对象的initializeAndRun方法, 首先定义了QuorumPeerConfig对象,然后调用了parse方法,parse方法代码如下: 其中调用的parseProperties方法的代码如下: 可以看到&am…

Linux 实现原理 — NUMA 多核架构中的多线程调度开销与性能优化

前言 NOTE:本文中所指 “线程” 均为可执行调度单元 Kernel Thread。 NUMA 体系结构 NUMA(Non-Uniform Memory Access,非一致性存储器访问)的设计理念是将 CPU 和 Main Memory 进行分区自治(Local NUMA node&#x…

【GO】项目import第三方的依赖包

目录 一、导入第三方包 1.执行命令 2.查看go环境变量参数 3.查看go.mod文件的变化情况 二、程序里如何import 1. import依赖包 2. 程序编写 本次学习go如果依赖第三方的包,并根据第三方的包提供的接口进行编程,这里需要使用go get命令。下面将go…

无人机红外相机的畸变矫正

在项目开展过程中,发现大疆M30T的红外相机存在比较明显的畸变问题,因此需要对红外图像进行畸变矫正。在资料检索过程中,发现对红外无人机影像矫正的资料较少,对此,我从相机的成像原理角度出发,探索出一种效…

Redis主从配置和哨兵模式

主从简介 1、主从 – 用法 像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构。 主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从服务器来承担。 redis的主…

动态规划实例——01 背包详解

题目描述 有 n 件物品,每件物品有一个重量和一个价值,分别记为 w1,w2,…,wn 和 c1,c2,…,cn。现在有一个背包,其容量为 wk,要从 n 件物品种任取若干件。要求…

ansible安装和常见模块

文章目录 ansible的安装1.1 yum install epel-release.noarch1.2配置epel源的baseurl1.3安装ansible1.4安装ansible报错问题1.5 yum卸载 ansible的安装 ansible是由epel源提供的,所以需要配置epel源。要么通过配置好的baseos源直接执行“yum install epel-release.…

Modbus转Profinet网关在暖通空调系统中应用案例

在过去,空调系统一般采用传统的控制方式,通常需要使用独立的控制模块和传感器来监测和控制温度、湿度等参数。这种传统的控制方式不仅复杂,而且容易出现故障和误差,给用户的使用和维护带来了一定的困扰。 然而,通过P…