<一>.vim
一.vim有主要有三种模式:命令模式、插入模式、底行模式
1.命令模式(command mode)
控制光标的移动、字符、字或行的删除,移动复制某段进入Insert mode下,或者lastline mode。
2.插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按【Esc】键可回到命令行模式
3.底行模式(lastline mode)
将文件保存(:w)或者退出(:q),也可以设计编辑环境,如寻找字符串,列出行号等等
二、基本操作
1.vim test.c
若直接touch一个test.c则vim打开即可以编辑,若test.c不存在执行此命令则会创建并
打开。进入vim后,是处于[命令号模式],需要切换到[插入模式]才可以输入程序。
在[命令模式]下按字符 i 或者 a 即可以进入[插入模式]。插入模式下可以输入文字或
者删除需要删除的内容.
【Esc】可以切换至[命令行模式]
要退出vim或者保存文件,在[命令行模式]下按 : 冒号进入[底行模式]
:w (保存当前文件)
:wq (保存并退出)
:q! (强制退出vim)
2.命令功能键
a.插入模式
按 i 进入插入模式,此时是从光标当前位置开始输入文件
按 a 进入插入模式,从光标所在的位置的下一个位置开始输入文字
按 o 进入插入模式,是插入新的一行,并从首行开始输入文字
b.命令行模式
按 gg 光标移动到文章的最开始
按 GG 光标移动到文章的最末
按 ^ 光标移动到所在行的行首
按 w 光标跳到下个单词的开头
按 e 光标跳到下个字的字尾
按 b 光标回到上个字的开头
按 x 每按一次,删除光标所在位置的一个字符
按 #x 6x表示删除光标所在位置的后面(包括自己在内)的6个字符
按 X 每按一次,删除光标所在位置的前面的一个字符
按 dd 删除光标所在行
按 #dd 例如6dd表示从光标所在行开始删除#行
yw 将光标所在之处到字尾的字符复制到缓冲区
#yw 复制#个字到缓冲区
yy 复制光标所在行到缓冲区
#yy 复制从光标所在行往下数#行
p 粘贴到光标所在位置
R 替换光标所在处的字符,直到按【Esc】退出replace模式
u 撤销上一次操作,可以执行多次回复
cw 更改光标所处的字到字尾处
ctrl g列出光标所在行行号
#G 15G表示移动光标到文章的第15行行首
h(左)j(下)k(上)l(右)
^(光标移至行首)
G 光标移至文章最后
$ 光标移至行尾
c.底行模式
:set nu 在文件的每一行前面列出行号
:# 输入一个数字再按回车跳到改行
:/关键字 先按 / 再输入您想寻找的字符,如果第一次找的关键字不是想要的,就按
n 即可以找到
:?关键字 同上
<二>.gcc/g++
一、编译过程
1.预处理:(gcc -E 预处理结束后停止)
gcc -E test.c -o test.i
预处理包括宏替换、删除注释、条件编译、头文件展开
2.编译:生成汇编
gcc -S test.i -o test.s
gcc首先要检查代码的规范性,是否有语法错误等,检查无误后,gcc把代码翻译成汇编语言
3.汇编:生成机器可识别代码
gcc -c test.s -o test.o
-c将汇编代码转化为.o的二进制目标代码
4.连接:生成可执行文件或库文件
链接全局变量和函数。
gcc test.o -o test
函数库一般分为静态库和动态库,静态库是编译连接时,把文件的代码全加入到可执行
文件中,因此生成的文件比较大,但运行时就不需要库文件了;动态库与静态相反,编译连
接时没有把代码加入,而是在运行时运行连接文件加载库,这样就可以节省系统开销
5.gcc也可以直接由test.c成为可执行文件
gcc -o test tes.c
二、编译选项分析
-E 只激活预处理,不生成文件,我们需要把它重新定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和连接
-c 编译到目标文件
-o 输出到文件
-static 禁止使用动态库,所以编译出来的东西一般比较大
-share 尽量使用动态库,所以生成的文件比较小,需要系统调用动态库
-w 不生成任何警告
-Wall 生成所有警告信息
-g 生成调试信息
<三>.gdb(Linux调试器)
gdb是Linux下的代码调试工具,在使用时需要在源代码生成时加上-g选项。退出调试ctrl+d或者quit
一、调试过程
r/run 运行程序
s/step 进入函数调用
b/breaktrace 查看各级函数调用及参数
info break 查看断点信息
finish 执行到当前函数返回,然后停下来等待命令
break行号 在某一行设置断点
break函数名 在某函数开头设置断点
continue/c 从当前位置开始连续而非单步执行程序
run/r 从开始连续而非单步执行程序
delete breakpoints 删除所有断点
delete breakpoints n 删除行号为n的断点
disable breakpoints 警用断点
enable breakpoints 启用断点
p 变量 打印变量值
display 变量名 动态显示每次停下来变量的值
undisplay 取消先前设置的那些变量的跟踪
until行号 跳至行号
n/next 单步执行
<四>.ctags(Linux代码查看)
ctags -R 在当前目录下建立索引
ctrl+] 跳转到函数或变量定义处
ctrl+T 跳转至上级
<五>.Makefile
一个工程中的源文件很多,按其类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指哪些文件需要先编译,哪些文件后编译,哪些文件需要重新编译,或者一些复杂的操作。Makefile带来的好处就是——实现自动化编译,一旦写好,只需要一个make命令,整个工程自动化编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的工具,make执行命令时,需要一个makefile文件,告诉make怎么去编译与链接程序
makefile 是一个文件(描述了一个工程如何编译等)
依赖关系&依赖方法
依赖方法(紧挨依赖关系 以tab开头)
1.make一个文件
touch Makefile//建立一个文件
vim Makefile//进入makefile
{//进入vim
test:test.o(依赖关系)(若发现test.o不存在,继续向下寻找test.o的依赖关系)
gcc -o test test.o(依赖方法)
test.o:test.s
gcc -c test,s -o test.o
test.c:test.i
gcc -S test.i test.s
test.o:test.c
gcc -E test.c -o test.i(依次生成)
}
或者可以直接
test:test.c
gcc -o test test.c
退出makefile文件后
make (执行makefile里的命令)
./test (运行可执行命令)
在makefile文件里可以写清理工程(一般放到最后)
{
.PHONY:clean(PHONY指明伪目标)(目标文件有具体依赖列表,伪目没有具体依赖列表,
标期待使用依赖方法)
clean:
rm -f test,o test.c test.i(在前面加@就可以屏蔽相关细节)
}
保存并退出makefile后执行clean就可以了删除相关文件
make clean