【Linux基础】包管理器、Vim编辑器与GCC编译链完全指南

🎬 博主名称键盘敲碎了雾霭
🔥 个人专栏 : 《C语言》《数据结构》 《C++》 《Matlab》 《Python》 《Linux》

⛺️指尖敲代码,雾霭皆可破


文章目录

  • 一、Linux包管理器
    • [1.1 安装软件](#1.1 安装软件)
    • [1.2 apt具体操作](#1.2 apt具体操作)
  • 二、编译器vim
    • [2.1 vim的基本概念](#2.1 vim的基本概念)
    • [2.2 光标命令](#2.2 光标命令)
    • [2.3 编辑命令](#2.3 编辑命令)
    • [2.4 编辑实用操作](#2.4 编辑实用操作)
    • [2.5 底行操作命令](#2.5 底行操作命令)
    • [2.6 补充](#2.6 补充)
    • [2.7 vim配置](#2.7 vim配置)
  • 三、gcc/g++
    • [3.1 预处理](#3.1 预处理)
    • [3.2 编译](#3.2 编译)
    • [3.3 汇编](#3.3 汇编)
    • [3.4 连接](#3.4 连接)
    • [3.5 总结](#3.5 总结)
  • 文章结语

一、Linux包管理器

1.1 安装软件

三种安装方式

  • 源码安装(不推荐)

  • 软件包安装-- rpm(不推荐,无法解决依赖问题

  • 包管理器yum(centos) apt/apt-get(ubuntu)(推荐,自动解决依赖问题)

用包管理器安装分两步

  • 网络下载
  • 安装(本质是拷贝),必须使用root权限,安装到系统里面,只要安装一次,任何人就都能够使用

安装报错一般有两种方式:

  • 缺失相关库和文件
  • 版本兼容性

软件包和软件包管理器(yum/apt),就好比"App"和"应用商店"这样的关系.

  • yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器.主要应用在Fedora,RedHat,Centos等发行版上.
  • Ubuntu:主要使用apt(Advanced Package Tool)作为其包管理器。apt同样提供了自动解决依赖关系、下载和安装软件包的功能。

Linux下载软件的过程(Ubuntu、Centos、other)

apt install sl -y

1.2 apt具体操作

  • 检查网络

    ping -c3 www.baidu.com

    有回响就代表处在联网环境了

  • 搜素

    apt list | grep sl

  • 卸载
    apt -y remove lrzsz

二、编译器vim

2.1 vim的基本概念

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

vim有三种模式(后面还有其他模式

  • 命令模式(默认模式)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 lastline mode
  • 插入模式
    只有插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 底行模式
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,「shift+;」、即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:helpvim-modes

三种模式如何切换,如图所示:

补充:在底行模式输入set nu可显示行号,在底行模式输入q可以退出,加w代表保存退出

2.2 光标命令

  • gg :快速回归光标到第一行
  • shift+g(G):快速回归光标到末尾
  • n+shift+g:定位到n所在的那一行
  • shift+¥(4):跳到这一行最右边
  • shift+^(6):跳到这一行最左边
  • H(左)、J(下)、K(上)、L(右) :由于历史原因,代表方向键
    前面都可以加数字 ,提高效率
  • w(向后)、b(想左):以单词为单位(也不准确,具体看vim实现),可以进行移动,前面也可以加数字,提高效率

2.3 编辑命令

  • 前面都可以加数字

    yy复制当前行

    p光标所在位置进行粘贴

    dd剪切当前行,或者删除

    x删除光标所在位置的字符

    shift+x光标右侧不动,左侧删除

    其中yy、dd、x、shift+x都可以与p组合起来用

  • 替换

    r替换光标所在字符,r->目标字符

    shift+r进入到替换模式,批量化替换

  • 大小写转化

    shift+~大小写切换

  • 撤销

    u撤销历史操作

    ctrl+r撤销u操作

    注意:一旦退出文件编辑,无法在进行撤销了,但是你只是保存,没有进行q退出,可以撤销

  • 翻页

    ctrl+b/ctrl+u :往前翻页(按代码块翻页)

    ctrl+d/ctrl+f:往后翻页(按代码块翻页)

  • 显示文件的行号

    ctrl+g :显示当前文件的行号

2.4 编辑实用操作

  • 注释
    ctrl +V进入视图模式,(想回到命令模式按esc就可以回去),按(h、j、k、l)选择范围(也可以前面加数字,或按n+shift+g跳到某一行),按shift+i进入插入模式(大写I),输入//,按esc退回命令模式就好了(除了注释还可以写其他的,比如漏写的)
  • 取消注释
    ctrl +V进入视图模式,按(h、j、k、l)选择范围(也可以前面加数字,或按n+shift+g跳到某一行),有时需要按两下h/l,直接d
  • 查找
    shift+3 :选中单词,再按n:逆向查找
    三种方式进入插入模式
    i:在当前光标下进入插入模式
    a:退一格再进入插入模式
    o:换一行再进入插入模式
  • 快速退出
    想要快速退出vim,可以按shift +z+z(两下z)

2.5 底行操作命令

  • :在w或q后面加!,表示强制退出
  • set nonu:去掉行号
  • set nu :添加行号
    !+command :可以在vim中编译和运行,相当于可以执行指令,比如:
    ! ls -l! gcc code.c! ./a.out,
  • %s/dst/src/:一键替换功能
  • vs (文件名)text.c:代表分屏操作,光标在哪一个窗口,就代表现在操作哪一个窗口,可以分多屏
  • ctrl +w+w(两次w):切换窗口光标
  • /名称 :查找功能,与shift +#一致,都可以查找,按n跳到下一个

2.6 补充

  • 命令vim text.c,如果在底行操作命令输入wq,会自动生成一个文件
  • 命令vim code.c(文件) +n:后面加行号,表示默认打开,处在第几行
  • ctrl+r:查找
  • !指令的开头:会执行以这个开头的最近的指令

2.7 vim配置

首先现在个人目录下新建

touch .vimrc

以下配置是我个人常用的配置,现在的可以直接复制粘贴到~/.vimrc 中,保存退出直接生效。

cpp 复制代码
syntax on               " Set syntax highlighting
set number              " Set the line number
set tabstop=4           " Set an indent to account for 4 spaces
set autoindent          " Set up automatic indentation
set mouse=a             " Set mouse is always available, set mouse= (empty) cancel
set cc=80               " Column 80 highlighted, set cc=0 cancellation
set cursorline          " Settings to highlight the current row
set cindent             " Format C language
set st=4                " Set the width of the soft tab to 4 spaces
set shiftwidth=4        " The width automatically indented when setting a new line is 4 spaces
set sts=4               " Set the number of spaces inserted when the Tab key is pressed in insertion mode to 4
set ruler               " Show the status of the last line
set showmode            " The status of this row is displayed in the lower left corner.
set bg=dark             " Show different background tones
set hlsearch            " Enable Search Highlight
set laststatus=2        " Always display the status bar

三、gcc/g++

3.1 预处理

进行宏替换/去注释/条件编译/头文件展开等

  • 选项"-E",该选项的作用是让gcc在预处理结束后停止编译过程。
  • 选项"-o"是指目标文件,"i"文件为已经过预处理的C原始程序。

3.2 编译

开始翻译,编译做完了,就停下来

3.3 汇编

开始翻译,汇编完成,就停下来

后缀为.o为可重定位目标文件,windows下在vs2022后缀文件为XXX.obj,已经是二进制的文件了

3.4 连接

生成可执行文件或库文件,在成功编译之后,就进入了链接阶段。我们的源文件中,会包含很多的库方法(不是我们自己实现,需要从库里面调,在返回)

gcc会自己去找相关的库,因此不用任何选项

可以看出指令都是用C语言实现的

3.5 总结

记忆方法:按键ESc,镜像文件.iso

一般我们在程序翻译不会把这些临时文件形成,一般会多文件形成.o文件,在再形成.exe

小技巧:使用-c时不带-o会默认形成同名文件


文章结语

感谢你读到这里~我是「键盘敲碎了雾霭」,愿这篇文字帮你敲开了技术里的小迷雾 💻

如果内容对你有一点点帮助,不妨给个暖心三连吧👇

👍 点赞 | ❤️ 收藏 | ⭐ 关注

(听说三连的小伙伴,代码一次编译过,bug绕着走~)

你的支持,就是我继续敲碎技术雾霭的最大动力 🚀

🐶 小彩蛋:

复制代码
      /^ ^\
     / 0 0 \
     V\ Y /V
      / - \
    /    |
   V__) ||

摸一摸毛茸茸的小狗,赶走所有疲惫和bug~我们下篇见 ✨