深入了解Linux —— 学会使用vim编辑器
前言
学习了
Linux中的基本指令也理解了权限这一概念,但是我们怎么在Linux下写代码呢?
本篇就来深入学习Linux下的vim编辑器;学会在Linux下写代码。
软件包管理器
1. 软件包?
- 在Linux下安装软件,通常是下载程序的源码,进行编译获得可执行程序。
- 这样太麻烦了,于是就有了将常用的软件提前编译好做成软件包(相当于
Linux中安装程序),放在一个服务器上,通过包管理器可以非常方便的获取到这个编译好的软件包,直接安装。yum就是Linux下非常常用的一种包管理器,(应用于Fedora、RedHat和Centos等发行版本上)。- 在
Ubuntu上,只要使用apt作为包管理器。
2. Linux中软件
首先,在Linux下安装软件,是在软件包服务器上查找对应软件,下载请求进行安装。

对于
Linux软件安装这里就不解释那么多了,现在知道yum安装软件即可。
Vim编辑器
首先,先来看一下Vi/Vim键盘图

看起来好乱,我知道你很急,但你先别急;随我细细看来。
1. 什么是Vim编辑器?
vim 是一款常用的文本编辑器,特别适合在Linux和Unix操作系统下进行程序开发、系统管理等工作。使用 vim 可以高效地编辑各种类型的文件,例如代码文件、配置文件等。在Linux系统中,大部分配置文件都是ASCII的纯文本形式存放的,因此使用vim进行编辑是非常方便和实用的。
在Vim之前呢,使用Vi ;Vim可以说是Viplus版本;
Vim和Vi都是多模式编辑器,不同的是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:以单词为单位,向前移动
只有向后移动可不行,
b和w相反,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中存在一种模式,可以快速替换文本内容—— 替换模式
现在我们想要注释多行数据,如果在插入模式中一行一行注释就有点太慢了;现在使用替换模式快速注释。
操作如下:
- 首先在命令行模式下按
Ctrl+v进入视图模式- 在视图模式下选择多行(
h左、j下、k上、l右)- 按
A(Shift+a),进入插入模式- 注释后,返回命令行模式即可

批量化去注释
能批量化注释,那也要会批量化去注释
- 首先在命令行模式下按
Ctrl+v进入视图模式- 在视图模式下选择多行(
h左、j下、k上、l右)- 按
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配置教程:使用步骤与配置 上一篇文章星哥讲了如何安装JumpServer堡垒机,本篇文章来讲如何配置和使用JumpServer。 安装成功后,通过浏览器访问登录 JumpServer 地址: http://<JumpServer服务器IP地址>:<服务运…...
上门服务小程序开发,打造便捷生活新体验
随着互联网的快速发展,各种上门服务成为了市场的发展趋势,不管是各种外卖、家政、美甲、维修、按摩等等,都可以提供上门服务,人们足不出户就可以满足各种需求,商家也能够获得新的拓展业务渠道,提高整体收益…...
iOS中的类型推断及其在Swift编程语言中的作用和优势
iOS中的类型推断及其在Swift编程语言中的作用和优势 一、iOS中的类型推断 类型推断(Type Inference)是编程语言编译器或解释器自动推断变量或表达式的类型的能力。在支持类型推断的语言中,开发者在声明变量时无需显式指定其类型,…...
工业检测基础-缺陷形态和相机光源选型
缺陷形态与相机选择依据 微小点状缺陷(如微小气泡、杂质颗粒) 相机选择依据: 分辨率:需要高分辨率相机,无论是面阵还是线阵相机,以确保能够清晰地分辨这些微小的点。对于面阵相机,像元尺寸要小&…...
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题 太阳能路灯光伏板的朝向设计问题 原题再现 太阳能路灯由太阳能电池板组件部分(包括支架)、LED灯头、控制箱(包含控制器、蓄电池)、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。…...
【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务
阿里云对象存储 1、创建阿里云对象存储节点2、上传文件2.1 修改项目配置文件2.2 定义一个Properties类获取配置信息2.3 准备一个alioss工具类2.4 创建注册类,将AliOssUtil 注册成Bean2.5 使用AliOssUtil 工具类上传文件2.6 注意事项 使用阿里云对象存储服务分为以下…...
网盘管理系统
文末获取源码和万字论文,制作不易,感谢点赞支持。 设计题目:网盘管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软…...
learn-(Uni-app)跨平台应用的框架
使用 Vue.js 开发所有前端应用的框架,开发者编写一份代码,可发布到iOS、Android、Web(包括微信小程序、百度小程序、支付宝小程序、字节跳动小程序、H5、App等)等多个平台。 跨平台:Uni-app 支持编译到iOS、Android、W…...
趋同进化与趋异进化的区别及分析方法-随笔03
趋同进化与趋异进化的区别及分析方法 1. 引言 在生物学中,进化是指生物种群随着时间的推移,通过遗传变异、自然选择、基因漂变等机制的作用,逐渐改变其基因型和表型的过程。进化的方式有很多种,其中趋同进化(Converg…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
