Liunx:环境基础开发工具使用总结(基本操作命令及使用详解)

目录

1vim的基本概念

2vim的基本操作

3vim正常模式命令集

1:插入模式

2:移动光标

3:删除文字

4:复制

5:替换

6:撤销

7:更改

8:跳到指定行

4vim末行模式命令集

分屏操作

编译器的使用

1:背景知识

2:gcc如何完成

调试器gdb的使用

开始使用

自动化构建工具make/Makefile

背景

原理

进度条程序

软件管理器yum

有那些软件包

如何安装

如何卸载


1vim的基本概念

vim基本分三种模式:

  1. 正常模式/命令模式(Normal mode):控制屏幕光标的移动,字符,字或行的删除,移动复制某段区域
  2. 插入模式(Insert mode):只有在Insert mode模式下,才可以输入文字,按[esc]可回到命令行模式
  3. 末行模式(last line mode):文件的保存或退出,也可以进行替换,字符串查找,列出行号等操作,在命令模式下,shift+:进入该模式

要查看所有的模式:help vim-modes

一共有12中模式:six BASIC modes 和 six ADDITIONAL modes

2vim的基本操作

  1. vim + 文件名:进入全屏编辑画面(正常模式),需要切换到[插入模式]才能输入文字
  2. [正常模式]切换到[插入模式]:     1:---[a]  2:---[i]   3---[o].
  3. [插入模式]切换到[正常模式]:      [esc]
  4. [正常模式]切换到[末行模式]:      [shit + :]
  5. vim保存及退出:                       w:保存当前文件      wq保存并退出     q!不保存强制退出   wq!保存强制退出
  6. 代码缩进对齐:                       [gg = G]
  7. 代码屏蔽                                 [ctrl + v ]切换为视图模式,[r]替换为‘/’

3vim正常模式命令集

1:插入模式

  • 按[i] 切换插入模式从光标当前位置开始输入
  • 按[a] 进入插入模式后,从光标所在位置的下一个位置开始输入
  • 按[o]  进入插入模式,是插入新的一行,从行首开始输入
  • 从插入模式进入命令模式[esc],按两下直接从底行模式回到正常模式

2:移动光标

  1. [h] [j] [k] [l] 分别是控制光标左,下,上,右
  2. [G]:移动到文章最后
  3. [w]:光标跳到下个字的开头
  4. [e]:光标跳到下个字的字尾
  5. [b]:光标回到上个字的开头
  6. [gg]:进入文本开始
  7. [shift + g]:进入文本末端
  8. [ctrl + b]:屏幕往后移动一页
  9. [ctrl + f]:屏幕往前移动一页
  10. [ctrl + u]:屏幕往后移动半页
  11. [ctrl + d]:屏幕往前移动半页

3:删除文字

  1. [x]:每按一次删除光标所在位置的一个字符
  2. [#x]:删除光标所在位置后面包含自己在内的#个字符
  3. [X]:大写X,表示删除光标所在位置前一个字符
  4. [#X]:删除不包含光标在内的前面#个字符
  5. [dd]:删除光标所在行
  6. [#dd]:删除光标开始的#行

4:复制

  1. [yw]:将光标所在之处到字尾的字符复制到缓冲区
  2. [#yw]:复制#个字到缓冲区
  3. [yy]:复制光标所在行
  4. [#yy]:从光标开始复制#行
  5. [p]:将缓冲区的字符贴到光标所在位置(所有与y有关的复制命令都必须与p配合)

5:替换

  1. [r]:替换光标所在处字符
  2. [R]:替换光标所到之处的字符,直到[esc]为止

6:撤销

  1. [u]:回到上一个操作
  2. [ctrl + r]:撤销的恢复

7:更改

  1. [cw]:更改光标所到处的字到字尾出
  2. [c#w]:表示更改#个字

8:跳到指定行

  1. [#G]:表示光标移动到#行
  2. [ctrl + g]:列出光标所在行占比例

4vim末行模式命令集

  1. [set nu]:列出行号
  2. [#]:冒号后输入一个数字按回车,就会跳到对应行
  3. [/关键字]:先按[/]在输入想寻找的字符,如果第一次不是要找的,可以按[n]往后寻找
  4. [?关键字]:先按[?]在输入想寻找的字符,如果第一次不是要找的,可以按[n]往前寻找

分屏操作

同时上下分屏(不管文件存在不存在):

1:vim -on test1.c test2.c

2:split 文件名(已经打开一个文件时,在增加一个文件)

同时左右分屏(不管文件存在不存在):

1:vim -On test1.c test2.c (大写O)

2:vnew 文件名(已经打开一个文件时,在增加一个文件)

方向控制

ctrl + w + l   右

ctrl + w + h  左

ctrl + w + k  上

ctrl + w + j  下

(如果分屏少直接ctrl + w + w切换)

编译器的使用

1:背景知识

  1. 预处理:进行宏替换
  2. 编译:生成汇编
  3. 汇编:生成机器可识别代码
  4. 链接:生成可执行文件或库文件

2:gcc如何完成

格式:gcc [选项] 要编译文件 [选项]  [目标文件]

(!gcc:上一次执行的gcc)

预处理:

  1.  预处理主要功能是宏定义,文件包含,条件编译,去注释等
  2. 预处理指令以#开头的代码行
  3. 实例:gcc -E hello.c -o hello.i
  4. -E:让gcc在预处理之后停止编译过程
  5. -o:是指目标文件,-i为已经与预处理过的c程序

编译

  1. 在这个阶段,gcc首先检查代码的规范性,是否有语法错误等,已确定代码实际要做的工作,检查无误后,gcc把代码翻译成汇编语言
  2. -S:可以查看,只编译而不汇编

汇编

  1. 汇编阶段是把编译阶段生成的.s转换为目标文件
  2. 生成机器可识别代码
  3. -c:可以查看已转化为.o 的二进制目标代码

链接

  1. 成功编译后进入链接阶段,删除可执行文件
  2. 实列:gcc hello.o hello

静态库与动态库:

静态库:编译时把代码链接到可执行文件中。程序运行的时候将不再需要静态库

动态库:程序运行时才去链接动态库的代码,多个程序可以共享使用库的代码

gcc选项 
1、无选项编译链接 
例:命令:gcc test.c

//会默认生成a.out可执行程序 
2、-E: 进行预处理和编译,生成汇编文件。 
命令:gcc -E test.c

//会生成test.i文件

3、-S: 进行预处理,编译,汇编等步骤,生成“.s”文件 
例:命令:gcc -S test.c

//会生成test.s文件

4、-c: 会直接生成二进制目标文件 
例:命令:gcc -c test.c

//会生成test.o文件

5、-o :对生成的目标进行重命名 
例:命令:gcc -o test test.c

//会生成名字是test可执行文件而不是默认的a.out

6、-pipe: 使用管道代替编译中的临时文件 
例:命令:gcc -pipe -o test test.c

7、-include file :包含某个代码。相当于在文件中加入#include 
例:gcc test.c -include /root/file.h

8、-C:在预处理的时候不删除注释信息,一般和-E使用。

9、-llibrary:定制编译的时候使用的库 
例:gcc -lpthread test.c //在编译的时候要依赖pthread这个库

10、-Ldir:定制编译的时候搜索库的路径。如果是自己定制的库,可以用它来定制搜索目录,否则编译器只在标准库目录里面找,dir就是目录的名字

11、-O0(字母o和数字0):没有优化

       -O1:-O1位缺省值

       -O2:二级优化 

       -O3:最高级优化 
级别越大优化越好,但编译时间边长。

调试器gdb的使用

要使用gdb调试,必须先在源代码生成二进制代码时,加上-g选项(在生成可执行程序时,在可执行程序添加可调式信息)

实列:gcc -g test.c -o test

开始使用

  1. 开始调试:gdb + 文件名,结束调试:quit 或 ctrl + d
  2. list/l 行号:每次10行显示代码
  3. list/l 函数名:列出函数的代码
  4. run/r:运行程序(需要在后面添加命令行参数 r -a 参数或是set + 参数)
  5. start:开始调试(逐步)
  6. next/n:每次执行一句,不进入函数
  7. step/s:进去函数调用
  8. break/b  行号:在某一行设置断点
  9. break/b 函数名:在某个函数开头设置断点
  10. info break/i b:查看断点信息
  11. finish:执行到当前函数返回,然后停下来等待命令
  12. continue/c:从当前位置开始连续执行程序
  13. delete breakpoints:删除所有断点
  14. d n:删除序号为n的断点
  15. dispaly 变量名:跟踪查看一个变量,每次停下来都显示它的值
  16. p var:打印var变量的值
  17. bt:打印函数调用栈
  18. watch var :监控变量var的改变(变量改变时停下)

自动化构建工具make/Makefile

背景

  • make是一条命令,Makefile是一个文件,两个搭配使用
  • make是一个解释Makefile中指令的命令工具
  • 一个工程中的源文件不计其数,其按类型,功能,模块分别放在若干个目录中,Makefile定义了一系列规则来指定,哪些文件需要先编译,后编译,重新编译,甚至于进行更复杂的过程操作
  • 会不会写Makefile,从侧面说明一个人是否具有完成大项目的能力
  • Makefile带来的好处就是“自动化编译”,一旦写好只需要一个make命令,整个工程就能完全自动编译,极大提高了效率
#表示注释
#[要生成的目标文件名称]:[依赖文件]
#[制表符Tab]如何通过依赖文件对象生成目标文件的编译命令
all:test test1
test:test.c tmp.c
gcc test.c tmp.c -o test
test1:test.c tmp.c
gcc test.c tmp.c -o test1
#永远只生成第一个对象,生成后则退出,因此如果要生成多个对象,就需要在前边一个包含所有要生成的对象
#几个预定义变量
# $@ 代表要生成的目标对象
#  $^ 代表依赖对象
#  $< 代表所有文件中的第一个
#   .PHONY   声明伪对象,这个伪对象每次都需要生成
.PHONY :test test1
all:test test1
test:test.c tmp.c
gcc $^ -o $@
test1:test.c tmp.c
gcc $< -o $@

依赖关系:  .c 文件依赖.i文件,

                   .i文件 依赖.s文件,

                  .s文件 依赖 .o文件

原理

  1. make会在当前目录下找名字叫“makefile”或“Makefile”的文件
  2. 如果找到,它会找文件中的第一个目标文件,并把它作为最终的目标文件
  3. 如果不存在那么它就会执行后面所定义的命令来生成这个文件
  4. 如果所依赖的.o文件不存在,那么make会在当前文件中找目标为.o文件的依赖性,再根据规则生成一个.o文件
  5. .c和.h文件肯定存在,于是make会生成.o文件,然后在用.o文件声明执行文件
  6. 这就是整个依赖性,make会一层一层去找文件的依赖关系,直到最终编译出第一个目标文件
  7. 在寻找过程中,如果出现错误,比如最后被依赖的文件找不到,make就会直接退出,并且报错。而对于所以的命令错误,或编译不成功,make根本不理

进度条程序

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 #include<string.h>
  4 int main()
  5 {
  6     int i = 0;
  7     char buff[102] = {0};//初始化为0,保证字符串长度不会再改变
  8     const char *cycle = "|/-\\";
  9     while(i <= 100)
 10     {
 11     printf("[%-100s][%d%%][%c]\r",buff,i,cycle[i%5]);//“\r”回车符,与换行符区别是:不换行,光标跳的本行的行首然后开始覆盖
 12     fflush(stdout);//立即刷新缓冲区,可以使进度条走的很流畅
 13     buff[i++] = '#';
 14     usleep(100000);
 15     }
 16     printf("\n");
 17     return 0;
 18 }

软件管理器yum

有那些软件包

  1. 在Linux下安装软件太麻烦,所以有人提前编译好,做成软件包放在一个服务器上,可以直接进行安装
  2. 软件包和软件管理器yum,就好比app和应用商店的关系
  3. yum需要在联网状态才能正常工作
yum list | grep gcc

yum list命令可以罗列出一个有那些包,数目非常多,可以使用grep筛选

软件包名称 :主版本号,次版本号,程序源代码发行号,软件包发行号,主机平台,cpu构架

如何安装

sudo yum install 文件名

最后只需要按Y确定即可

  • 安装软件时由于需要向系统目录写入内容,所以需要root账户,或者sudo才能完成
  • yum安装只能一个装完了才能再装另一个,否则会报错

如何卸载

sudo yum remove 文件名

Y确定即可

猜你喜欢

转载自blog.csdn.net/W_J_F_/article/details/83378032