【Linux基础开发工具】yum生态&&vim的配置与使用

2023-12-04

目录

前言

1. Linux 软件包管理器 yum

1.1 什么是yum

1.2 快速上手yum

1.3 yum生态

2. Linux编辑器vim

2.1 vim的模式

2.2 vim使用技巧

3. vim编辑器辅助功能配置

3.1 配置

3.2 用户sudo权限配置

总结


前言

Linux基础指令与权限之后,Linux系统开发工具的使用也至关重要,今天我将分享一些优化Yum生态和Vim配置与使用相关内容,帮助你打造一个高效的Linux开发环境。

在这里插入图片描述

1. Linux 软件包管理器 yum

在Linux系统的使用中难免需要安装一些软件,安装软件的方式有三种:

  • 源代码安装(下载到程序的源代码, 并进行编译, 得到可执行程序)
  • rpm包直接安装(使用较为复杂,国外资源下载较慢)
  • yum /apt-get

前两种的安装方式过于复杂,为了解决安装软件麻烦的问题,于是便有了yum。

1.1 什么是yum

Yum ( Yellowdog Updater Modified )是一个在Linux操作系统上管理软件包的工具 ,主要应用在Fedora、RedHat、Centos等发行版上 。Yum生态中包含了许多官方和第三方的软件包仓库,用户可以通过Yum来管理这些软件包仓库中的软件包。

yum:yum是Linux预装的一个指令,搜索、下载、安装对应的程序。

也可以理解为: yum就相当于Linux的应用商店

1.2 快速上手yum

  • yum list

显示配置的仓库中所有可用软件包的列表

还可以使用特定选项来过滤 "yum list" 的输出

比如:

yum list installed 只显示已安装的软件包

  • yum install [-y] command

它是在 Linux 系统中使用 Yum 软件包管理器安装软件的命令

  • "yum install" 后面跟着要安装的软件包名称或软件包的 URL
  • "-y" 是一个可选的参数,表示在安装软件包时不需要用户确认,直接自动确认安装
  • "command" 是要安装的软件包的名称或 URL。这个命令会让 Yum 软件包管理器自动下载并安装指定的软件包

在安装一些软件包时,如果yum没有,这时可以尝试安装一下yum的扩展包:

yum install -y epel-release
  • yum remove command

用于卸载已安装的软件包的命令

注意:

它会删除指定的软件包及其相关的依赖项,同时也会删除软件包安装时创建的配置文件和数据文件

1.3 yum生态

我们知道yum是 Linux 软件包管理器,那么问题来了,yum从哪里获取软件,软件源又是什么,它又是怎么获取的呢?

如下图:

当输入指令时,yum会发送请求给远端仓库,根据指令信息,在远端仓库进行搜索,然后进行反馈。

yum源又是什么?怎么来的呢?

为了方便一些软件的下载,国内的一些组织会将国外的软件提前下载,放在远端的仓库供用户使用,我们也可以在我们的Linux机器上查看我们的远端仓库。

vim /etc/yum.repos.d/CentOS-Base.repo

这里可以看到我的yum源是阿里云的远端仓库。当然yum源也是可以更改的,这里不再进行详细介绍,yum也是通过这个链接去访问远端仓库下载。

2. Linux编辑器vim

vim是一个高度可定制的 文本编辑器 ,通常用于在Linux系统上进行 编程和文本编辑 。它具有许多强大的功能。

我们在Linux上敲代码几乎都是使用的vim编辑器。

启动编辑器:

vim + "文件名"

如果在使用vim指令时出现错误无法使用,那很可能是vim没有安装,安装指令:

sudo yum install vim

我们启动vim编辑器进入到一个文件后,我们 按键盘上的键会没有反应,有的有反应,但不是我们想要的效果等这些情况 ,这都是由于不熟悉vim编辑器的原因。

2.1 vim的模式

vim编辑器有好多种模式,这里我们只介绍三种模式,以供我们的基本使用。

在进行文本编辑操作时,我们做常用的也就三种模式:

  • 命令模式
  • 插入模式
  • 底行模式

我们使用 vim编辑器打开一个文件时,默认是在命令模式

转换关系如下:

如果在使用vim的过程中遇到这样的情况:

这是因为vim异常关闭造成的,在底行我们可以看到一行选项,‘R’-->shift +r,可以恢复文件内容,但是下次打开还是这样的页面。

这是因为vim在异常关闭时会产生一个临时文件:

‘D’->shift +d选项可以删除这个文件,这时再次使用vim打开code.c就正常了,或者自己手动删除

注意:以 .(点)开头的文件是隐藏文件(ls -al指令可以查看到隐藏文件)

命令行常用指令:

  • shift +&:光标定位到当前行最右侧结尾处
  • shift + ^:光标定位到当前行最左侧开头处
  • shift + g:光标定位到文本行最结尾
  • n+shift + g:光标定位到n指定行的开头
  • gg:光标定位到文本最开始
  • h:光标左移
  • j:光标下移
  • k:光标上移
  • l:光标右移
  • w:按照 “ 单词 ” 在行内向后移动
  • b:按照 “ 单词 ” 在行内向前移动
  • n+yy:复制当前行/多行(n指定复制行数,单行操作时可以不加数字n)
  • n+p:在下一行进行粘贴/多行(n指定粘贴次数,(单行操作时可以不加数字n)
  • u:撤销编辑操作(undo)
  • ctrl+r:对撤销进行插销
  • n+dd:剪切(删除)当前行/多行(单行操作时可以不加数字n)
  • shift+`-> ~:大小写进行快速切换
  • n+r:替换当前光标所在的字符
  • shift +r ->R:替换模式
  • n+x:删除光标所在字符(n指定删除的字符个数,向右删除)
  • n+shift+x:删除光标所在字符(向左删除)
  • shift +3 ->#:高亮要查找的函数名
  • n:下一个查找的函数/字符串名

底行模式:

  • w:保存写入
  • q:退出
  • wq:保存并退出
  • wq!:强制保存并退出(!为强制进行,可与上述底行命令结合使用)
  • !command:在底行模式进行命令操作

执行完一次操作后: 按enter键或键入命令继续

在底行模式下还可以创建文件:

在底行模式创建的文件如果没有w指令,只用:q退出并不会实质性创建文件。

创建文件后我们发现出现了多个窗口,并且他们是同一个底行,那底行输入到底是哪个窗口的?

光标所在界面就是我们所编辑的页面

  • ctrl +ww:切换窗口
  • set nu:添加行号
  • set nonu:撤销行号

2.2 vim使用技巧

我们使用vim主要是用来编写代码,那么批量注释和批量去注释是我们经常用的,那么怎么在Linux的vim模式下批量注释代码呢?

批量注释步骤如下:

  1. ctrl +v(默认命令模式进行)
  2. hjkl区域选择
  3. shift+i->I(此时会进入插入模式)
  4. //
  5. Esc

批量去注释:

  1. ctrl+v
  2. hjkl区域选择
  3. d

3. vim编辑器辅助功能配置

在Linux环境下,每个用户都可以配置自己的vim编辑器 ,示例将会在普通用户下进行

在每个用户的家目录下一般情况下是没有.vimrc文件的。

.vimrc文件是用来配置Vim编辑器的用户自定义配置文件。用户可以在这个文件中设置Vim的各种参数、键盘映射、颜色方案、插件等。这样在启动Vim时,会自动加载这个文件中的配置

每个用户可以在自己的家目录下创建一个.vimrc文件并进行配置

注意: Linux系统下自带有.vimrc文件的,在ect目录下,这个配置文件是root用户所使用的

3.1 配置

在用户家目录下创建一个 .vimrc文件(cd ~进入自己的家目录)

使用vim编辑器打开 .vimrc文件进行编辑(文件默认为空)

以下是一些编程常用指令的配置:

set nu                    " 显示行号
set cursorline            " 突出显示当前行
hi Cursorline cterm=bold ctermbg=black ctermfg=green guibg=green "粗体显示选中行,用黑色框,字体标绿
set autoindent           " 自动缩进
set cindent
set tabstop=4            " Tab键的宽度
set softtabstop=4        " 统一缩进为4
set shiftwidth=4
"括号补齐
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap " ""<ESC>i

3.2 用户sudo权限配置

我们已经基本了解了vim,现在可以使用vim编辑器来配置普通用户的sudo权限

  • 切换到root用户下(sudoers文件只有root可以修改),使用vim编辑器打开sudoers文件
vim /etc/sudoers
  • 打开之后向下移动光标找到 ## Allow root to run any commands anywhere 的位置

  • 复制root那一行,粘贴到root的下一行,将root名字改为自己要添加sudo权限的用户名字即可

总结

本期的内容操作的内容非常多,向大家分享了许多vim编辑器使用的技巧,大家私下可以实操一下,能够使用好vim编辑器可以让我们更高效的工作学习,好了以上便是本期的全部内容。最后,感谢阅读!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Linux基础开发工具】yum生态&&vim的配置与使用 的相关文章

  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • 如何才能将 TCP 连接返回到同一端口?

    机器是 RHEL 5 3 内核 2 6 18 有时我在 netstat 中注意到我的应用程序有连接 建立了 TCP 连接本地地址 and 国外地址是一样的 其他人也报告了同样的问题 症状与链接中描述的相同 客户端连接到本地运行的服务器的端口
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags

随机推荐