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

深入了解Linux —— 学会使用vim编辑器

前言

学习了Linux中的基本指令也理解了权限这一概念,但是我们怎么在Linux下写代码呢?

本篇就来深入学习Linux下的vim编辑器;学会在Linux下写代码。

软件包管理器

1. 软件包?

  • 在Linux下安装软件,通常是下载程序的源码,进行编译获得可执行程序。
  • 这样太麻烦了,于是就有了将常用的软件提前编译好做成软件包(相当于Linux中安装程序),放在一个服务器上,通过包管理器可以非常方便的获取到这个编译好的软件包,直接安装。
  • yum 就是Linux下非常常用的一种包管理器,(应用于FedoraRedHatCentos等发行版本上)。
  • Ubuntu上,只要使用apt作为包管理器。

2. Linux中软件

​ 首先,在Linux下安装软件,是在软件包服务器上查找对应软件,下载请求进行安装。

在这里插入图片描述

对于Linux软件安装这里就不解释那么多了,现在知道yum安装软件即可。

Vim编辑器

​ 首先,先来看一下Vi/Vim键盘图

在这里插入图片描述

看起来好乱,我知道你很急,但你先别急;随我细细看来。

1. 什么是Vim编辑器?

​ vim 是一款常用的文本编辑器,特别适合在Linux和Unix操作系统下进行程序开发、系统管理等工作。使用 vim 可以高效地编辑各种类型的文件,例如代码文件、配置文件等。在Linux系统中,大部分配置文件都是ASCII的纯文本形式存放的,因此使用vim进行编辑是非常方便和实用的。

Vim之前呢,使用ViVim可以说是Viplus版本;

VimVi都是多模式编辑器,不同的是Vim相比于Vi有一些新的特性,语法加亮,可视化操作、不仅可以在终端运行,也可以运行于windows、macOS等。

2. vim的安装

首先输入指令vim,如果显示下图界面,就表示已经安装过了

在这里插入图片描述

这里按:Shift + ;),然后输入q,然回车即可退出。

安装vim

​ 安装非常简单,直接执行下图指令即可。

yum install -y vim

3. Vim常见的工作模式

vim作为一款 多模式的编辑器,有着各种各样的模式,共12种,但是正常情况学会使用其中的5种即可应用于多数开发环境。

正常/普通/命令模式(Normal mode)

进入Vim编辑器的默认模式,该模式下可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进⼊Insert mode下,或者到 last line mode

插入模式((Insert mode)

在命令行模式下,按i键进入插入模式;

只有在该模式下,才能进行内容的写入;按Esc可以返回命令行模式

底行模式

在命令行模式下,按:(Shift + ;)键进入插入模式;

文件保存和退出都在底行模式才能执行,也可以进行文件替换,查找字符串,列出行号等操作。

最经常使用的就是上面这三种模式,其他的模式就不在叙述了;感兴趣可以去学习一下其他模式

在这里插入图片描述
在这里插入图片描述

命令行模式命令集

命令行的相关指令有很多,这里将其进行简单分类。

移动光标:

先来看光标相关的指令

gg:定为光标至文本最开始

在这里插入图片描述

G:定位光标到文本结束

在这里插入图片描述

​ 当然,也可以定位到任意行,只需加上n即可

在这里插入图片描述

$:定位到行结尾

$这个符号是键盘上的Shift + 4 (英文下),作用是定位到行结尾位置

在这里插入图片描述

^:定位到行开头

$这个符号是键盘上的Shift + 6 (英文下),作用是定位到行开头位置

在这里插入图片描述

w:以单词为单位,向后移动

​ 有了光标定位行,行结尾和开头;那如果行内容特别长,我们还是需要一个一个移动光标至特定位置;

w可以加速我们的移动,让我们在一行内移动光标不再是一个字符应该字符移动,而是以单词为单位(是Linux中识别,不是指英语单词)。

b:以单词为单位,向前移动

只有向后移动可不行,bw相反,b可以以单词为单位向前移动。(这里就不再演示了)。

复制/剪切 与 粘贴:

yy:复制当前行

yy可以赋值当前行内容,n+yy可以复制从当前行开始的n行内容。

p: 贴到当前行的下一行

p粘贴,将内容粘贴到当前行的下一行,n + p 可以粘贴n行。

在这里插入图片描述

dd:剪切当前行

dd剪切当前行,n + dd 剪切从当前行开始的后面n行。

在这里插入图片描述

yw: 将光标位置到字尾的字符复制到缓冲区

yw复制光标位置到字尾的字符,n + yw复制n个字符。

撤销:

u: 撤销操作,回到上一次操作之前

Ctrl + R: 对u的撤销操作进行撤销。

这两个操作比较有意思,u可以撤销Ctrl + R的撤销操作,而Ctrl + R又可以撤销u的撤销操作。

删除:

x:删除光标当前位置的字符

x可以删除光标当前位置的字符,n + x 可以删除从光标当前位置开始后面n个位置的字符。

在这里插入图片描述

X:删除光标位置的前一个字符。

X删除光标位置前,n + X 可以删除光标位置前n个字符。

X就是删除光标位置前的字符,这里就不演示了。

修改:

r: 修改光标当前位置的内容

r可以修改光标当前位置的内容,n + r 可以修改光标从当前位置开始后面n个字符的内容。

在这里插入图片描述

插入模式命令集

​ 插入模式主要用于内容的写入,命令集相对较少;

命令行模式下,按i 即可进入插入模式

Shift+ 方向键上下移动:移动光标并选择文本
Shift + Insert:粘贴剪切板中的内容
shift + i 将光标快速切换到 当前行行首
shift + a 将光标快速切换到 当前行行尾
shift + o 将光标快速切换到 上一行行首

插入模式下,按Esc键即可返回命令行模式。

底行模式命令集

​ 命令行模式下,按:即可进入底行模式。

在这里插入图片描述

列出/取消行号

set nu: 列出行号

set nonu: 取消行号

在这里插入图片描述

跳转到某一行:

n:在冒号后输⼊⼀个数字,再按回车键就会跳到第n行了

在这里插入图片描述

查找字符:

/关键字:按/键,然后输入想要查找的字符,如果第一次找的不是想要的哪一个,可以按n跳转到下一个查找到的内容

?关键字:按?键,然后输入想要查找的字符,如果第一次找的不是想要的哪一个,可以按n跳转到下一个查找到的内容

保存和退出:

w:保存文件

q: 退出vim,(q!强制退出)。

通常情况下wq一起使用,保存并退出。

4. vim 使用便利操作

同时打开多个文件

​ 在我们已经使用vim打开一个文件时,如果想要再打开另外一个文件,这时就在命令行模式下输入vs 文件名称即可。

在这里插入图片描述

替换模式:快速注释

vim中存在一种模式,可以快速替换文本内容—— 替换模式

现在我们想要注释多行数据,如果在插入模式中一行一行注释就有点太慢了;现在使用替换模式快速注释。

操作如下:

  1. 首先在命令行模式下按Ctrl+v 进入视图模式
  2. 在视图模式下选择多行(h左、j下、k上、l右)
  3. A(Shift+a),进入插入模式
  4. 注释后,返回命令行模式即可

在这里插入图片描述

批量化去注释

能批量化注释,那也要会批量化去注释

  1. 首先在命令行模式下按Ctrl+v 进入视图模式
  2. 在视图模式下选择多行(h左、j下、k上、l右)
  3. d删除即可

在这里插入图片描述

​ 到这里,vim的基本操作相信你已经了解,并且已经回使用vim来编写一段代码了。

使用体验提升:vim的配置

如果vim没有任何配置,使用起来就十分不方便,这里简单配置一下

  • 在目录/etc/下,有一个vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
  • 建议在自己的家目录下配置即可;在家目录下创建配置文件,名.vimrc(一个隐藏文件)。
  • vim .vimrc打开.vimrc文件 自己配置vim

在这里插入图片描述

常用配置:

  • 设置语法高亮:syntax on
  • 显示行号:set nu
  • 设置缩进:set shiftwidth=4

在这里插入图片描述

如果有实力,可以自己配置;当然也可以使用别人配置好的vim。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2oul0hvapjsws

相关文章:

深入了解Linux —— 学会使用vim编辑器

前言 学习了Linux中的基本指令也理解了权限这一概念,但是我们怎么在Linux下写代码呢? 本篇就来深入学习Linux下的vim编辑器;学会在Linux下写代码。 软件包管理器 1. 软件包? 在Linux下安装软件,通常是下载程序的源码…...

C05S01-Web基础和HTTP协议

一、Web基础 1. Web相关概念 1.1 URL URL(Uniform Resource Locator,统一资源定位符),是一种用于在互联网上标识和定位资源的标准化地址,提供了一种访问互联网上特定资源的方法。URL的基本格式如下所示:…...

MIT工具课第六课任务 Git基础练习题

如果您之前从来没有用过 Git,推荐您阅读 Pro Git 的前几章,或者完成像 Learn Git Branching 这样的教程。重点关注 Git 命令和数据模型相关内容; 相关内容整理链接:Linux Git新手入门 git常用命令 Git全面指南:基础概念…...

计算机网络安全

从广义来说,凡是涉及到网络上信息的机密性、报文完整性、端点鉴别等技术和理论都是网络安全的研究领域。 机密性指仅有发送方和接收方能理解传输报文的内容,而其他未授权用户不能解密(理解)该报文报文完整性指报文在传输过程中不…...

Delphi 实现键盘模拟、锁定键盘,锁定鼠标等操作

Delphi 模拟按键的方法 SendMessageA 说明: 调用一个窗口的窗口函数,将一条消息发给那个窗口。除非消息处理完毕,否则该函数不会返回SendMessage所包含4个参数: 1. hwnd 32位的窗口句柄窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数…...

RTK数据的采集方法

采集RTK(实时动态定位)数据通常涉及使用高精度的GNSS(全球导航卫星系统)接收器,并通过基站和流动站的配合来实现。本文给出RTK数据采集的基本步骤 文章目录 准备设备设置基站设置流动站数据采集数据存储与处理应用数据…...

Next.js 入门学习

一、引言 在现代 Web 开发领域,Next.js 已成为构建高性能、可扩展且用户体验卓越的 React 应用程序的重要框架。它基于 React 并提供了一系列强大的特性和工具,能够帮助开发者更高效地构建服务器端渲染(SSR)、静态站点生成&#…...

2024年认证杯SPSSPRO杯数学建模B题(第一阶段)神经外科手术的定位与导航解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…...

安卓底层相机流的传输方式

这是安卓 相机流的定义 typedef enum {CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */CAM_STREAMING_MODE_BURST, /* burst streaming */CAM_STREAMING_MODE_BATCH, /* stream frames in batches */CAM_STREAMING_MODE_MAX} cam_streaming_mode_t; 在ca…...

【单链表】(更新中...)

一、 题单 206.反转链表203.移除链表元素 876.链表的中间结点BM8 链表中倒数最后k个结点21.合并两个有序链表 二、题目简介及思路 206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路简单,但是除了要两个指针进…...

开源堡垒机JumpServer配置教程:使用步骤与配置

开源堡垒机JumpServer配置教程&#xff1a;使用步骤与配置 上一篇文章星哥讲了如何安装JumpServer堡垒机&#xff0c;本篇文章来讲如何配置和使用JumpServer。 安装成功后&#xff0c;通过浏览器访问登录 JumpServer 地址: http://<JumpServer服务器IP地址>:<服务运…...

上门服务小程序开发,打造便捷生活新体验

随着互联网的快速发展&#xff0c;各种上门服务成为了市场的发展趋势&#xff0c;不管是各种外卖、家政、美甲、维修、按摩等等&#xff0c;都可以提供上门服务&#xff0c;人们足不出户就可以满足各种需求&#xff0c;商家也能够获得新的拓展业务渠道&#xff0c;提高整体收益…...

iOS中的类型推断及其在Swift编程语言中的作用和优势

iOS中的类型推断及其在Swift编程语言中的作用和优势 一、iOS中的类型推断 类型推断&#xff08;Type Inference&#xff09;是编程语言编译器或解释器自动推断变量或表达式的类型的能力。在支持类型推断的语言中&#xff0c;开发者在声明变量时无需显式指定其类型&#xff0c…...

工业检测基础-缺陷形态和相机光源选型

缺陷形态与相机选择依据 微小点状缺陷&#xff08;如微小气泡、杂质颗粒&#xff09; 相机选择依据&#xff1a; 分辨率&#xff1a;需要高分辨率相机&#xff0c;无论是面阵还是线阵相机&#xff0c;以确保能够清晰地分辨这些微小的点。对于面阵相机&#xff0c;像元尺寸要小&…...

Python100道练习题

Python100道练习题 BIlibili 1、两数之和 num1 20 num2 22result num1 num2print(result)2、一百以内的偶数 list1 []for i in range(1,100):if i % 2 0:list1.append(i) print(list1)3、一百以内的奇数 # 方法一 list1 [] for i in range(1,100):if i % 2 ! 0:lis…...

2024年华中杯数学建模A题太阳能路灯光伏板的朝向设计问题解题全过程文档及程序

2024年华中杯数学建模 A题 太阳能路灯光伏板的朝向设计问题 原题再现 太阳能路灯由太阳能电池板组件部分&#xff08;包括支架&#xff09;、LED灯头、控制箱&#xff08;包含控制器、蓄电池&#xff09;、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。…...

【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务

阿里云对象存储 1、创建阿里云对象存储节点2、上传文件2.1 修改项目配置文件2.2 定义一个Properties类获取配置信息2.3 准备一个alioss工具类2.4 创建注册类&#xff0c;将AliOssUtil 注册成Bean2.5 使用AliOssUtil 工具类上传文件2.6 注意事项 使用阿里云对象存储服务分为以下…...

网盘管理系统

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 设计题目&#xff1a;网盘管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软…...

learn-(Uni-app)跨平台应用的框架

使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一份代码&#xff0c;可发布到iOS、Android、Web&#xff08;包括微信小程序、百度小程序、支付宝小程序、字节跳动小程序、H5、App等&#xff09;等多个平台。 跨平台&#xff1a;Uni-app 支持编译到iOS、Android、W…...

趋同进化与趋异进化的区别及分析方法-随笔03

趋同进化与趋异进化的区别及分析方法 1. 引言 在生物学中&#xff0c;进化是指生物种群随着时间的推移&#xff0c;通过遗传变异、自然选择、基因漂变等机制的作用&#xff0c;逐渐改变其基因型和表型的过程。进化的方式有很多种&#xff0c;其中趋同进化&#xff08;Converg…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...