vim、gcc/g++、ctags简析

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




进度条小程序
<span style="font-size:18px;">#include<stdio.h>
#include<string.h>

void proc()
{
<span style="white-space:pre">	</span>int count=0;
<span style="white-space:pre">	</span>char buf[102];
<span style="white-space:pre">	</span>memset(buf,'\0',sizeof(buf));
<span style="white-space:pre">	</span>const char*lable="|\-\\";

<span style="white-space:pre">	</span>while(count<=100)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>buf[count]='#';
<span style="white-space:pre">		</span>printf("[%-100s][%d%%][%c]\r",buf,count++,lable[count%4]);
<span style="white-space:pre">		</span>fflush(stdout);
<span style="white-space:pre">		</span>usleep(10000);
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>printf("\n");
}</span>


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值