当前位置: 首页 > article >正文

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^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

 


http://www.kler.cn/a/408980.html

相关文章:

  • SpringBoot+SpringCloud面试题整理附答案
  • JavaScript数据类型判断
  • Docker安装ubuntu1604
  • html+js实现图片的放大缩小等比缩放翻转,自动播放切换,顺逆时针旋转
  • 一文学习Android系统核心服务ServiceManager
  • Oracle 19c Rac + ADG搭建(源库:RAC,目标库FS)
  • XML文件(超详细):XML文件概念、作用、写法、如何用程序解析XML、写入XML、dom4j框架、DTD文档、schema文档
  • python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析
  • tcpdump抓取流量包详解
  • 九、FOC原理详解
  • Python毕业设计选题:基于django+vue的企业it资产管理系统
  • Unity 设计模式-原型模式(Prototype Pattern)详解
  • 城电科技|太阳能折叠灯:点亮你的便捷之光
  • 【Ubuntu】安装rpm文件
  • Linux上安装单机版Kafka
  • 移动端自动化环境搭建_Android
  • 网络安全公司150强
  • 鸿蒙主流路由详解
  • vim 分割窗口后,把状态栏给隐藏
  • 前端框架 Redux tool RTK 总结
  • STM32总体架构简单介绍
  • 【SQL】【数据库】语句翻译例题
  • IDEA 添加外部.jar包。maven本地仓库录入新jar包。IDEA maven 命令巧妙使用。
  • php 限制访问次数
  • 数据结构-队列-顺序队列
  • tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk