< Linux >:Linux 环境基础开发工具使用 (1)

目录

本节目标:

一、Linux 软件包管理器 yum 

1.1、什么是软件包

1.2、Centos 7 中安装软件/工具/指令常用的方案

1.3、关于 rzsz

1.4、查看软件包

1.5、如何安装软件/工具/指令

1.6、如何卸载软件/工具/指令

二、Linux 开发工具

三、Linux 编辑器 - vim的使用

3.1、vim 的基本概念

3.2、vim 的基本操作

3.3、vim 末行/底行模式命令集


本节目标:

1:学习在 Centos 7 ,即,Centos 系列的接口中,使用 yum 进行工具/软件/指令的安装,包括软件的搜索,安装和卸载,一般,如果只说软件,指的就是软件/工具/指令、
2:掌握 Vim 编辑器使用,学会 Vim 的简单配置,Vim是一个在 Linux 系统交互式命令行中可以进行编码的一个工具,是后面进行编程写代码的一个主要工具,在后期还会引入图形化界面的工具,叫做 Vscode,即所谓的远程开发,在 PC 端使用 Vscode 链接云服务器,在云服务器上做开发、
3:掌握 gcc/g++ 编译器的使用,并了解其过程,原理、
4:掌握简单 gdb 使用于调试、
5:掌握简单的 Makefifile 编写,即:自动化构建项目,了解其运行思想、
6:编写自己的第一个 Linux 程序:进度条、
7: 学习在 Linux 云服务器上进行 git 命令行的简单操作, 能够将代码上传到 Github 或 Gitee 上、

一、Linux 软件包管理器 yum 

yum 是我们学习的第一个 Linux 工具(软件),除此之外 yum 也是一个指令、

1.1、什么是软件包

1、在 Linux 系统下安装软件(工具/指令),一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序、
2、但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,得到可执行程序,并做成软件包(可以理解成Windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装、
3、软件包和软件包管理器,就好比 "App" 和 "应用商店" 这样的关系,手机上的App,包括应用商店等,都属于客户端、
4、yum(Yellow dog Updater,Modifified)是 Linux 系统下非常常用的一种包管理器,主要应用在Fedora, RedHat,Centos 等发行版上、

1.2、Centos 7 中安装软件/工具/指令常用的方案

        不同的 Linux 系统的发行版,安装软件(工具/指令)具有一定的差别,此处只以 Centos 7 版本为例,像 Centos 系列的发行版,安装软件(工具/指令)一般使用的就是 yum ,其他的 Linux 系统的发行版在安装软件(工具/指令)时,使用的可能就不是 yum ,像 Ubuntu 系列的 Linux 系统的发行版,在安装软件(工具/指令)时,一般使用的就是 addget,addget 也是一个 Linux 工具(软件,指令)、

1:源码安装、

2:rpm 包安装,类似于 Windows 系统下的安装包,即,rmp包就是 Linux 系统下的安装包,或者是依赖包,使用 rpm 包安装时,还需要使用 rpm 命令,比较麻烦,此种方式不会自动解决依赖关系、
3:yum 安装,不用编译源码,会自动解决软件的依赖关系,不需要用户手动解决软件的依赖关系,yum (软件,工具,指令)就是 Linux 系统下的应用软件市场(Windows系统下)、

在 Linux 和 Winodws 系统下,当安装别人的软件/工具/指令时则需要:


1、需要别人先把代码编译成可执行程序、

2、以Windows为例,需要有人将编译好的可执行程序做成软件包,放在用户能够下载的地方,这个地方指的就是公司的服务器中,而公司官网或者是应用软件市场等等提供的并不是软件包,当用户需要下载软件时,可以通过公司官网或者应用软件市场来访问到公司的服务器,从而满足用户的需求,这一过程是通过网络来完成的,然后,公司的服务器将先搜寻到用户需要下载的软件包,然后再发送给用户,即,用户从官网或应用软件市场下载软件包,本质上就是去公司的服务器里面下载对应的软件包,但问题是,用户通过公司官网或应用软件市场来访问公司的服务器,这一过程是如何实现的呢,这是因为,应用软件市场和公司官网,都内置了很多软件的下载链接或者网址,而在 Linux 系统中也是如此,在 Linux 系统中,yum(软件/指令/工具)相当于 Windows 系统中的应用软件市场,当使用 yum 进行下载软件/工具/指令时,则会访问 ls /etc/yum.repos.d 该目录下的 yum 源,yum 源就是当使用 yum 进行搜索时,就会去 yum 源中搜索,yum 源中都内置了许多网址,链接,所以当使用 yum进行安装软件/工具/指令时,能够自动查找到对应的软件/工具/指令所在的服务器去安装,这就是因为 Linux 系统中有一些配置文件,即,yum 能够通过这些配置文件从而实现软件/工具/指令的搜索和下载、

更新 yum 源的方法:

        不同的机器上,Linux 系统中的 yum 源中的内容不一定都是国内的链接,如果不是国内的,或者安装软件/指令/工具特别慢,超时甚至不成功时,这可能是因为所用到的服务器在国外,国家不允许访问,从而导致访问失败,或者距离过远导致效率太低,而国外的这些所有的服务器在国内都有镜像,所以,如果不是国内的 yum 源,或者当安装软件/工具/指令特别慢,超时甚至失败时,则建议更新 yum 源、

        首先,在 root 用户下安装 wget (yum install -y wget),其次,在 root 用户下,通过指令:cd /etc/yum.repos.d/,进入该路径,然后备份文件 CentOS-Base.repo 和 epel.repo ,使用的指令分别为:mv CentOS-Base.repo CentOS-Base.repo.back 和 mv epel.repo epel.repo.back,然后在当前路径/etc/yum.repos.d下下载阿里云或腾讯云的Centos-7.repo文件,即执行指令:wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 和 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 或 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo 和 wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo,最后在该路径/etc/yum.repos.d中重新加载 yum 源,即再执行指令:yum clean all 和 yum makecache、

        注意:我们默认在 Linux 系统中的 yum 源就是文件 CentOS-Base.repo,当更新 yum 源时,先对原来的文件 CentOS-Base.repo 进行备份(重命名),即执行指令:mv CentOS-Base.repo CentOS-Base.repo-bak 即可,最好也把文件:epel.repo 也备份一下,即:最好也要更新一下文件:epel.repo,这一步必须要在 root 用户的路径 cd /etc/yum.repos.d/ 下进行,在 Linux 系统中,做任何配置,包括更新 yum 源,一定不要直接删除原来的文件,一定要先进行备份,再进行配置,即重命名一下就可以了、

//腾讯云:

//CentOS-Base.repo文件、
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

//epel.repo文件、
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
//阿里云:

//CentOS-Base.repo文件、
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

//epel.repo文件、
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

        分别复制腾讯云或阿里云中的两行指令,在 root 用户下的路径:/etc/yum.repos.d 下分别粘贴即可,此时该路径下会自动出现更新后 CentOS-Base.repo 文件和 epel.repo 文件,最后,再在该路径下执行指令:yum clean all 和 yum makecache 即可完成 yum 源的更新,具体过程请见下面的博客:

https://blog.csdn.net/First_____/article/details/118607837

 

注意:

        更新 yum 源的所有操作,必须要在 root 用户下进行,其次,路径:/etc/yum.repos.d 下的所有文件的所有者都是 root 用户,所属组的名字都是 root ,即 root 用户自成一组,所以,当更新 CentOS-Base.repo 文件和 epel.repo 文件时,若当前用户为普通用户,在普通用户的路径:/etc/yum.repos.d 下分别粘贴两行指令是不可以的,如果可以的话,那么更新后的文件 CentOS-Base.repo 和 epel.repo 文件的所有者就是该当前普通用户,且所属组的名字就是该当前普通用户了,这是不可以的,会报 "Permission denied" 的错误、


yum 工具/软件/指令的常用选项有:
        yum makecache 命令的功能是将服务器的软件包/工具/指令信息缓存到本地(yum软件包/工具/指令在每次安装指定软件包/工具/指令的时候,都会检测源服务器上的软件包/工具/指令信息,为了便捷不用每次都去搜索软件包/工具/指令信息,因此使用 yum makecache 将软件包/工具/指令信息缓存到本地,使用 yum clean all 清理老旧的缓存信息)、

在Centos中,使用如下指令:

yum list 列出所有可供安装的软件包/工具/指令、

yum remove 卸载指定的软件包/工具/指令、

yum search  在所有软件包/工具/指令中搜索包含有指定关键字的软件包/工具/指令、

yum clean all 命令可以清除缓存中老旧的头文件和软件包/工具/指令、

yum -y update:升级所有软件包/工具/指令同时,也升级软件和系统内核、

yum -y upgrade:只升级所有软件包/工具/指令,不升级软件和系统内核,软件和内核保持原样、 


总结:

        Linux 系统下更新 yum 源,只需要使用 root 用户完成上述 一次 更新 yum 源的操作即可,此时 root 用户和所有的普通用户均可使用更新后的 yum 源,最后,重命名操作的权限和删除操作的权限是一样的、

[HJM@hjmlcc ~]$ whoami
HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ ls /etc/yum.repos.d
CentOS-Base.repo  CentOS-Epel.repo
[HJM@hjmlcc ~]$ cd /etc/yum.repos.d
[HJM@hjmlcc yum.repos.d]$ ll
total 8
-rw-r--r-- 1 root root 614 Jul 28 10:13 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Jul 28 10:13 CentOS-Epel.repo
[HJM@hjmlcc ~]$ vim CentOS-Base.repo
[extras]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/
name=Qcloud centos extras - $basearch
[os]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/
name=Qcloud centos os - $basearch
[updates]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/
name=Qcloud centos updates - $basearch
~                                                                                                                       
~                                                                                                                       
~                                                                                                                       
~                                                                                                                       
..                                                                                                              
~                                                                                                                       
"CentOS-Base.repo" [readonly][noeol] 18L, 614C  
//输入 :q 退出vim、  
[HJM@hjmlcc ~]$ whoami
HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ yum list | grep sl  

//其中,yum list的意思代表要求服务器把其所知道的所有的软
//件/工具/指令的名字全部打印出来,其次,| grep sl代表着在打印出来的所有软件/工具/指令的名字中将
//包含sl的所有的软件/工具/指令的名字全部打印出来、
//如下所示:cyrus-sasl-lib是软件/工具/指令的名字, x86是适用的平台, _64代表64位, 2.1.26-24是
//发行版本, el7_9也是适用的平台, 其中, el7代表Centos 7, @updates是发布方(软件/工具/指令源)、

cyrus-sasl-lib.x86_64                    2.1.26-24.el7_9               @updates 
cyrus-sasl-plain.x86_64                  2.1.26-24.el7_9               @updates 
openssl.x86_64                           1:1.0.2k-25.el7_9             @updates 
openssl-devel.x86_64                     1:1.0.2k-25.el7_9             @updates 
openssl-libs.x86_64                      1:1.0.2k-25.el7_9             @updates 
python-backports-ssl_match_hostname.noarch
python-slip.noarch                       0.4.0-4.el7                   @anaconda
python-slip-dbus.noarch                  0.4.0-4.el7                   @anaconda
rsyslog.x86_64                           8.24.0-57.el7_9.1             @updates 
sl.x86_64                                5.02-1.el7                    @epel    
slang.x86_64                             2.2.4-11.el7                  @anaconda
NetworkManager-adsl.x86_64               1:1.18.8-2.el7_9              updates  
NetworkManager-fortisslvpn.x86_64        1.2.8-7.el7                   epel     
NetworkManager-fortisslvpn-gnome.x86_64  1.2.8-7.el7                   epel     
aisleriot.x86_64                         1:3.22.2-1.el7                epel     
anope-openssl.x86_64                     2.0.11-1.el7                  epel     
apr-util-openssl.x86_64                  1.5.2-6.el7                   os   
...
...    
autocorr-sl.noarch                       1:5.3.6.1-25.el7_9            updates  
xmlsec1-openssl-devel.i686               1.2.20-7.el7_4                os       
xmlsec1-openssl-devel.x86_64             1.2.20-7.el7_4                os       
yelp-xsl.noarch                          3.28.0-1.el7                  os       
yelp-xsl-devel.noarch                    3.28.0-1.el7                  os       
[HJM@hjmlcc ~]$ 

1.3、关于 rzsz

         这个工具用于 Windows 机器和远端的 Linux 机器通过 XShell 传输 文件,安装完毕之后可以通过拖拽的方式将文件上传过去、
注意事项:

关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!! ,可以通过 ping 指令验证、

ping www.baidu.com

除了上述方法外,还可以使用下面的方法:

输入:rz+空格+回车,然后选择文件进行上传即可:


1.4、查看软件包

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

//search 搜索包含指定关键字的软件包/工具/指令、
结果如下:
lrzsz.x86_64 0.12.20-36.el7 @base

注意事项:

1、软件包名称:主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构
2、"x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包, 选择包时要和系统匹配,我们使用的 Linux 系统都是云服务器,都是64位的、
3、"el7" 表示操作系统发行版的版本, 
      "el7" 表示的是 centos7/redhat7.         "el6" 表示 centos6/redhat6.      、
4、最后一列,base 表示的是 "软件源/工具/指令" 的名称,类似于 "小米应用商店","华为应用商店" 这样的概念、

1.5、如何安装软件/工具/指令

通过 yum,我们可以通过很简单的一条命令完成 gcc 的安装:
sudo yum install lrzsz  

//1、
sudo yum install sl
//2、
sudo yum install sl.x86_64
        yum 会自动找到都有哪些软件包/工具/指令需要下载,这时候敲 "y" 确认安装,出现 "complete" 字样,说明安装完成、
注意事项:
         安装软件/工具/指令时由于需要向系统目录中写入内容,一般需要 sudo 或者切到 root 账户下才能完成,yum 安装软件/工具/指令只能一个装完了再装另一个,正在 yum 安装一个软件/工具/指令的过程中, 如果再尝试用 yum 安装另外一个软件/工具/指令,yum会报错,如果 yum 报错,请自行百度、
    下载的软件/工具/指令是可以用于所有用户(所有的普通用户和 root 用户)的,这是因为安装的软件/工具/指令是在系统层面安装的、

拓展:

         安装扩展源,sudo yum install -y epel-release ,或者可以切换成 root 用户进行安装,可以理解成一个准官方的服务器列表、 

1.6、如何卸载软件/工具/指令

sudo yum remove lrzsz   //或者切换到 root 用户进行操作、

//1、
sudo yum remove sl
//2、
sudo yum remove sl.x86_64

二、Linux 开发工具

IDE例子:


三、Linux 编辑器 - vim的使用

         vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是,vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows,我们课堂上,统一按照 vim 来进行讲解、

3.1、vim 的基本概念

        Vs是集成开发环境,将编辑,编译,链接,运行,调试于一体,而在 Linux 系统中就不再是集成开发环境了,比如:vim 是一个编辑器,不能编译,调试和运行代码,类似于 Windows 系统中的记事本,只能够写文本,只能用来写代码,vim 功能强大,因为他是一个多模式的编辑器,有时候需要我们在生产环境(上线环境)下,云服务器就是一种准生产环境,需要快速定位问题,甚至需要快速的修改代码,因此才会学习 vim 、
   
        课堂上我们讲解 vim 的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode,或 正常/普通/默认模式)、插入模式(Insert mode)和 底行/末行模式(last line mode),各模式的功能区分如下:
1、正常/普通/默认/命令模式(Normal mode)
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 、
2、插入模式(Insert mode)
      只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式,该模式是我们后面用的最频繁的编辑模式、
3、底行/末行模式(last line mode)
      文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作, 在命令模式下, Shift + ; (英文状态下的,中文状态下是 ;,Shift + ;是不可以由 命令模式 切换到 底行模式的),即可进入该模式、
要查看你的所有模式,打开 vim ,先切换到底行模式,再直接输入  help vim-modes

3.2、vim 的基本操作

[HJM@hjmlcc ~]$ whoami
HJM
[HJM@hjmlcc ~]$ pwd
/home/HJM
[HJM@hjmlcc ~]$ touch mytest.c
[HJM@hjmlcc ~]$ ls
a.out  hjm.c  HJM.c  install.sh  lcc.c  mytest.c
[HJM@hjmlcc ~]$ vim mytest.c

总结:

        从命令模式 进入 底行模式 ,则输入 Shift + ;(英文) ,从 命令模式 进入 插入模式 ,则只需要点击 i / I 即可,而从 插入模式 或者 底行模式 回到 命令模式,则都是点击 Esc 即可,注意,要从底行模式 切换到 插入模式,或者从 插入模式 切换到 底行模式 ,都必须要先切换到 命令模式,然后再进行对应的切换,不可直接从 底行模式 切换到 插入模式 ,也不可能从 插入模式直接切换到 底行模式,注意:输入 i / I ,则是直接从 命令模式 切换到 插入模式 ,而输入 a ,则也会由 命令模式 切换到 插入模式 ,但光标会往后移动一个字符,而输入 A ,则也会由 命令模式 切换到 插入模式 ,但光标会直接移动到该行的末尾字符上,而在某一行的任意位置输入 o ,则也会由 命令模式 切换到 插入模式 ,但是,会首先在该行的下面创建一个空白行,且光标移动到该空白行的开始,然后再进入 插入模式,而在某一行的任意位置输入 O ,则也会由 命令模式 切换到 插入模式 ,但是,会首先在该行的上面创建一个空白行,且光标移动到该空白行的开始,然后再进入 插入模式,而输入 s ,则也会由 命令模式 切换到 插入模式 ,但会删除掉当前光标所在位置上的字符,并且该字符后面的所有字符均向前移动一个字符位置,此时光标指向了该被删掉的字符的下一个字符,而输入 S ,则也会由 命令模式 切换到 插入模式 ,但会删除掉当前光标所在的一整行,使得该行变成了空白行,且光标位于该空白行的开始位置,任何模式想切换到 命令模式 ,都是点击 Esc 即可、

命令模式下的文本批量化操作:

vim 更适合处理大型项目或大型文件、

1、在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后输入p,此时将在该行的下一行将复制到的内容打印出来一份,如果输入np,此时将在该行的下n行将复制到的内容打印出来n份,在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后将光标移动到某一行的任意处,输入p,此时将在该行的下一行将复制到的内容打印出来一份,在命令模式下,将光标置于某一行的任意处,输入yy,便可复制该行,然后将光标移动到某一行的任意处,输入np,此时将在该行的下n行将复制到的内容打印出来n份,

注意,空白行也会被复制上,但,~所在的行不是空白行、

2、在命令模式下,将光标置于某一行的任意处,输入2yy,便可复制该行和该行的下一行,然后输入p,此时将在该行的下2行将复制到的内容打印出来一份,如果输入np,此时将在该行的下2*n行将复制到的内容打印出来n份,注意,空白行也会被复制上,还要知道,在命令模式下,将光标置于某一行的任意处,输入2yy,但是如果该行的下面不存在内容行(包括return 0; 和 } 等等),也不存在空白行,即该行下面就是~所在的行时,此次指令2yy就会失效,我们不考虑这种情况,注意,空白行也会被复制上,但,~所在的行不是空白行、

3、在命令模式下,将光标置于某一行的任意处,输入dd,便可剪切该行,然后将光标移动到某一行的任意处,输入p,此时将在该行的下一行将剪切到的内容打印出来一份,如果输入np,此时将在该行的下n行将复制到的内容打印出来n份,在命令模式下,将光标置于某一行的任意处,输入2dd,便可剪切该行和该行的下一行,然后,将光标移动到某一行的任意处

,输入p,此时将在该行的下2行将剪切到的内容打印出来一份,如果输入np,此时将在该行的下2*n行将剪切到的内容打印出来n份,注意,空白行也会被剪切上,但,~所在的行不是空白行,还要知道,在命令模式下,将光标置于某一行的任意处,输入2dd,但是如果该行的下面不存在内容行(包括return 0; 和 } 等等),也不存在空白行,即该行下面就是~所在的行时,此次指令2dd就会失效,我们不考虑这种情况,剪切功能也可以用于删除、

4、在命令模式下,u:代表撤销上一次的任何操作,相当于 vs 下的 ctrl+z ,ctrl+r:代表撤销上一次的撤销(u)操作,相当于 vs 下的 ctrl+y 、

5、在命令模式下,Shift+g 或 G:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的最后一行的开头,也就是第一个 ~ 所在的行的上一行的开头、

6、在命令模式下,gg:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的第一行的开头、

7、在命令模式下,n+Shift+g 或 n+G:直接将光标定位到 vim 中的由内容行和空白行组成的区域中的第n行的开头、

8、在命令模式下,Shift+4 或 $(英文状态下,中文状态下是¥):直接将光标定位到某一行的结尾,$称为锚点、

9、在命令模式下,Shift+6 或 ^(英文状态下,中文状态下是……):直接将光标定位到某一行的开头,^称为锚点、

10、在命令模式下,如果某一行过长,可以点击 w,在一行内,以单词为单位进行光标的向后移动,移动到下一个单词的开头,暂时不考虑 W,可以点击 e,在一行内,以单词为单位进行光标的向后移动,移动到下一个单词的末尾,暂时不考虑 E,可以点击 b,在一行内,以单词为单位进行光标的向前移动,移动到前一个单词的开头,暂时不考虑 B 、

11、在命令模式下,↑,↓,←,→,可以使用,k,j,h,l,来代替,最好使用后者,因为在后期还会学习组合命令,比如:批量化注释,此时,↑,↓,←,→,就不再支持了,其次就是老式键盘中不存在↑,↓,←,→键、

12、在命令模式下,Shift + ` ,( `为英文状态下)  或  Shift + · ,( ·为中文状态下) ,本质上就是:选中某一个字符,输入~,两者得到的都是~,可以实现大小写之间的切换、

13、在命令模式下,r+x:选中某一个字符,目的就是将某一个字符替换成字符x,即,r:替换光标所在的字符,n+r:替换光标所在的字符及其后面n-1个字符、

14、在命令模式下,Shift+r 或 R:左下角出现了REPLACE,其实这就是第四种模式,即,批量化替换,我们可以把他当做普通的命令使用即可,此时随便在键盘上输入,就可以把之前的内容覆盖掉,当之前的内容被全部覆盖,但输入并未停止时,将会输入新的内容进去,并且由第四种模式切换到命令模式,也是点击 Esc 即可、

15、在命令模式下,x:删除光标所在的字符,nx:删除光标所在的字符和该字符后面n-1个字符,即,批量化删除字符、

16、在命令模式下,n+l:在某一行中,将当前光标所在位置往后移动 n 个字符,若当前光标所在的位置距离当前行的末尾字符的距离 < n ,则默认将光标直接移动到当前行的末尾,只考虑 n > 0 的情况,其他情况暂不考虑、

拓展:了解一下即可,就不再 一 一 阐述、

1、「X」:大写的X,每按一次,删除光标所在位置的 " 前面 " 一个字符、

2、「#X」:例如,「20X」表示删除光标所在位置的 " 前面 " 20个字符、

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

4、「#yw」:复制#个字到缓冲区、

5、「R」:替换光标所到之处的字符,直到按下「ESC」键为止、

6、「cw」:更改光标所在处的字到字尾处、

7、「c#w」:例如:「c3w」表示更改3个字、

8、「ctrl」+「g」列出光标所在行的行号、

9、「#G」:例如:「15G」,表示移动光标至文章的第15行行首、

10、

按「ctrl」+「b」:屏幕往 " 后 " 移动一页,按「ctrl」+「f」:屏幕往 " 前 " 移动一页、

按「ctrl」+「u」:屏幕往 " 后 " 移动半页,按「ctrl」+「d」:屏幕往 " 前 " 移动半页、

vim 的配置:

        vim 配置的原理以及实际上 vim 读取了哪些配置文件,在后期会进行阐述,此处只讲解如何进行 vim 的配置:

        登录 gitee ,搜索:vimforcpp ,打开第一个:HGtz2222/VimForCpp,往下拉,找到代码行,目前的 VimForCpp 只支持 Centos 7,不支持Centos 8、

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

        复制并粘贴到所有的普通用户和 root 用户的工作路径下,敲回车等待安装,如果是普通用户,则需要输入一下 root 用户的密码,如果是 root 用户,则不需要再输入 root 用户的密码,等待安装结束,手动执行指令:source ~/.bashrc ,此时就已经完成了vim的配置、

注意:

        root 用户和所有的普通用户如果想要进行 vim 的配置,必须一个一个的进行配置,root 用户也需要配置自己的 vim ,当 root 用户配置好自己的 vim 后,并没有为所有的普通用户进行vim 配置,所有的普通用户想要进行配置 vim ,必须一个个的进行 vim 配置,给哪个用户配置 vim ,就登陆哪个用户的账号进行配置,该用户包括 root 用户和所有的普通用户,这是因为,每一个用户( root 用户和所有的普通用户)都有一个 vim ,每一个 vim 都有自己的配置文件,所以不能像上面那样进行操作,vim 的指令是 root 用户和所有的普通用户都共享的,但是 vim 的配置是 root 用户和所有的普通用户各人有一份的,我们所谓的配置 vim ,不是在配置 vim 指令,而是在配置vim配置、

        其次,当配置过程中,如果出现过慢或者配置失败的情况,是因为我们 Linux 系统中的 yum 源中的内容不是国内的链接,此时要先进行更新 yum 源,更新结束后,再进行 vim配置就很快了,更新 yum 源的方法见本文前面的记录、

注意:vim 是 vi (原生编辑器) 的升级、


一:基于 vi 的底行/末行模式输入:q,wq,q!的区别:

1:q

[LCC@hjmlcc ~]$ whoami
LCC
[LCC@hjmlcc ~]$ pwd
/home/LCC
[LCC@hjmlcc ~]$ ls
lcc.c
[LCC@hjmlcc ~]$ vim lcc.c

2:wq

在底行/末行模式下输入wq,表示保存且退出、

3:q!

在底行/末行模式下输入q!,表示不保存且退出、


二:基于 vim 的底行/末行模式输入:q,wq,q!的区别:

   

        按理说,在 vim 的底行/末行输入:q,wq,q!和在 vi 的底行/末行输入:q,wq,q!的效果应该是一样的,但是经过测试发现,在 vim 的底行/末行输入:q,wq,q!,三者都是先保存再退出,这一点了解一下即可,但是当做题时,有关在 vim 的底行/末行输入:q,wq,q!的效果要类比在 vi 的底行/末行输入:q,wq,q!的效果去做即可、


注意:

        只考虑 vim 指令打开的文件的所有者是当前用户的情况,其他情况暂时先不考虑,还要知道,若进行了 vim 的配置,则使用 vim 指令打开文件后是 vim 的格式,若未进行 vim 的配置,则使用 vim 指令打开文件后是 vi 的格式,若进行了 vim 的配置,则使用 vi 指令打开文件后是 vim 的格式,若未进行 vim 的配置,则使用 vi 指令打开文件后是 vi 的格式,暂时先不考虑使用 vi 指令打开文件这种形式,了解一下即可、


3.3、vim 末行/底行模式命令集

1、
        在末行/底行模式下,键入 wq 保存并退出编辑,就算没有修改也会写入,并修改文件时间属性、

2、

        在末行/底行模式下,键入 q! 强制退出编辑,但并不保存当前修改、

3、

        在末行/底行模式下,键入 x! 保存并退出编辑,仅当文件有修改时会保存,并修改文件时间属性、


列出行号:

「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号、
跳到文件中的某一行:
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15, 再回车,就会跳到文章的第15行、
查找字符:
「/关键字」: 先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止、
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止、
问题:/ 和 ?查找有和区别?操作实验一下
保存文件:
「w」: 在冒号输入字母「w」就可以将文件保存起来、
离开vim:
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim、
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件、

如何判断当前用户( root 用户或任意一个普通用户)下是否已经完成了 vim 的配置:


方法一:

直接输入指令 vim 敲回车,若未完成 vim 的配置,则出现如下所示:

直接输入指令 vim 敲回车,若已经完成 vim 的配置,则出现如下所示:


方法二:

        直接输入指令:vim -v,-和v中间没有空格, 敲回车,若未完成 vim 的配置,则出现如下所示:

        直接输入指令:vim -v,-和v中间没有空格, 敲回车,若已经完成 vim 的配置,则出现如下所示:


 方法三:

        直接输入指令:vim --version,--和version中间没有空格, 敲回车,若未完成 vim 的配置,则出现如下所示:

        直接输入指令:vim --version,--和version中间没有空格, 敲回车,若已经完成 vim 的配置,则出现如下所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脱缰的野驴、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值