【Linux】vim编辑器

news2024/11/25 16:49:56

  

这一趴我们要学习vim编辑器,知道vim是什么、掌握它的3种模式以及学会其常见操作。

目录

Ⅰ. 引入

Ⅱ. 什么是vim?

Ⅲ. 3种模式

Ⅳ. 常见操作

命令模式下

复制粘贴组

撤销组

光标定位组

光标移动组

剪切组

切换、替换组

删除组

底行模式下


Ⅰ. 引入

在学习vim之前,我们先来回忆一下:

之前写代码、跑代码、调试代码,是不是都在VS2019上进行的?

像VS2019这样的软件,其实是一个内含多种工具的集成开发环境(Integrated Development Environment,简称IDE)。

它为程序员提供了一个集中的开发环境,我们编写、调试和测试都在IDE上进行。

我们将要学习的vim,仅仅用于编写代码,其功能是IDE的一部分,

而调试、测试等都分别在其他的软件上进行。

❓既然我们已经有IDE这么强大的软件了,为什么还要学vim呢?

一来,我们在公司里或多或少会需要直接登服务器 来进行代码的编写。

所以,在没有IDE的情况下,我们要会用命令行写代码。

二来,使用vim可以帮我们感受文本编辑器的多样化,并且vim更加切近底层。

而且,vim是一个功能极其强大的软件。

某人曾说过:“世界上只有三种编辑器 vim, Emacs, 其他。”,

据说,一个优秀的 vim 程序员,操作编辑文本的能力和效率可能是其他人的4-5倍!

因此,学vim将会是一件很helpful的事!🥰

Ⅱ. 什么是vim?

vi / vim都是Linux和Unix系统下的多模式文本编辑器,其性质和nano记事本相似。

vim是vi的升级版,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,

如语法加亮,自动缩进等。

vim功能十分强大,因此学习成本较其他编辑器要高很多。

那怎么用vim打开一个文件呢?

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

$ touch test.c

然后“vim+文件名”就可以打开它:

$ vim test.c

打开以后就是这个样子的:

Ⅲ. 3种模式

其实vim下有很多种模式,但我们目前只需掌握这三种:命令模式、插入模式、底行模式。

1.命令模式 (command mode)

又叫普通模式 / 默认模式。是vim下最重要的模式。

我们刚进入vim,光标冻结在右上角,此时是没法输入东西的,这正是处于命令模式。

  

在命令模式下,可以达成的有:

✨进入插入模式 or 底行模式;

控制光标的移动;

删除字符;

2.插入模式(Insert mode)

我们刚进入vim,是在命令模式下,这是没法打字的。

要想打字,得按 i 键进入插入模式。(a键 或 o键也可以)

此时左下角会显示 ”INSERT“ :

  

只有在插入模式下,才能做文字输入。

❓如果发现前面有字打错了(处于插入模式ing),想把光标移到前面去改,应该怎么办?

按Esc进入命令模式,此时才能移动光标,去前面删除。

3.底行模式(last line mode)

我们想要退出vim的话,得先进入底行模式。

ⅰ. 如果此时处于命令模式,那按 shift+冒号键 (其实就是输入: )就可进入底行模式,

此时光标位于左下角:

ⅱ. 如果此时处于插入模式,那得先按Esc键转成命令模式,再按 shift+ 冒号键 进入底行模式。

也就是说,插入模式是没法直接进入底行模式的,必须经过命令模式。😥

进入底行模式以后,我们可以保存文件or退出。选项:

q:退出

w: 保存当前文件

wq:保存并退出

q! :强制退出

底行模式下,可以达成:

✨保存 or 退出文件;

进行文件的替换;

查找字符串;

列出行号。


插入模式 or 底行模式想要进入命令模式的话,无脑按Esc即可。

刚刚说了,命令模式是vim下最重要的模式。有多重要?

它就像核心,其他模式都是从命令模式进入的。

Ⅳ. 常见操作

命令模式下

❗下面这些操作都是在命令模式下进行的。

复制粘贴组

yy复制
p粘贴
[n] yy复制从当前行开始的n行
[n] p

将yy的内容粘贴n份(默认粘贴到当前行的下一行,也可移动光标指定位置)

示例:我想把hello world拷贝3次。

Step1:先把光标放在指定行,按Esc转换到命令模式(❗),然后按yy复制

Step2:按3次p。按几次粘贴几次。

或者直接按3+p。

撤销组

u撤销
ctrl+u取消u的撤销操作

光标定位组

shift + g光标定位到文件的最后一行 (的开头)
gg……的最开始
shift + 4将光标定位到当前行的最末尾
shift + 6……的最开始
n + shift + g光标定位到任意行(n为行号)

示例:

光标移动组

如果移动光标是以字母为单位的话,比较精细但慢😥,

如果想在一行快速移动,我们按w/b,以单词为单位进行移动。

w以单词为单位进行光标的向前移动
b……的向后移动

命令模式下,我们要习惯使用H、J、K、L来上下左右移动光标。

以前的键盘是没有上下左右的移动按键的,那时的人们用这四个键来充当。

现在即使有了⬆️⬇️键,我们依然要习惯H J K L,

因为以后要学的一些组合命令,只支持用 H J K L。如批量化注释。

可以这么记:

剪切组

剪切与p(粘贴)配合使用。不用p的话,就是删除。

dd剪切 / 删除
ndd剪切从当前行开始的n行

切换、替换组

shift + ~大小写切换
r替换光标所在位置的字符
[n] r替换光标所在位置开始的n个字符
shift + r可进入replace模式(左下角会有REPLACE)。此模式下,输入即可替换。

示例 r 与[n] r :how to把big变成pig,再变成111?

示例shift + r:进入replace模式后,替换起来很free~🥰

删除组

x 或 X(即shift+x)删除光标所在的字符
[n] x或X删除当前光标位置开始的后n个字符(x从左往右删,X从右往左删)

示例x:我们现在要删掉1234的2个字符,删完后究竟是12,还是34呢?

  

可见是12。x是从左往右删的。

示例X:1234删完后究竟是12,还是34呢?

可见是34。X是从右往左删的。

底行模式下

❗要完成以下操作,得先进入底行模式

set nu / nonu打开 / 取消行号
vs 文件名分屏操作
w / w!保存 / 强制保存
q / q!退出 / 强制退出
!cmd(cmd是具体的命令)不退出vim,执行对应的命令

示例 开关行号:

set nu 打开行号

set nonu 取消行号

示例 分屏:

vs 文件名 分屏操作

vs 配合wq也可以新建文件并保存:

❓有了分屏以后,我们进入底行,进的到底是哪个文件的底行呢?😵‍💫

光标在哪个文件下,进的就是哪个的底行。

❓光标怎么在两个文件之间切换?

ctrl按住不动,w快速按两下。

我们以后阅读别人的代码时,常常要用到分屏:一边是声明、头文件,一边是实现。

示例!cmd:

!man : 在vim下查看man手册

!gcc code.c : 编译code.c

!./a.out : 执行a.out


OK,以上就是关于vim的介绍。下一趴我们要学习如何使用Linux下的编译器。😀

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

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

相关文章

AI+游戏线下沙龙活动暨COC上海城市开发者社区8月活动

引言 近年来,随着人工智能技术的不断发展和游戏开发技术的不断更新,越来越多的游戏公司开始将人工智能技术应用于游戏领域,以提高开发效率、降低成本,实现游戏玩家更好的游戏体验。为了探讨AI游戏的技术实践经验,近日在…

Spring Cloud Alibaba笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Spring Cloud Alibaba 笔记1、Nacos 服务注册和配置中心1.1、Nacos 之下载启动1.2、Nacos 之注册中心1.3、Nacos 之服务发现1.4、Nacos 之配置中心1.5、Nacos 之分类配置1.6、Nacos 之…

【OpenGauss源码学习 —— 执行算子(Result 算子)】

执行算子(Result 算子) 控制算子Result 算子ExecInitResult 函数ResultState 结构体ExecInitResultTupleSlot 函数ExecAllocTableSlot函数 ExecResult 函数TupleTableSlot 结构体ExecProcNode 函数ExecProcNodeByType 函数ExecProject 函数 ExecEndResul…

docker版jxTMS使用指南:使用jxTMS提供数据

本文讲解了如何jxTMS的数据访问框架,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内容 4…

韶音的骨传导耳机怎么样,韶音骨传导耳机是真的骨传导吗

韶音骨传导耳机最为受瞩目的是OpenRun Pro,在发声单元位置上采用了开孔的处理,佩戴上耳的时候发声单元可以贴合耳道,在低频延伸性,但在中高频的时候整体会出现震感,纤细的耳挂在佩戴的时候是有着不错的舒适度的&#x…

Java SpringBoot+Vue 的班级综合测评管理系统的设计与实现(2.0 版本)

文章目录 1. 简介2. 技术栈 3. 需求分析用户需求分析功能需求分析系统性能需求分析 4系统总体设计与实现4.1总体设计 5 系统功能的详细设计与实现5.1 管理员功能模块5.2学生功能模块5.3教师功能模块 源码下载地址 1. 简介 传统的班级综合测评管理系统,一开始都是手工…

Django实现音乐网站 ⒀

使用Python Django框架制作一个音乐网站, 本篇主要是推荐页-推荐排行榜、推荐歌手功能开发。 目录 推荐页开发 推荐排行榜 单曲表增加播放量 表模型增加播放量字段 执行表操作 模板中显示外键对应值 表模型外键设置 获取外键对应模型值 推荐排行榜视图 推…

基于web的鲜花商城系统java jsp网上购物超市mysql源代码

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于web的鲜花商城系统 系统有2权限:前台…

HCIA---访问控制列表

文章目录 目录 前言 一.ACL简介: 二.ACL工作原理 ACL组成: ​编辑 规则编号: ACL匹配规则: 总结 前言 一.ACL简介: ACL全称为Access Control List,即访问控制表,是一种用于控制网络资源访问…

微软韦青:滑向冰球将要到达的位置 | 科创人数智思维私董会第9期回顾

2023年8月5日,由科创人、北航投资联手创办的科创人数智思维私董会第9期圆满举行。 微软(中国)首席技术官韦青担任本次活动引导嘉宾,近20位来自传统企业、科创企业、投资机构的CEO、技术决策者及领域专家,围绕新人-机时…

【技术篇】• 饮用水除硝酸盐、地下水除砷、矿泉水除溴的技术汇总

我们所说的“自来水”是指从水龙头里放出来的水。但从水龙头里放出来并不等于安全卫生。实际上,原水必须经过各种处理措施之后才能称为安全卫生的饮用水。每一滴水都要经过了混凝、沉淀、过滤、消毒四个步骤的处理,才能去除杂质和细菌,变得安…

恒运资本:简易程序定增是什么意思?

近年来,在我国股市中,简易程序定增成为了一种受欢迎的融资方法。许多人听过它但并不知道它的含义和工作原理。在本文中,我们将从多个角度来分析简易程序定增。 一、什么是简易程序定增? 简易程序定增是指在不需求经过股东大会批阅…

这6本期刊不再被收录!8月SCISSCI期刊目录已更新~

【SciencePub学术】2023年8月21日,科睿唯安更新了Web of Science核心期刊目录。 此次更新后SCIE期刊目录共包含9496本期刊,SSCI期刊目录共包含3554本期刊。此次SCIE & SSCI期刊目录更新,与上次更新(2023年7月)相比…

AD四层板设计(Altium Designer)

AD绘制四层板 前言一、正片层和负片层介绍二、PCB板的叠层设计1.两层板的叠层2.四层板的叠层 三、规则设计参考资料 前言 1、用 Altium Designer 软件绘制电路时,通常2层板能实现设计需求。遇到板框固定,元器件密集的情况下,2 层板无法实现预…

万字长文带你快速了解整个Flutter开发流程

文章目录 背景1.简介与优势Flutter是什么?为什么选Flutter? 2.开发环境搭建安装Flutter SDK配置开发环境 3.创建项目项目结构概览: 4.UI 构建与布局什么是Widget:StatelessWidget和StatefulWidget:Widget的组合&#x…

不规则透明屏:工作原理和特点应用详解

不规则透明屏是一种新型的显示技术,它可以将图像或视频投射到任意形状的透明屏上,使得观众可以从不同角度观看到清晰的图像。 这种技术可以应用于各种领域,如广告、展览、商场等,具有很大的市场潜力。 不规则透明屏的工作原理是…

5款很少人知道的小众软件,先收藏再下载!

​ 今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。 自定义开始菜单图标——TileIconifier ​ TileIconifier是一款可以让你自定义Windows开始菜单图标的软件,它可以替换…

Lnton羚通云算力平台OpenCV Python颜色空间转换与抠图教程

在 OpenCV Python 中,颜色空间转换和图像抠图是常见的图像处理任务。下面我将为你介绍如何进行颜色空间转换和图像抠图。 颜色空间转换: 在 OpenCV Python 中,可以使用 cv2.cvtColor() 函数将图像从一个颜色空间转换为另一个颜色空间。常用的…

jenkins全量迁移

文章目录 1、目的2、迁移1)查看jenkins的主目录2)登录要迁出的服务器打包3)找到对应的war包4)登录对应迁入服务,上传war包和打包的jenkins数据等5)在新的服务器解压迁入的数据等,并查看端口是否…

python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件

文章目录 🎥前言💼安装Pygame🔋游戏的实现读写并存储【外星人入侵】游戏最高分游戏源码alien_invasion.pygame_functions.pyship.pyalien.pybullet.pybutton.pyscoreboard.pygame_stats.pysettings.py宇宙飞船和外星人的 .bmp类型文件 &#…