Bootstrap

Linux的开发工具(二)

1.vim的基本操作

正常模式到插入模式

输入a

输入i

输入o

示例

输入iao下面的就会变成INSERT模式

插入模式到正常模式

按Esc键

正常模式到低行模式

shift+;

:w保存当前文件

:wq保存并退出

:q!强制退出

2.vim正常模式命令集

移动光标

用箭头的上下左右或者hjkl来控制,h左j下k上l右

按G:到最后一行

¥:移动到光标所在行的行尾

^:移动到所在行的首

gg:文本的开始

删除文字

x:没按一次删除光标所咋位置的一个字符

X:删除光标所在位置的前一个字符

dd:删除在行

复制

yy:复制光标所在行到缓冲区

#yy:如7yy表示拷贝光标所在行往下数7行文字

p:将缓冲区内的字符贴到所在位置

替换

r:替换光标所在处的字符

R:替换光标所到之处的字符,直到按Esc

撤销上一次操作

u:回到上一个操作

ctrl+r:撤销的恢复

跳到指定行

#G:10G就到第十行的首

3.简单vim的配置

配置文件的位置

在目录/etc/下面,有个vimrc的文件,是系统中公共的vim的配置文件,对所有用户都有效。

在每个普通用户的主目录下,都可以自己建立私有的配置文件,命名为“.vimrc ”,打开自己目录下的文件.vimrc通过 vim .vimrc

常用的配置选项

设置语法高亮:syntax on

显示行号:set nu

设置缩进的空格数为4:set shiftwidth=4

 4.编译器gcc/g++

2.1背景知识

1.预处理(进行宏替换/去注释/条件编译/头文件展开等)

2.编译(生成汇编)

3.汇编(生成机器可识别代码,二进制)

4.链接(生成可执行文件或库文件)

2.2预处理

gcc -E hello.c -o hello.i

选项 "-E",该选项作用是让gcc在预处理后停止编译过程

选项"-o"是指定文件,".i"文件为已经预处理的C原始程序

代码示例:

root@iZbp1be068ksa92vuf0kbdZ:~# touch c.c
root@iZbp1be068ksa92vuf0kbdZ:~# vim c.c
root@iZbp1be068ksa92vuf0kbdZ:~# gcc -E c.c -o hello.i
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.i

 

2.3编译

gcc -S hello.i -0 hello.s 

使用"-S"选项进行查看,该选项进行到编译就停止,生成汇编代码

代码示例:

root@iZbp1be068ksa92vuf0kbdZ:~# gcc -S hello.i -o hello.s
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.s

 

2.4汇编

汇编阶段是把编译阶段生成的“.s”文件转成目标文件

用“-c”选项可以看到汇编代码已经转换为“.o”的二进制代码

gcc -c hello.s -o hello.o

代码示例

root@iZbp1be068ksa92vuf0kbdZ:~# gcc -c hello.s -o hello.o
root@iZbp1be068ksa92vuf0kbdZ:~# vim hello.o

二进制: 

  1 ^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^A^@>^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@`^B^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@@^@^N^@^M^@ó^O^^úUH<89>?H<8d>^E^@^@^@^@H<89>??^@^@^@^@è^@^@^@^@?^@^@^@^@]?hello world^@^@GCC:     (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0^@^@^@^@^@^@^D^@^@^@^P^@^@^@^E^@^@^@GNU^@^B^@^@?^D^@^@^@^C^@^@^@^@^@^@^@^T^@^@^@^@^@^@^@^AzR^@^Ax^P^A^[^L^G^H<90>^A^@^@^\^@^@^@^\^@^@^@^@^@^@^@#^@^@^@^@E^N^P<86>^BC^    M^FZ^L^G^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^D^@??^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^C^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^C^@^E^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^    @^@^E^@^@^@^R^@^A^@^@^@^@^@^@^@^@^@#^@^@^@^@^@^@^@
  2 ^@^@^@^P^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c.c^@main^@printf^@^@^@^@^@^@^@^@^K^@^@^@^@^@^@^@^B^@^@^@^C^@^@^@ü???????^X^@^@^@^@^@^@^@^D^@^@^@^E^@^@^@ü??????? ^@^@^@^@^@^@^@^B^@^@^@^B^@^@^@^@^@^@^@^@^    @^@^@^@.symtab^@.strtab^@.shstrtab^@.rela.text^@.data^@.bss^@.rodata^@.comment^@.note.GNU-stack^@.note.gnu.property^@.rela.eh_frame^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^A^@^@^@^F^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@^@^@^@^@^@^@^@#^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^[^@^@^@^D^@    ^@^@@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^A^@^@^@^@^@^@0^@^@^@^@^@^@^@^K^@^@^@^A^@^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@&^@^@^@^A^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@,^@^@^@^H^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@c^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@1^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@c^@^@^@^@^@^@^@^L^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@9^@^@^@^A^@^@^@0^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@o^@^@^@^@^@^@^@,^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^A^@^@^@^@    ^@^@^@B^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<9b>^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@R^@^@^@^G^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@ ^@^@^    @^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@j^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@8^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@e^@^@^@^D^@^@^@@^@^@^    @^@^@^@^@^@^@^@^@^@^@^@^@?^A^@^@^@^@^@^@^X^@^@^@^@^@^@^@^K^@^@^@        ^@^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@^A^@^@^@^B^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@?^@^@^@^@^@^@^@<90>^@^@^@^@^@^@^@^L^@^@^@^D^@    ^@^@^H^@^@^@^@^@^@^@^X^@^@^@^@^@^@^@ ^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<88>^A^@^@^@^@^@^@^Q^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^Q^@^@^@^C^@^@^@^@^@^@^@^@^@^@^@^@^@^@    ^@^@^@^@^@è^A^@^@^@^@^@^@t^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^A^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

 

;