linux快速入门之工具使用:Vim 、Gcc (05 、06)

Linux 工具使用:Vim 、 GCC

5.vim使用

vim是Linux系统里的一款文本编辑器,当然也可以选择vscode配置编程环境 ,或者使用vs2019使用ssh技术在windows下编程,发送到Linux下编译。

这里简单介绍纯粹的vim编辑器的使用方法

#Ubuntu 中安装 vim
$sudo apt install vim

#CentOS 中安装 vim
$sudo yum install vim
5.1vim的模式

vim中有三种模式 :命令模式、末行模式、编辑模式以vim方式打开文件默认进入命令模式

命令模式:可以查看文件内容、简单修改文件、搜索等操作

编辑模式: 可以对文件内容修改

末行模式: 可以执行Linux命令 ,保存文件,跳转等操作

编辑模式和末行模式之间是不能相互直接切换的

[

在这里插入图片描述

5.2 命令模式操作

通过vim打开一个文件,如果文件不存在及会创建一个新文件

#打开文件
$vim  文件名 (默认命令模式)

#保存退出
#连续按两次 z (按shift 切换大写)
ZZ

代码对齐

假设c/c++ 代码格式比较乱,可以在命令行模式下快速代码格式化,使代码美观

#通过命令行对齐代码
#最后的字符为G (按shift 切换大写)
gg = G

光标移动

光标的上下左右移动可以直接使用方向键(↑, ↓, ←, →) ,可也使用 h, j,k,l

(朋友们,记不住还是老老实实键盘方向键吧)

快捷键功能
gg光标移动到文件头
G光标移动到文件尾
n G行跳转,光标移动到 第n行
n 回车行数向下跳转 n行

删除:

用不习惯还是按a 进入编辑模式操作

vim中的删除原理就是剪切

快捷键功能
x(小写)删除光标后面字符
X(大写)删除光标前面字符
dw删除单词(需要将光标移动单词首字符)
dd删除光标所在行

复制和粘贴

快捷键功能
p(小写)粘贴在光标行下面
P(大写)粘贴在光标行上面

撤销和反撤销

快捷键功能
u撤销
ctrl + r反撤销
5.3 末行模式操作
  • 命令模式 -> 末行模式 (shift :)
  • 末行模式 -> 命令模式 (两次 Esc)

保存退出

使用vim编辑后,保存文件并退出在末行模式下完成

快捷键功能
q退出,未保存(会提示保存)
q!强制退出(不提示保存)
w保存,不退出
wq保存并退出
x保存并退出

替换

在末行模式下可以指定对应内容 ,替换为指定文本 (几行或全文)

快捷键功能
s / 被替换的关键字 / 新关键字 / g对光标所在行替换
行号 1, 行号 2s / 被替换的关键字 / 新的关键字 /g[行号1 , 行号2] 是一个从小到大的范围,对这个范围进行替换
% s / 被替换的关键字 / 新的关键字 /g% 代表对所有行进行替换

6.gcc

GCC是Linux下一个编译工具集 ,包含 gcc \ g++等编译器 ,GCC不仅支持C/C++,其他语言如 Objective -C \java等根据不同硬件平台编译,也能交叉编译。A平台编译B平台程序

部分Linux默认不带gcc编译器需要手动安装

#Ubuntu
$sudo apt update   #更新本地软件下载列表,获得最新下载地址
$sudo apt install gcc g++    

#CentOS
$sudo yum update
$sudo yum install gcc g++

#查看版本
$gcc  -v
$g++  -v
6.1 gcc运行流程

编译器对程序的编译有4个阶段 : 预处理(预编译) 、 编译和优化 、 汇编 、 链接

  1. 预处理: 展开头文件 、 宏替换 、 去点注释行 (GCC调用预编译器,得到还是源文件,文本格式)
  2. 编译: GCC调用编译器 ,将文本编译为汇编文件
  3. 汇编: GCC调用汇编器 ,将汇编文件编译为二进制文件
  4. 链接: GCC调用汇编器 ,对程序需要调用的库进行链接,得到可执行的二进制文件
gcc参数文件后缀说明
.c源文件
-E.i预处理后的源文件
-S.s汇编源文件
-C.o汇编后的二进制文件

在这里插入图片描述

细分gcc流程:了解即可

#预处理 -E    -o  用来指定 文件名
$gcc -E demo.c -o demo.i

#编译 -S,获得汇编文件
$gcc -S demo.i -o demo.s

#汇编 -c,获得二进制文件
$gcc -c demo.i  -o test.o

#链接 ,将二进制文件和标准库链接 ,获得可执行二进制文件
$gcc test.o -o test

gcc 编译单个文件很简单 (常用)

#常用方式
$ gcc 源文件名 -o 指定文件名

#如没有指定生成文件名 gcc会自动生成 a.out可执行二进制文件
$gcc 源文件
6.2 gcc 常用参数
gcc 参数作用
-E预处理源文件
-S编译指定源文件
-c编译、汇编源代码 ,但不链接
-o (常用)将编译的文件 取名
-I (制作静/动态库时常用)编译的时候,指定使用的库
-L (使用静/动态库时常用)指定include 包含文件 搜索目录
-D (为便于调试时 使用)编译时指定一个宏
-g编译时生成调试信息
6.3 多文件编译

例如一个项目中有三个文件 ,addNum.h \ addNum.cpp \ main.cpp ,main.cpp中调用addNum.cpp函数

addNum头文件

#include<iostream>
using namespace std;
int addNum(int a,int b);

addNum源文件

#include "addNum.h"

int addNum(int a,int b)
{
  return a+b;
}

main源文件

#include<iostream>
#include "addNum.h"
using namespcae std;

int main()
{
  int a =10,b = 20;
  int c = addNum(a,b);
  cout<<"c = "<<c<<endl;
  return 0;
}

因为头文件是包含在源文件中的,因此在使用 gcc 编译程序的时候不需要指定头文件的名字(在头文件无法被找到的时候需要使用参数 -I 指定其具体路径而不是名字)

#将文件打包编译
$g++ addNum.cpp main.cpp -o test
#运行可执行程序
$./ test
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值