【Linux】vim的基本操作与配置(上)

news2024/9/25 11:21:59

Hello everybody!今天我们要进入vim的讲解了。学会了vim,咱们就可以在Linux系统上做一些简单的编程啦!

那么废话不多说,咱们直接进入正题!

1.初识vim

vim是一款多模式的文本编辑器,可以对一个文件进行编辑操作。

它一共有三个模式:命令模式,底行模式,插入模式。

下面我将分别对这三个模式进行讲解。

2.vim基本操作

2.1三种模式的切换

首先我们先创建一个文件test.c,然后用vim打开它。

然后就来到如图所示的界面,此时默认处于命令模式,暂时无法键入信息。

如果想要键入信息,需要输入字符'i',就会从命令模式编程插入模式:

左下角变成INSERT,可以键入信息。敲ESC返回命令模式。

要从命令模式切换到底行模式,需要敲SHIFT+L右边的那个键。合起来的效果就是冒号(敲ESC退出):

此事左下角出现了一个冒号,然后敲wq可以退出vim。w的意思是保存,q的意思是退出。如果在打开vim时你没有进行任何的编辑操作,可以不用保存,直接在底行模式下敲q退出。

注意,底行模式不可以直接切换到插入模式,插入模式也不可以直接切换到底行模式。都需要切换到命令模式过渡。

3.用vim写一个简单的c语言代码

咱们的vim没有配置过,所以写代码会有些难受,不过没关系,先试着写一下!

先切换到插入模式写入代码,再切换到底行模式退出。

随后用gcc编译器编译我们刚写好的test.c文件(后缀一定要是.c,否则编译不通过)。编译完成后会产生一个a.out的可执行程序,执行该程序后就可以看到代码允许的结果啦!

4.vim基本操作

4.1set nu

在底行模式下输入set nu,可以显示行号。

4.2复制,粘贴,撤销,剪切操作

首先这些操作是在命令模式下完成的。

yy:复制光标所在行的内容。支持在yy前加数字,表示复制包括光标所在行在内的以下几行。

p:粘贴,支持在p前加数字,表示粘贴被复制内容的次数。

dd:剪切,同样支持在dd前加数字,往往与p配合使用。

u:撤销

CTRL+r:对撤销命令进行撤销。

例如:我把光标放在int那一行,敲4yy,此时左下角会出现4 lines yanked,表示4行被选中。

然后我把光标放到第4行,敲3p:

所得结果就是把我刚才复制的内容粘贴了3遍。

敲u撤销以上操作。

可是我刚撤销完就后悔了,可以敲CTRL+r来进行还原:

我在第三行敲2dd:

那么原来的第3,4行就被剪掉了,可以选择合适的位置敲p再粘贴回来。

5.光标定位

vim在没有配置的情况下不支持鼠标定位,所有的操作需要通过键盘来完成。

5.1 SHIFT+4

敲SHIFT+4光标可以迅速定位到当前行的末尾。

5.2 SHIFT+6

敲SHIFT+6,光标可以迅速定位到当前行的开头。

5.3gg

gg:迅速将光标定位到文本的最开始。

5.4SHIFT+g

SHIFT+g:迅速将光标定位到文本的结尾。

当然也支持n shift g(n为数字)。可以将光标定位到文本的第n行。

5.5 h j k l

除了上下左右键可以移动光标,h j k l键也可以移动光标,大家可以自己试一下。

当然也支持在前面加数字,和上文基本类似。

5.6 w b

w:以单词为单位进行光标后移。

b:以单词为单位进行光标前移。

6.大小写转换

在命令模式下,SHIFT按着不动,再按ESC下面的波浪号可以实现大小写转换。

例如:

第三行本来想小写的,但不小心弄成大写的了,可以通过次操作将这一行转换成小写。

7.行内局部删除

在命令模式下:

x:从光标位置向后删除一个字符;n+x:从光标位置向后删除n个字符;

shift+x:从光标位置向前删除一个字符;n+shift+x:从光标位置向前删除n个字符;

8.文本替换

在命令模式下:

方法一:

r+字符:对光标位置的字符进行替换。n+r+字符:对光标后n个位置的字符进行替换。

例如:输入3 r a,就会将前三个字符替换成a。

方法二:

shift+r:进行替换模式。

从此,每次键入的字符会对光标后面的字符逐一替换:

9.从命令模式进入插入模式的常用方法

i:光标不变,直接进入插入模式。

o:光标另起一行,进入插入模式。

a:光标向后挪动一个字符,进入插入模式。

10.总结

在这篇文章中,我已经给大家讲了大部分关于vim的操作,绝大部分是在命令模式下的。

在下一篇文章中我会把剩下的有关vim的操作讲完,并且教大家如何配置vim,让我们在vim上能够十分方便的写代码。

在学会vim后,就可以开使学习指令提权了!如果你是普通用户,安装或删除一些东西没有权限,可以将自己的指令权限提升到root。这部分的知识会在接下来的一两篇文章中讲解到位!

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

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

相关文章

【射影几何13 】梅氏定理和塞瓦定理探讨

梅氏定理和塞瓦定理 目录 一、说明二、梅涅劳斯(Menelaus)定理三、塞瓦(Giovanni Ceva)定理四、塞瓦点的推广 一、说明 在射影几何中,梅涅劳斯(Menelaus)定理和塞瓦定理是非常重要的基本定理。通过这两个定…

09 AB 10串口通信发送原理

通用异步收发传输器( Universal Asynchronous Receiver/Transmitter, UART)是一种异步收发传输器,其在数据发送时将并行数据转换成串行数据来传输, 在数据接收时将接收到的串行数据转换成并行数据, 可以实现…

【数据分享】1929-2023年全球站点的逐年平均降水量(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全…

训练集,验证集,测试集比例

三者的区别 训练集(train set) —— 用于模型拟合的数据样本。验证集(validation set)—— 是模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。 通常用来在模型迭代训练时…

DevOps落地笔记-17|度量指标:寻找真正的好指标?

前面几个课时端到端地介绍了软件开发全生命周期中涉及的最佳实践,经过上面几个步骤,企业在进行 DevOps 转型时技术方面的问题解决了,这个时候我们还缺些什么呢?事实上很多团队和组织在实施 DevOps 时都专注于技术,而忽…

【力扣】查找总价格为目标值的两个商品,双指针法

查找总价格为目标值的两个商品原题地址 方法一:双指针 这道题和力扣第一题“两数之和”非常像,区别是这道题已经把数组排好序了,所以不考虑暴力枚举和哈希集合的方法,而是利用单调性,使用双指针求解。 考虑数组pric…

零代码3D可视化快速开发平台

老子云平台 老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。此技术已经在全球申请了专利…

力扣优选算法100道——【模板】前缀和(一维)

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 目录 🚩了解题意 🚩算法原理 🎈设定下标为1开始 🎈取值的范围 🚩实现代码 🚩了解题意 第一行的3和2,3代表行数,2代表q次查询(…

【Java数据结构】ArrayList和LinkedList的遍历

一&#xff1a;ArrayList的遍历 import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** ArrayList的遍历*/ public class Test {public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list…

MATLAB环境下生成对抗网络系列(11种)

为了构建有效的图像深度学习模型&#xff0c;数据增强是一个非常行之有效的方法。图像的数据增强是一套使用有限数据来提高训练数据集质量和规模的数据空间解决方案。广义的图像数据增强算法包括&#xff1a;几何变换、颜色空间增强、核滤波器、混合图像、随机擦除、特征空间增…

寒假作业2024.2.6

1.现有无序序列数组为23,24,12,5,33,5347&#xff0c;请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用直接插入排序实现升序排序 函数4:请使用插入排序实现升序排序 #include <stdio.h> #include <stdl…

一个坐标系查询网站python获取所有坐标系

技术路线选择 我是使用的vue 3开发的网页界面&#xff0c;element-plus构建网页组件&#xff0c;openlayer展示地图&#xff0c;express提供后端API&#xff0c;vercel进行在线部署。 python获取所有坐标系 想要展示所有坐标系&#xff0c;那需要先获取坐标系&#xff0c;怎么…

【开源】基于JAVA+Vue+SpringBoot的贫困地区人口信息管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 人口信息管理模块2.2 精准扶贫管理模块2.3 特殊群体管理模块2.4 案件信息管理模块2.5 物资补助模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 人口表3.2.2 扶贫表3.2.3 特殊群体表3.2.4 案件表3.2.5 物资补助表 四…

机器人学、机器视觉与控制 上机笔记(2.1章节)

机器人学、机器视觉与控制 上机笔记&#xff08;2.1章节&#xff09; 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&#xff0c;想同…

HTTP协议笔记

HTTP协议笔记 参考&#xff1a; &#xff08;建议精读&#xff09;HTTP灵魂之问&#xff0c;巩固你的 HTTP 知识体系 《透视 HTTP 协议》——chrono 目录&#xff1a; 1、说说你对HTTP的了解吧。  1. HTTP状态码。  2. HTTP请求头和响应头&#xff0c;其中包括cookie、跨域响…

AcWing 1238 日志统计(双指针算法)

题目概述 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志&#xff0c;日志共有 N 行。 其中每一行的格式是&#xff1a; ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长度为 D 的时间段…

《MySQL 简易速速上手小册》第1章:MySQL 基础和安装(2024 最新版)

文章目录 1.1 MySQL 概览&#xff1a;版本、特性和生态系统1.1.1 基础知识1.1.2 重点案例1.1.3 拓展案例 1.2 安装和配置 MySQL1.2.1 基础知识1.2.2 安装步骤1.2.3 重点案例1.2.4 拓展案例 1.3 基础命令和操作1.3.1 基础知识1.3.2 重点案例1.3.3 拓展案例 1.1 MySQL 概览&#…

JUC ThreadLocal

文章目录 ThreadLocal ^1.2^ 的作用使用场景示例1ThreadLocal 变量初始化ThreadLocal 源码分析源码分析总结 内存泄漏问题示例说明new Thread 方式 执行结果pool 方式执行结果原因解析总结 ThreadLocal 1.2 的作用 ThreadLocal 为每个线程提供单独的变量副本。每个变量副本都是…

史上最全嵌入式(学习路线、应用开发、驱动开发、推荐书籍、软硬件基础)

废话不多说直接上思维导图&#xff01; 如果有觉得图片看不清楚的&#xff0c;有疑问的&#xff0c;可在评论区进行留言&#xff01; 群号&#xff1a; 228447240 嵌入式总括 嵌入式书籍推荐 嵌入式软件知识 嵌入式硬件知识 嵌入式应用开发 嵌入式驱动开发 嵌入式视频推荐: 韦…

WebSocket相关问题

1.WebSocket是什么&#xff1f;和HTTP的区别&#xff1f; WebSocket是一种基于TCP连接的全双工通信协议&#xff0c;客户端和服务器仅需要一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并且支持双向数据的传输。WebSocket和HTTP都是基于TCP的应用层协议&am…