<一>.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