深入探索Linux开发工具:Vim与Yum
目录
引言
Vim:强大的文本编辑利器
Vim的基本概念
Vim的基本操作
Vim正常模式命令集
Vim末行模式命令集
Vim的配置
使用插件拓展Vim功能
Yum:便捷的Linux软件包管理器
注意事项
结语
引言
在Linux的世界里,高效的开发工具是提升生产力的关键。Vim作为一款强大的文本编辑器,以及Yum这种便捷的软件包管理器,是众多Linux开发者的得力助手。今天,就让我们深入探究它们的奥秘。
Vim:强大的文本编辑利器
Vim的基本概念
Vim本质上是Vi的增强版,是一款模式编辑器,主要有三种基本模式:
- 正常模式(Normal mode):这是Vim启动后的默认模式,用于浏览和操作文本,比如移动光标、删除、复制、粘贴等操作。在这个模式下,键盘的按键大多被映射为各种编辑命令。
- 插入模式(Insert mode):当需要输入文本时,从正常模式切换到插入模式。在插入模式下,Vim的行为类似常见的文本编辑器,输入的字符会直接显示在光标位置。
- 末行模式(Last line mode):用于执行文件保存、退出,以及查找替换、执行外部命令等操作。在正常模式下输入 : 即可进入末行模式。
Vim的基本操作
1. 进入Vim:在系统提示符下输入 vim 文件名 ,例如 vim test.c ,即可进入Vim全屏幕编辑画面。刚进入时处于正常模式,需切换到插入模式才能输入文字。
2. 模式切换
- 正常模式切换到插入模式:
- 输入 i ,从光标当前位置开始输入文件;
- 输入 a ,从当前光标所在位置的下一个位置开始输入文字;
- 输入 o ,插入新的一行,从行首开始输入文字。
- 插入模式切换到正常模式:按 Esc 键即可。
- 正常模式切换到末行模式:在正常模式下,按 : 冒号键进入。例如输入 :w 保存当前文件, :wq 保存并退出Vim, :q! 不保存强制退出Vim 。
3. 光标移动
- 使用 h (左移)、 j (下移)、 k (上移)、 l (右移) 进行单字符移动。
- G ,shift+g 移动到文章的最后, gg 移动到文章开头。
- w 光标跳到下个字的开头, e ,b 光标跳到下个字的字尾 。
4. 删除操作
- x 每按一次,删除光标所在位置的一个字符。
- dd 删除(剪切)光标所在行 。
5. 复制粘贴
- yw,yy 将光标所在之处到字尾的字符复制到缓冲区中。
- p 将缓冲区里的字符粘贴到光标所在位置 。
Vim正常模式命令集
1. 插入相关:除了前面提到的 i 、 a 、 o 进入插入模式,还有一些变体,如 I (在行首插入)、 A (在行尾插入) 。
2. 删除与修改
- r 替换光标所在处的字符。
- cw 更改光标所在处的字到字尾处 。
3. 撤销与恢复
- u 撤销上一次操作,多次按 u 可执行多次恢复。
- Ctrl + r 撤销的恢复 。
Vim末行模式命令集
1. 行号操作:输入 :set nu ,会在文件中的每一行前面列出行号。
2. 查找替换
- 查找字符使用 /关键字 ,按 n 向后查找下一个,按 N 向前查找 。
- 替换命令格式为 :s/旧字符串/新字符串/g (在当前行进行替换), :%s/旧字符串/新字符串/g (在整个文件中进行替换) 。
3. 文件操作: w 保存文件, q 退出, wq 保存并退出 wq!强制退出。
Vim的配置
1. 配置文件位置
- 系统公共的Vim配置文件位于 /etc/vimrc ,对所有用户有效。
- 用户可以在自己的主目录下创建私有配置文件 ~/.vimrc 。例如在 /root 目录下,通常已经存在一个 .vimrc 文件,如果不存在,则可创建。
2. 常用配置选项
- syntax on :设置语法高亮,让代码显示更清晰。
- set nu :显示行号。
- set shiftwidth=4 :设置缩进的空格数为4 。
使用插件拓展Vim功能
1. 安装TagList插件
- 下载 taglist.xx.zip 并解压,将解压出来的 doc 内容放到 ~/.vim/doc ,将解压出来的 plugin 下的内容拷贝到 ~/.vim/plugin 。
- 在 ~/.vimrc 中添加配置:
vimlet Tlist_show_One_File=1let Tlist_Exit_OnlyWindow=1let Tlist_Use_Right_Window=1
1. 安装文件浏览器和窗口管理器插件WinManager
- 下载 winmanager.zip (2.X版本以上)并解压,将解压出来的 doc 内容放到 ~/.vim/doc ,将解压出来的 plugin 下的内容拷贝到 ~/.vim/plugin 。
- 在 ~/.vimrc 中添加配置:
vimlet g:winManagerWindowLayout="FileExplorer|TagList"map <C-w>w :WMToggle<cr>
然后重启Vim,在正常状态下输入 :WMT ,就能看到插件生效的效果。
Yum:便捷的Linux软件包管理器
什么是软件包
在Linux下安装软件,传统方式是下载程序源代码并编译得到可执行程序,但这种方式较为繁琐。于是,软件包应运而生,它是将常用软件提前编译好,存放在软件包服务器上,通过包管理器可方便获取并安装。Yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器,主要应用在Fedora、RedHat、Centos等发行版上。
安装软件
以安装 lrzsz 为例,通过一条简单命令即可完成:
bashsudo yum install lrzsz
Yum会自动查找需要下载的软件包,此时按 y 确认安装,出现 complete 字样则表明安装完成。需要注意,安装软件时由于需向系统目录写入内容,一般需要 sudo 权限或者切换到 root 账户下操作。并且在Yum安装一个软件的过程中,若尝试安装另一个软件,Yum会报错。
卸载软件
卸载软件同样简单,命令如下:
bashsudo yum remove lrzsz
查看软件包
使用 yum list 命令可以列出当前系统中所有软件包。由于软件包数量众多,通常结合 grep 命令筛选出关注的软件包,例如:
bashyum list | grep lrzsz
输出结果类似 lrzsz.x86_64 0.12.20 - 36.el7 @base ,其中包含了软件包名称、主版本号、次版本号、源程序发行号、软件包的发行号、主机平台、cpu架构等信息。例如 x86_64 后缀表示64位系统安装包, i686 后缀表示32位系统安装包,选择时要和系统匹配; el7 表示操作系统发行版本 。
注意事项
使用Yum的所有操作必须保证主机(虚拟机)网络畅通,可通过 ping 指令验证,如 ping www.baidu.com 。
结语
Vim和Yum在Linux开发工作流中扮演着重要角色。熟练掌握Vim的各种操作和配置技巧,能让代码编辑变得高效流畅;而灵活运用Yum进行软件的安装、卸载和管理,可轻松构建和维护开发环境。希望通过这篇博客,能帮助大家更好地驾驭这两款工具,在Linux开发之路上更进一步。
相关文章:
深入探索Linux开发工具:Vim与Yum
目录 引言 Vim:强大的文本编辑利器 Vim的基本概念 Vim的基本操作 Vim正常模式命令集 Vim末行模式命令集 Vim的配置 使用插件拓展Vim功能 Yum:便捷的Linux软件包管理器 注意事项 结语 引言 在Linux的世界里,高效的开发工具是提升生…...
玩转ChatGPT:使用深入研究功能梳理思路
一、写在前面 前我尝试用ChatGPT的Deep Research(深入研究)功能来梳理文献,效果相当不错。最近,谷歌的Gemini 2.5 Pro也推出了类似功能,从网络测评来看,其表现与ChatGPT不相上下,而且还可以免费…...
UE5蓝图实现打开和关闭界面、退出
Button_Back 和Button_Exit是创建的两个按钮事件。 1.Create Widget 创建界面(打开界面) 2.Add to Viewport 添加到视图 3.remove form Parent,Target:self 从父节点移除当前界面(关闭界面) 4.Quit Game 退…...
实现vlan间的通信
这是第一种方法(更推荐第三种) PC1划分为vlan10,PC2划分为vlan20,实现PC1和PC2之间通信很简单,我们只需将网关都设置好,将交换机的0/0/1、0/0/3设置成vlan10,0/0/2、0/0/4设置成vlan20…...
Linux上位机开发实践(opencv算法硬件加速)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 图像处理里面,opencv基本是一个标准模块。但是由于图像处理的特点,如果所有的算法都是cpu来做的话,效率会很低。…...
智慧社区数据可视化中枢平台——Axure全场景交互式大屏解决方案
在数字化治理的时代浪潮中,社区管理正面临数据碎片化、响应滞后、决策盲区等核心挑战。如何将分散的安防、环境、能源、民生服务等数据整合为可操作的智慧洞察?如何让冰冷的数字转化为社区管理者手中的决策利器?Axure智慧社区可视化大屏原型模…...
动态路由, RIP路由协议,RIPv1,RIPv2
动态路由 1、回顾 路由:从源主机到目标主机的过程 源主机发送数据给目标主机,源主机会查看自身的路由信息 如果目标主机是自己同网段,源主机查看的是直连路由 如果目标主机和自己不同网段,源主机查看的是静态路由、动态路由、默…...
C++:STL的常用容器(string/vector/deque/stack/queue/list/set/multiset/map/multimap)
程序员Amin 🙈作者简介:练习时长两年半,全栈up主 🙉个人主页:程序员Amin 🙊 P S : 点赞是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全…...
【unity游戏开发入门到精通——UGUI】Canvas画布组件
注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、Canvas画布组件1、Canvas组件用来干啥2、场景中可以有多个Canvas对象 二、…...
MyBatis 中 Mapper 传递参数的多种方法
# MyBatis Mapper 传递参数的多种方法及其优势 在使用 MyBatis 进行数据库操作时,Mapper 接口的参数传递是一个非常基础但又十分重要的部分。不同的参数传递方式适用于不同的场景,合理选择可以大大提高代码的可读性和维护性。本文将详细介绍几种常见的 …...
学习海康VisionMaster之平行线计算
一:进一步学习了 今天学习下VisionMaster中的平行线计算,这个是拟合直线的扩展应用,针对需要计算平行线的应用场合,可以方便的生成对应的另外一条平行线 二:开始学习 1:什么是平行线计算? 如果…...
MyBatis Mapper 传递参数的多种方法
1. 使用顺序传参法(不推荐) 方法描述 直接通过位置来引用参数,例如 ( arg0 arg1 … ) 或者 (param1, param2…)。 示例代码 List<User> selectUsers(String name, Integer age); <...
探索 Vue 3 响应式系统:原理与实践
Vue 3 响应式系统凭借 Proxy 的优势,提供更强大、灵活的响应式方案。理解其原理与 API,能写出更高效、可维护的 Vue 应用。不断探索其细节,是进阶 Vue 开发的关键。 探索 Vue 3 响应式系统:原理与实践 Vue 3 的响应式系统是其核…...
【LeetCode 热题100】二叉树构造题精讲:前序 + 中序建树 有序数组构造 BST(力扣105 / 108)(Go语言版)
🌱 二叉树构造题精讲:前序 中序建树 & 有序数组构造 BST 本文围绕二叉树的两类构造类题目展开解析: 从前序与中序遍历序列构造二叉树 将有序数组转换为二叉搜索树 我们将从「已知遍历构造树」和「平衡构造 BST」两个角度,拆…...
开源语音文本自动对齐模型:Llama-OuteTTS-1.0-1B
OuteTTS 1.0 介绍与使用指南 1. 重要采样考虑 重复惩罚机制:OuteTTS 1.0 要求对最近的64个token应用重复惩罚,而不是对整个上下文窗口。对整个上下文窗口进行惩罚会导致输出质量下降。推荐工具:llama.cpp 和 EXL2 提供了可靠的输出质量&…...
基于SpringBoot的电影订票系统(源码+数据库+万字文档+ppt)
504基于SpringBoot的电影订票系统,系统包含两种角色:管理员、用户主要功能如下。 【用户功能】 首页:浏览系统电影动态。 资讯信息:获取有关电影行业的新闻和资讯。 电影信息:查看电影的详细信息和排片情况。 公告信…...
基于SpringBoot汽车零件商城系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
Python数据可视化:从脚本到海报级图表
Python数据可视化:从脚本到海报级图表 引言 在数据分析和科学计算领域,Python 是一种强大且灵活的工具。本文将带您了解如何使用 Python 进行数据可视化,从简单的脚本到生成高质量的海报级图表。我们将重点介绍如何使用 Matplotlib 库来创建、保存和优化图表,以便在各种场…...
使用Java截取MP4文件图片的技术指南
在多媒体处理中,从视频文件中截取图片是一个常见的需求。本文将详细介绍如何使用Java结合FFmpeg实现从MP4文件中截取图片的功能。我们将通过几种不同的方法来实现这一目标,包括直接调用FFmpeg命令行工具、使用JavaCV库以及使用JAVE库。 环境准备 在开始…...
C++(初阶)(十一)——list
十一,list 带头循环双向链表。 遍历方式:迭代器,不再支持operate[],operate[]适用于底层是数组的结构。 remove删除值,如果有多个相同的值,都会删除。 接口介绍 下面会介绍list的一些接口 构造 构造…...
leetcode 139. Word Break
这道题用动态规划解决。 class Solution { public:bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet;for(string& word:wordDict){wordSet.insert(word);}int s_len s.size();//s的下标从1开始起算,dp[j]…...
5.1、深度剖析 docker run 命令:原理阐释与数据持久化实践探究
5.1、深度剖析 docker run 命令:原理阐释与数据持久化实践探究 1、更换国内yum源2、更换国内docker源3、卸载旧版docker4、docker安装5、镜像加速器6、镜像下载7、docker run命令交互式启动-it非交互式后台运行其他参数8、持久化存储目录挂载数据卷挂载数据同步1、更换国内yum…...
【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解
目录 一、前言 二、Langchain4j概述 2.1 Langchain4j 是什么 2.2 Langchain4j 主要特点 2.3 Langchain4j 核心组件 2.4 Langchain4j 核心优势 三、Langchanin4j组件应用实战 3.1 前置准备 3.1.1 导入如下依赖 3.1.2 获取apikey 3.1.3 获取官方文档 3.2 聊天组件 3.…...
【Flink运行时架构】重要概念
前面我们讲了Flink运行时的核心组件和提交流程,但有些细节需要进一步的思考,一个具体的作业是怎样从编写的代码转换成TaskManager可以执行的任务的呢?JobManager在收到提交的作业之后,又是如何确定总共有多少任务、需要配置多少资…...
oracle命令上下左右键无法使用如何解决?
1、问题如图 2、解决办法 (1) 安装readline yum -y install readline* (2)安装 rlwrap ##下载 wget http://files.cnblogs.com/files/killkill/rlwrap-0.30.tar.gz.zip ##解压 tar -xzvf rlwrap-0.30.tar.gz.zip ##编译安装 ./configure make &&…...
[文献阅读] chinese-roberta Pre-Training With Whole Word Masking for Chinese BERT
文献信息:Pre-Training With Whole Word Masking for Chinese BERT | IEEE Journals & Magazine | IEEE Xplore 哈工大和科大讯飞联合发表的用于中文NLP任务的基于BERT的改进模型,在中文NLP任务取得了最先进的性能。 摘要 原本的BERT使用随机掩蔽的…...
QML ListView 与 C++ 模型交互
在 Qt 中,QML 的 ListView 可以与 C 模型进行交互,这是实现复杂数据展示和业务逻辑的常见方式。以下是几种主要的交互方法: 1. 使用 QAbstractItemModel 派生类 这是最强大和灵活的方式,适合复杂数据结构。 C 端实现 cpp // …...
使用SSH解决在IDEA中Push出现403的问题
错误截图: 控制台日志: 12:15:34.649: [xxx] git -c core.quotepathfalse -c log.showSignaturefalse push --progress --porcelain master refs/heads/master:master fatal: unable to access https://github.com/xxx.git/: The requested URL return…...
MacOs下解决远程终端内容复制并到本地粘贴板
常常需要在服务器上捣鼓东西,同时需要将内容复制到本地的需求。 1-内容是在远程终端用vim打开,如何用vim的类似指令达到快速复制到本地呢? 假设待复制的内容: #include <iostream> #include <cstring> using names…...
修改idea/android studio等编辑器快捷注释从当前行开头的反人类行为
不知道什么时候开始,idea编辑的快捷注释开始从当前行开头出现了,显得实在是难受,我只想让在当前行代码的部份开始缩进两个字符开始,这样才会显得更舒服。不知道有没有强迫症的猴子和我一样,就像下面的效果:…...
密码加密方式
密码加密方式全面解析 密码安全是系统安全的第一道防线,以下是主流的密码加密技术分类和实现方式: 一、基础加密方式 1. 对称加密 特点:加密解密使用相同密钥 AES (Advanced Encryption Standard) 密钥长度:128/192/256位示例…...
Python10天突击--Day 2: 实现观察者模式
以下是 Python 实现观察者模式的完整方案,包含同步/异步支持、类型注解、线程安全等特性: 1. 经典观察者模式实现 from abc import ABC, abstractmethod from typing import List, Anyclass Observer(ABC):"""观察者抽象基类""…...
【C#】.NET 8适配器模式实战:用C#实现高可用系统集成与接口桥接艺术
系统集成挑战与适配器模式的价值 当需要整合不同架构或API的系统时,接口兼容性问题往往成为拦路虎。**适配器设计模式(Adapter Pattern)**通过转换接口形态,完美解决这种不兼容性问题。本文将通过C# .NET 8实战演示适配器模式的基…...
方案精读:51页 财政数据信息资源目录数据标准存储及大数据资产化规划方案【附全文阅读】
该方案聚焦财政数据信息资源管理,适用于财政部门工作人员、数据管理与分析人员以及关注财政大数据应用的相关人士。 方案旨在构建财政数据资源目录,推动大数据在财政领域的应用与落地。整体规划上,以 “金财工程” 应用支撑平台为基础,建立省、市、县三级目录体系,遵循相关…...
【CVE-2024-7881】ARM CPU漏洞安全通告
安全之安全(security)博客目录导读 目录 一、概述 二、CVE详情 三、受影响产品 四、修复建议 五、致谢 六、版本历史 一、概述 基于Arm架构的部分CPU中发现一个安全问题:非特权上下文可能触发数据内存依赖型预取引擎(data memory-dependent pref…...
idea中提高编译速度研究
探索过程: 有三种情况: 第一种: idea中用eclipse编译器编译springboot项目,然后debug启动Application报错找不到类。 有待继续研究。 第二种: idea中用javac编译器编译springboot项目,重新构建用时&a…...
基于Yocto构建Ubuntu 24.04 ARM64 Qt工具链
以下是基于Yocto构建Ubuntu 24.04 ARM64 Qt工具链的完整方案,综合多篇技术文档整理而成: 一、系统环境准备 Ubuntu基础系统 建议选择Ubuntu 24.04 LTS服务器版或桌面版,需满足至少300GB磁盘空间和16GB内存 若使用ARM64架构主机可直接运…...
如何使用阿里云邮件推送免费群发邮件
最近一直想利用自己的阿里云账号开一个邮件推送服务,同时还可以用python来实现邮件群发,之前没有成功,今天又尝试了一次终于成功了,现将过程记录如下,也便于网友们少走弯路。 一、申请阿里云账号 阿里云注册可以用淘…...
利用 Genspark 和 AI IDE 一键配置 Java 开发环境
以下是以 CSDN 博客风格撰写的文章,基于你提到的“利用 Genspark 和 AI IDE 实现 Java 环境一键配置”的流程。文章结构清晰,内容详实,符合 CSDN 技术博客的常见风格,包含标题、简介、目录、正文、代码示例和总结。 利用 Genspark…...
【软考系统架构设计师】计算机网络知识点
1、 TCP/IP协议族 2、 数据链路层 解决三个基本问题: 封装成帧(在⼀段数据的前后分别添加首部和尾部) 透明传输(发送⽅:若数据部分出现帧开始符或者帧结束符,会在其前面加转义字符;接收⽅&…...
RFID技术概览
一、RFID技术定义 RFID(Radio Frequency Identification,射频识别) 是一种通过无线电信号识别目标对象并获取相关数据的非接触式自动识别技术。它利用射频信号的空间耦合(电感或电磁耦合)实现无物理接触的信息传递与目…...
中间件--ClickHouse-2--OLAP和OLTP
OLAP(Online Analytical Processing,联机分析处理)和OLTP(Online Transaction Processing,联机事务处理)是两种不同类型的数据处理系统,它们分别针对不同的应用场景和需求。 1、OLTP࿰…...
使用ADB工具分析Android应用崩溃原因:以闪动校园为例
使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因:以闪动校园为例 前言 应用崩溃是移动开发中常见的问题,尤其在复杂的Android生态系统中,找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…...
C++双链表介绍及实现
双链表详解 1. 基本概念 双链表(双向链表) 是一种链式数据结构,每个节点包含两个指针: 前驱指针(pre):指向直接前驱节点后继指针(next):指向直接…...
推流265视频,网页如何支持显示265的webrtc
科技发展真快,以前在网页上(一般指谷歌浏览器),要显示265的视频流,都是很鸡肋的办法,要么转码,要么用很慢的hls,体验非常不好,而今谷歌官方最新的浏览器已经支持265的web…...
linux多线(进)程编程——(6)共享内存
前言 话说进程君的儿子经过父亲点播后就开始闭关,它想要开发出一种全新的传音神通。他想,如果两个人的大脑生长到了一起,那不是就可以直接知道对方在想什么了吗,这样不是可以避免通过语言传递照成的浪费吗? 下面就是它…...
Allpairs工具下载及操作流程(联动Deepseek)
目录 一、Allpairs工具下载及操作流程二、Allpairs工具使用易错问题 Allpairs工具产生的原因 Allpairs工具的产生源于软件测试领域对高效组合测试方法的迫切需求,其核心目标是解决传统测试方法在多因素组合场景下用例数量爆炸和测试效率低下的问题。 一、Allpairs工…...
wkhtmltopdf 实现批量对网页转为图片的好工具,快速实现大量卡片制作
欢迎来到涛涛聊AI 1、需求痛点 在学习当中经常遇到一些知识点,想和大家分享。但只有文本形式,很多人不愿意去阅读,也看不到重点。 如果自己去单独设计页面版式,又太浪费时间。那就想着有没有一种方法,可以把一个知识…...
case客户续保预测中用到的特征工程、回归分析和决策树分析的总结
文章目录 [toc]1. 回归分析概述1.1 基本概念1.2 与分类的区别 2. 常见回归算法2.1 线性回归2.2 决策树回归2.3 逻辑回归(Logistic Regression)2.3 其他算法补充:通俗版:决策树 vs 随机森林🌳 决策树:像玩「…...
最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu)
最新如何在服务器中解决FFmpeg下载、安装和配置问题教程(Linux|Windows|Mac|Ubuntu) 摘要: FFmpeg是一个强大的开源工具,广泛应用于音视频处理,支持格式转换、视频剪辑、流媒体推送…...