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

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.mzph.cn/news/673276.shtml

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

相关文章

2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料

题库来源:安全生产模拟考试一点通公众号小程序 2024年【化工自动化控制仪表】最新解析及化工自动化控制仪表考试资料,包含化工自动化控制仪表最新解析答案和解析及化工自动化控制仪表考试资料练习。安全生产模拟考试一点通结合国家化工自动化控制仪表考…

《dx12 龙书》第四部分学习笔记——预备知识(下)

7、多重采样技术的原理 由于屏幕中显示的像素不可能是无穷小的,所以并不是任意一条直线都能在显示器上“平滑”而完美地呈现出来。即为以像素矩阵 (matrix of pixels, 可以理解为“像素2D数组”)逼近直线的方法所产生的“阶梯” &…

EDM营销平台哪个好?推荐的邮件营销平台?

EDM邮件营销平台有哪些?外贸EDM邮件营销平台有哪些? EDM营销平台已成为企业推广产品和服务的重要工具。但是,面对市场上众多的EDM营销平台,究竟哪个更好呢?下面,蜂邮EDM将从平台功能、用户体验、数据分析和…

Matlab使用点云工具箱进行点云配准

一、代码 source_pc pcread(bun_zipper.ply); target_pc pcread(bun_zipper2.ply); % 下采样 gridStep 0.001; ptCloudA pcdownsample(source_pc,gridAverage,gridStep); ptCloudB pcdownsample(target_pc,gridAverage,gridStep); % 初始变换矩阵 tform_initial affine3…

C语言笔试题之实现C库函数 pow()(递归的思想)

实例要求: 1、请你实现C库函数 pow()(stdio.h & math.h) ,即计算 x 的整数 n 次幂函数(即x^n );2、函数声明:double myPow(double x, int n);参数:1、x …

YOLOv8改进 更换轻量级网络结构

一、GhostNet论文 论文地址:1911.11907.pdf (arxiv.org) 二、 GhostNet结构 GhostNet是一种高效的目标检测网络,具有较低的计算复杂度和较高的准确性。该网络采用了轻量级的架构,可以在计算资源有限的设备上运行,并能够快速地实时检测图像中的目标物体。 GhostNet基于Mo…

AI大模型开发架构设计(9)——AI 编程架构刨析和业务应用实战案例

文章目录 AI 编程架构刨析和业务应用实战案例1 AI编程代码生成模型剖析编程方式的发展代码自动生成基于大模型的AI编程工具——Github Copilot以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模型结构以 CodeGeeX 为…

[设计模式Java实现附plantuml源码~行为型]请求的链式处理——职责链模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

JWT令牌 | 一个区别于cookie/session的更安全的校验技术

目录 1、简介 2、组成成分 3、应用场景 4、生成和校验 5、登录下发令牌 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Pyth…

洛谷C++简单题小练习day9—[AHOI2017]寻找探监点

day9--[AHOI2017]寻找探监点--2.7 习题概述 题目描述 一个nn 的网格图(标号由 1,1 开始)上有 m 个探测器,每个探测器有个探测半径 r ,问这 nn 个点中有多少个点能被探测到。 输入格式 第一行 3 个整数 n,m,r。 接下来 m 行&…

黄金交易策略:heiken ashi smoothed与macd快慢指标协同工作

第2点应该是有很大的优化空间 推荐阅读:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客

Verilog刷题笔记23

题目: Suppose you’re building a circuit to process scancodes from a PS/2 keyboard for a game. Given the last two bytes of scancodes received, you need to indicate whether one of the arrow keys on the keyboard have been pressed. This involves a fairly simp…

2020年通信工程师初级专业实务真题

文章目录 一、第1章 现代通信网概述:信令网、同步网、管理网。第10章 通信业务:通信产业链,通信终端的分类,通信业务的定义及分类二、第3章 接入网:无线接入网的优点,接入网的接口(UNI&#xff…

git rebase # |REBASE 1/1 #rebase in progress; onto

git 代码解决冲突之后会提示rebase in progress; onto 1 执行git rebase --abort 回到没有pull代码之前 2 git pull 3 解决冲突 4 git add . (不需要git commit) 5 git rebase --continue 6 git push

人工智能之大数定理和中心极限定理

大数定律 大数定律:是一种描述当试验次数很大时所呈现的概率性致的定律,由概率统计定义“频率收敛于概率”引申而来。换而言之,就是n个独立分布的随机变量其观察值的均值依概率收敛于这些随机变量所属分布的理论均值,也就是总体均…

拿捏循环链表

目录: 一:单链表(不带头单向不循环)与循环链表(带头双向循环)区别 二:循环链表初始化 三:循环链表头插 四:循环链表尾插 五:循环链表头删 六&#xff1…

kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)

点击下载《kafka客户端生产者消费者kafka可视化工具(可生产和消费消息)》 1. 前言 因在工作中经常有用到kafka做消息的收发,每次调试过程中,经常需要查看接收的消息内容以及人为发送消息,从网上搜寻了一下&#xff0…

【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)

目录 1 -> 再谈构造函数1.1 -> 构造函数体赋值1.2 -> 初始化列表1.3 -> explicit关键字 2 -> static成员2.1 -> 概念2.2 -> 特性 3 -> 友元3.1 -> 友元函数3.2 -> 友元类 4 -> 内部类5 -> 匿名对象6 -> 拷贝对象时的一些编译器优化 1 -…

K8s环境下rook-v1.13.3部署Ceph-v18.2.1集群

文章目录 1.K8s环境搭建2.Ceph集群部署2.1 部署Rook Operator2.2 镜像准备2.3 配置节点角色2.4 部署operator2.5 部署Ceph集群2.6 强制删除命名空间2.7 验证集群 3.Ceph界面 1.K8s环境搭建 参考:CentOS7搭建k8s-v1.28.6集群详情,把K8s集群完成搭建&…

基于高通滤波器的ECG信号滤波及心率统计matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 ECG信号简介 4.2 高通滤波器原理 4.3 心率统计 5.完整工程文件 1.课题概述 通过高通滤波器对ECG信号进行滤波,然后再统计其心率。 2.系统仿真结果 3.核心程序与模型 版本&#xff1a…