vim-编辑器
1.三种模式&三种模式切换操作、
(1)使用vim编辑文件:vim[文件名称]
(2)正常模式(N):正常模式下不能往文件中写内容,需要进入到插入模式,才能写入内容
插入模式(i):i进行到插入模式,就可以正常进行插入了
底行模式(C):使用":"进入底行模式
:w 保存
:wq 保存退出
:q 不保存退出
:q! 强制退出
esc:esc可以从任何模式回到正常模式
2.移删复替撤更跳
-
以下操作为正常模式下的快捷操作
(1)移动光标
1.上下左右键
2.h:光标向左移动
j: 光标向下移动
k:光标向上移动
l: 光标向右移动
3.gg:快速回到第一行
G:快速回到最后一行
4.[num]G:快速跳转到num行
(2)删除
1.x:向后删除光标所在位置的字符
[num]x:向后删除num个字符
2.X:向前删除字符,不包含光标字符
[num]X:向前删除num个字符
3.dd:剪切作用,如果剪切完毕不粘贴,则效果等同于删除
[num]dd:剪切num行
(3)复制
yy:复制一行
[num]yy:复制num行
(4)粘贴
p:向光标当前行的下一行进行粘贴
P(大写):向光标当前行的上一行进行粘贴
(5)替换
r:替换当前光标所在字符
R:进入到replace模式,进行替换,按esc结束
(6)撤销
u:撤销
ctrl+r:反撤销
(7)更改
cw:替换某个单词,并且从正常模式切换到插入模式
(8)跳动
gg=G:整理当前代码格式
批量注释
ctrl+v-->选中注释的行(j/k)-->I(shift+i)-->插入注释符(//)-->esc
批量q取消注释
ctrl+v-->选中注释的行,列(i/k/l/h)-->x
3.常用指令
(1)快速进入到插入模式:
o:快速到下一行 O:快速到上一行
A:快速回到行尾 I:快速回到行首
(2)搜索
/:向下搜索,用n跳转
?:向上搜索,用n跳转
(3)查找
在底行模式下:
:%s/[待要替换的字符串]/[替换成的字符串]/g
%:全文替换
g:替换当前行所有目标字符串
编译器:gcc/g++
- gcc-->C语言 g++-->C++
编译一个程序需要经历的四个过程
1.预处理
(1)宏替换
(2)头文件展开
(3)去注释
(4)条件编译
gcc/g++ -E [file] -o [file].i
2.编译
将源代码转换成汇编代码
(1)语法语义的检测
gcc -S [file] -o [file].s
3.汇编
将汇编代码转化为机器代码(二进制代码)
gcc -c [file] -o [file].o
4.链接
(1)用目标文件+库文件生成可执行程序
静态链接:
gcc/g++ 命令行中,增加一个参数:-static
动态链接:
默认动态链接
-
ldd命令
ldd [file]
查看可执行程序依赖的库文件
-
gcc/g++ [file].c -o [file]:生成可执行文件
-
-o 制定目标文件名称
调试器:gdb
1.debug&release
编译后生成的文件默认release版本,若要debug版本,gcc/g++ 命令行中,增加一个参数:-g
调试的文件必须是debug版本
2.调试范式
gdb [binfile]
- 若提示不是.......done,则首先要查看是不是debug版本
3.调试的选项
l(list):查看文件内容
r(run):程序运行起来
b 行号:加断点
i b:查看所有断点信息
disable [序号]:使对应断点失效
enable [序号]:使对应断点生效
n(next):逐过程执行---->F10
s(step):逐语句执行---->F11
p [变量名称]:打印变量值
bt/where :查看调用堆栈
f [堆栈序号]:查看对应函数中临时变量
make&makefile
- coredump文件:内核转储文件,保存的是进程在崩溃的一瞬间内存的映像
1.make&makefile的解释:
(1)make是解释器,解释makefile文件。makefile是书写编译规则的文件
(2)make解释makefile文件,可以自动化构建项目,自动化生成可执行程序
2. makefile文件书写的规则
(1)目标对象&依赖对象&编译命令
(2)make解释makefile文件的规则
a.make会在当前目录下寻找makefile文件
b.只为生成第一个目标对象而服务
c.若目标对象相较于依赖对象而言,较新,则不生成;较旧,则生成
d.make在生成第一个目标对象的时候,如果依赖对象也需要后-续生成,则先生成依赖对象后, 使用依赖对象生成目标对象
(3)伪目标---一般用于工程清理
.PHONY:目标对象
目标对象:
命令
使用方法:make 目标对象
3.makefile文件:内置变量&自定义变量
内置变量
$^:所有依赖对象
$@:所有目标对象
自定义变量
BIN=mytest
CTGAGS=-g
$(BIN):test.c
gcc $^ -o $@ $(CTAGS)