Linux开发工具之【vim】

news2024/12/28 12:34:27

Linux开发工具之【vim】

文章目录:

  • Linux开发工具之【vim】
  • 1. Linux软件包管理器yum
    • 1.1 查看软件
    • 1.2. 下载软件
    • 1.3 卸载软件
  • 2. vim编辑器的使用
    • 2.1 vim常用模式
    • 2.2 vim基本操作
    • 2.3 vim命令模式命令集
      • 2.3.1 移动光标
      • 2.3.2 删除文字
      • 2.3.3 复制文本内容
      • 2.3.4 替换文本内容
      • 2.3.5 撤销操作
      • 2.3.6 更改操作
    • 2.4 vim底行模式命令集
      • 2.4.1 列出行号
      • 2.4.2 跳到文件中的某一行
      • 2.4.3 查找字符
      • 2.4.4 退出并返回
      • 2.4.5 文本替换
      • 2.4.6 分屏操作
    • 3. vim配置
      • 3.1 自己配置
      • 3.2 自动化配置

1. Linux软件包管理器yum

什么是软件包?这里举个例子

我们使用手机时是在应用商店下载软件,应用商店里的看到各种软件是在远端服务器上的,服务器上有对应的软件下载服务,我们下载软件时就是从服务器上下载对应的相关文件,对应在Linux机器中,这里手机上的“APP”就相当于软件包,而应用商店就相当于软件包管理器

在Linux下是如何安装软件的呢?

Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了,于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。yum(Yellow dog Updater, Modifified)Linux下非常常用的一种包管理器. 主要应用在Fedora RedHat Centos等发行版上

1.1 查看软件

基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

yum [options] [command] [package ...]

通过 yum list 命令可以罗列出当前一共有哪些软件包,由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包

yum list | grep 软件包名

注意:

  • 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
  • "x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配.
  • "el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
  • 最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念

1.2. 下载软件

下载软件

yum [选项] install 软件名(必须是root身份)/ sudo yum install 软件名

常用选项

-y:不会弹出选择

yum 会自动找到都有哪些软件包需要下载, 这时候敲“y”确认安装.出现 “complete” 字样, 说明安装完成

注意:

  • 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
  • yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.

1.3 卸载软件

卸载软件

yum [选项] remove 软件包名(必须是root身份 / sudo yum remove 软件包名

常用选项

-y:不会弹出选择

2. vim编辑器的使用

vim是多模式编辑器。我们可以在上面进行各种语言的代码编写,vim的三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),vim的使用是有一些门槛的,需要多加练习得以熟练的使用,最后还可以根据自己的习惯自定义出属于自己的独特vim

2.1 vim常用模式

命令模式

命令模式就是我们刚进入vim时的初始模式,可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式下,在vim中如果不知道在什么模式下可以无脑按ESC进入命令模式

插入模式

只有在插入模式下,才能进行文字输入,按ESC键可退回到命令模式

底行模式

底行模式下可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,输入shift + :即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入help vim-modes

2.2 vim基本操作

首先要保证自己的 Linux 中已经安装好了 vim ,如果没有安装,需要在 root 用户下通过指令 yum install -y vim 进行安装

我这里用于演示的vim是已经配置过的,会与刚使用的画面有些出入,不过操作是一样的,问题不大,文章末尾我也会提供配置vim的方法

进入vim

vim 文件名

这里使用 vim test.cc打开文件后就是这个样子,此时我们会发现输入内容并没有被写入,这是因为此时处于命令模式,想要输入内容,需要先单按 i 进入插入模式

退出vim

vim的退出是有些麻烦的,插入模式下无法直接退出vim,需要先进入命令模式,然后切换底行模式,输入wq保存并退出

  • ESC 切换为命令模式

  • 在命令模式下,按 shift + : 进入底行模式

  • 在底行模式下,输入 wq 保存并退出

输入q表示不保存退出vim,输入w表示保存文件内容,输入wq表示保存并退出vim,指令后加!表示强制

命令模式切换插入模式

进入插入模式的方法有很多

  1. Insert 键切换
  2. i 键切换,切换后是从光标当前位置开始输入文件
  3. a 键切换,切换后是从目前光标所在位置的下一个位置开始输入文字
  4. o 键切换,切换后是插入新的一行,从行首开始输入文字

一般常用 i 来切换

命令模式切换底行模式

输入shift + :(按住shift点击:)进入底行模式

2.3 vim命令模式命令集

必须是在命令模式下使用

2.3.1 移动光标

h键、j键、k键、l键:分别控制光标左、下、上、右移一格

G键:光标移动到文本最后

$键:光标移动到所在行行尾

^键:光标移动到所在行行首

w键:光标移动到下个字的开头

e键:光标移动到下个字的结尾

b键:光标移动到上个字的开头

nl键:光标移动到所在行的第n个位置:如:10l、5l

gg键:光标移动到文本开头

shift + g键:光标移动到文本末尾

ctrl + f键:屏幕往前移动一页

ctrl + b键:屏幕往后移动一页

ctrl + d键:屏幕往前移动半页

ctrl + u键:屏幕往后移动半页

2.3.2 删除文字

xx键:删除光标所在位置的一个字符

n + x键:删除光标所在位置后的n个字符,例如5x,删除光标所在位置后的5个字符

X键:删除光标所在的位置的前一个字符

n + X键:删除光标所在位置的前n个字符

dd键:双击d键,剪切所在行

n + dd键:从光标所在行剪切n行,例如3dd键表示从光标所在行剪切3行

2.3.3 复制文本内容

yw键:将光标所在之处到字尾的字符复制到缓冲区中

n + yw键:复制n个字到缓冲区

yy键:双击y键,复制光标所在行到缓冲区

n + yy键:复制从光标所在行往下数n行到缓冲区,例如3yy,表示复制从光标所在行向下的3行文本内容

p键:将缓冲区内的字符贴到光标所在位置(所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能)

2.3.4 替换文本内容

r键:替换光标所在处的字符

R键(shift + r):替换光标所到之处的字符,直到按下「ESC」键为止(连续替换)

2.3.5 撤销操作

u键:回到上一个操作

ctrl + r:撤销的恢复

2.3.6 更改操作

c + w键:先按c键再按w键,更改光标所在处的字到字尾处

c + n + w键:c3w:表示更改3个字

shift + ~:快速大小写切换

2.4 vim底行模式命令集

2.4.1 列出行号

设置行号(底行模式下)

set nu

取消行号(底行模式下)

set nonu

2.4.2 跳到文件中的某一行

n号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字12,再回车,就会跳到文章的第12行。

n:行数

2.4.3 查找字符

先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往前寻找到您要的关键字为止

/字符 + n

先按?键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往前寻找到您要的关键字为止

?字符 + n

2.4.4 退出并返回

! 配合常规命令和底行指令可以在不退出vim的情况下执行各种指令

例如,在vim中编写了一个test.cc文件,我们可以在底行模式下输入!g++ test.cc将文件编译链接生成可执行程序,然后输入!./a.out执行程序,执行结束后,会返回vim界面

!+指令:临时退出vim,进行相关信息显示,然后有提示信息:Press ENTER or type command to continue:表示按ENTER键或者其他指令都回退到vim编译器下。

底行模式下的!还有强制的意思,比如!wq强制保存并退出

2.4.5 文本替换

在文档中搜索出原内容,并将其替换为替换内容

%s/原内容/替换内容/g

2.4.6 分屏操作

在写程序时,往往会有几个文件,多开窗口就会让我们的编写更加方便,vim也是支持多开窗口的,指令vs file,新开一个窗口打开file文件,文件不存在会自动创建,此时光标在哪里就是在编写哪个文件,可以使用指令ctrl + ww,进行窗口切换

vs file:分屏状态,打开file文件
ctrl + ww:窗口切换

3. vim配置

3.1 自己配置

自己配置vim需要在自己的家目录~下创建一个vim配置文件.vimrc

然后打开.vimrc文件进行配置编写,如:

这里还可以有很多选择,可以自己到网上搜索,来配置自己独一无二的vim

vim配置的原理就是根据的一个配置文件编写对应的需求来完成的

3.2 自动化配置

vim的配置想要达到完善是很费时费力的,这里我们也可以通过指令下载大佬已经写好的脚本,来自动化配置一个精美的vim

自动化位置步骤:

  1. 复制指令curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
  2. 进入自己的账户,粘贴复制的指令,输入root密码进行安装

image-20230708143850840

特别感谢大佬的脚本提供,原文地址

注意:此自动化安装目前只支持Centos7.6,其他平台可能无法安装

卸载指令

bash ~/.VimForCpp/uninstall.sh

效果展示


Linux开发工具vim,到这里就介绍结束了,本篇文章对你由帮助的话,期待大佬们的三连,你们的支持是我最大的动力!

文章有写的不足或是错误的地方,欢迎评论或私信指出,我会在第一时间改正

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

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

相关文章

Openpose原理总结

Openpose是一种开源的实时多人姿态估计库,由卡耐基梅隆大学开发。它通过分析图像或视频中的人体关键点来估计人体的姿态,识别身体的各个部分,并推断出人体的姿势信息。 Openpose能够同时检测和跟踪多个人的姿态,可以用于人机交互、…

二.《泽诺尼亚》明文CALL

了解发包函数 1.一款网络游戏,必定是会发包的,对于PC端而言,想要进行网络通讯,就拿最简单的CS架构而言势必会调用win32 API函数或底层函数 2.这里列举出常用的API如:send sendto wsasend wspsend 3.有一些正向开发经验的同学,肯定是见过这几个函数的 4.接下来我们来看看这款…

JavaEE——介绍并简单使用线程池

文章目录 一、 什么是线程池二、Java中线程池的运用1. 创建线程池中的问题2. 标准库中线程池的使用 三、自主实现一个简单的线程池 一、 什么是线程池 所谓线程池,其实和字符串常量池,数据库连接池十分相似,就是设定一块区域,提前…

打印机常见故障解决参考方法

1、首先检查打印机电源线连接是否可靠或电源指示灯是否点亮,然后再次打印文件,仍不能打印,请看下一步。 2、检查打印机与计算机之间的信号传输线是否可靠连接,检查并重新连接,如果打印机仍不能打印,请看下一…

Java线程Thread类常用方法

文章目录 1. start():启动线程,使其执行run()方法中的代码。2. run():线程的执行逻辑,需要在该方法中定义线程要执行的代码。3. sleep(long millis):使当前线程暂停指定的毫秒数,进入阻塞状态。4. join()&a…

【C++】红黑树封装map和set

文章目录 一、map和set源码剖析二、红黑树的迭代器1.begin()与end()2.operator()与operator--() 三、set的模拟实现四、map的模拟实现五、完整代码实现1.RBTree.h2.set.h3.map.h5.Test.cpp 一、map和set源码剖析 我们知道,map和set的底层是红黑树,但是我…

如何用Python快速搭建一个文件传输服务

当我的朋友需要把他电脑上面的文件从他的电脑传递到我电脑上的时候,我只需要启动服务 启动服务! 他打开web界面 就能把文件传递到我电脑上(还能够实时显示进度) 文件就已经在我电脑上的uploads文件夹里面了 项目结构如下 templat…

python浮点运算不准确

1.问题 1.12.2的最后结果并不等于3.3 2. 解决方法 错误示范 引入了Decimal计算,但是计算类型是float型,依然计算不准确 正确解决方法 把类型转化为字符串引入计算

动手实战 | 使用 Transformers 包进行概率时间序列预测

最近使用深度学习进行时间序列预测而不是经典方法涌现出诸多创新。本文将为大家演示一个基于 HuggingFace Transformers 包构建的概率时间序列预测的案例。 概率预测 通常,经典方法针对数据集中的每个时间序列单独拟合。然而,当处理大量时间序列时&…

spring中的扩展点解析以及实践使用

文章目录 1、ApplicationContextInitializer2、BeanDefinitionRegistryPostProcessor3、BeanFactoryPostProcessor4、InstantiationAwareBeanPostProcessor5、SmartInstantiationAwareBeanPostProcessor6、BeanFactoryAware7、ApplicationContextAwareProcessor8、BeanNameAwar…

查找文件所在的具体位置

Linux Command 命令: find – walk a file hierarchy (遍历文件层次结构) ;DESCRIPTION 描述: 在指定目录下查找文件和目录, 可以使用不同的选项来过滤和限制查找的结果 ; Grammar Format $ find <在哪个路径下查找> <可选参数…> 常用选项 -name <pattern>…

【javaEE面试题(四)线程不安全的原因】【1. 修改共享数据 2. 操作不是原子性 3. 内存可见性 4. 代码顺序性】

4. 多线程带来的的风险-线程安全 (重点) 4.1 观察线程不安全 static class Counter {public int count 0;void increase() {count;} } public static void main(String[] args) throws InterruptedException {final Counter counter new Counter();Thread t1 new Thread(()…

VMware16.0安装教程和创建

许可证&#xff1a; ZF3R0-FHED2-M80TY-8QYGC-NPKYFYF390-0HF8P-M81RQ-2DXQE-M2UT6ZF71R-DMX85-08DQY-8YMNC-PPHV8设置网络 添加镜像 下载centos7镜像网址https://mirrors.aliyun.com/centos/7/isos/x86_64/?spma2c6h.25603864.0.0.d7724511YPrZpg win10镜像地址https://ww…

Linux+Docker+Gitlab+Jenkins+虚拟内存

最近想研究一下怎么自动化发布项目,于是找到了gitlab+jenkins这个组合,正好借机也研究一下最近很火的docker技术。本篇共分为五部分,分别为安装要求,内存虚拟化,安装docker,安装gitlab,安装jenkins。 一、 安装要求 1 Docker安装要求: 1.1 操作系统 Docker只支持64…

unittest单元测试

java的单元测试框架Junit和TestNG&#xff0c;python里面也有单元测试框架-unittest,相当于是一个python版的junit。python里面的单元测试框架除了unittest,还有一个pytest框架&#xff0c;但是用的比较少 unittest注意点&#xff1a; 导入unittest模块 类名的第一个字母大写&…

代码随想录算法学习心得 40 | 139. 单词拆分、背包问题总结...

一、单词拆分 链接&#xff1a;力扣 描述&#xff1a;给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 思路如下&…

【Linux | Shell】Linux 安全系统 —— 用户、组、文件权限 - 阅读笔记

目录 一、Linux 的安全性1.1 /etc/passwd 文件1.2 /etc/shadow 文件1.3 添加新用户 —— useradd1.4 删除用户 —— userdel1.5 修改用户 —— usermod、passwd、chpasswd 二、使用 Linux 组2.1 /etc/group 文件2.2 创建新组 —— groupadd2.3 修改组 —— groupmod 三、理解文…

Jenkins可持续集成Python自动化脚本

目录 前言 一、Jenkins搭建在Windows上 二、Jenkins搭建在Linux上 &#x1f381;更多干货 完整版文档下载方式&#xff1a; 本文讲解Jenkins如何每次定时的从SVN服务器上拉取最新的代码并执行本地库里的脚本 前言 1、本地代码库目录F:\5i5jautest内有测试文件all_tests.…

Attention,注意力机制

在机器视觉任务中&#xff0c;每一张图片都有重点区域&#xff0c;而非每一个像素对模型理解图片都同等重要。 在自然语言处理任务中&#xff0c;每一段文字都有重点词语&#xff0c;而非每一个字对模型理解语句都同等重要。 如此&#xff0c;在神经网络模型中引入注意力&#…

做投票小程序线上投票制作制作图片投票链接如何做投票小程序

小程序投票活动如何做&#xff1f;很多企业在运营当中&#xff0c;都会通过投票活动来进行推广&#xff0c;从而达到吸粉、增加用户粘度等效果。而此类投票活动&#xff0c;通过小程序就可以实现&#xff0c;操作简单。 我们现在要以“时尚新态度”为主题进行一次投票活动&…