Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器

创建第一个vim编辑的代码

1.新建文件

2.使用vim打开

3.打开默认是命令模式,写代码需要在屏幕上输出"i"字符

  • 1.写完代码后要按Esc键退出到指令模式
  • 2.再按shift+:+wq即可保存并退出vim

(因为不支持鼠标 ,通常 使用键盘上的箭头 移动光标进行编辑)

4.cat进行查看

5.gcc编译文件

运行成功

2. vim的多模式

1.模式切换

模式切换如图:

结论:

命令模式可以理解为Windows系统中的鼠标,可以快速,高效得进行编程

2.命令补充

1.与光标有关的命令
  • n+gg :光标移动至第n行(任意行)
  • shift+g :光标移动至 最后一行
  • shift+$ : 光标移动至所在行的最后
  • shift+^ : 光标移动至所在行的最前
  • h,j,k,l :上下左右移动(h左,l右,j下,k上)
  • w,b: 光标按单词间隔进行行列移动(w向后,b向前)
  • n+ x :在光标所在处 向后删除 n个字符
  • n+ X :在光标所在处 向前删除 n个字符

2.其他命令(命令模式)
  • yy :复制当前一行
  • n+ yy :从当前行开始复制n行代码
  • p :将复制的内容黏贴至当前行的下一行
  • u :撤销上一步操作
  • ctrl+r :对u进行撤销,即恢复操作
  • n+ dd :剪切或删除行
  • shift+r:进入替换模式,可以重新写当前行的代码
3.其他命令 (底行模式)
  • shift+:+set nu: 调出行号(底行模式)
  • "/+字符串" +n : 查找字符串,按n找到下一个字符串
  • !gcc+文件名 : 执行正在写的程序文件,生成可执行程序
  • !./a.out (生成的可执行程序) : 执行程序
  • vs + 文件名(实现分屏操作
  • ctrl+ww,切换光标至另一个界面(可以用来复制其他文件中的内容配合"yy")
4.补充命令
    1. ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->shift+i->"//"(插入双斜杠,也可以尝试插入别的字符)->esc(回到命令模式)

批量化注释

  • 2.ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->d

批量化删除注释

  • 3.shift+:->%s/xxx/aaa/g

将代码中的xxx全部换成aaa

3.vim的简要配置

1.进入家目录 cd ~
2.创建 .vimrc文件 catch .vimrc
3.vim .vimrc 并在里面写入想要的指令(可以自行去网上搜索)

我这边写入 set nu(显示行数)和 set mouse=a(支持鼠标)

4.再次打开test.c

发现已经添加了行号。

4.程序翻译-------gcc/g++

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

举例:

使用gcc -E test.c -o test.i

  • -o:表示我们要形成的文件的名称(这里即test.i)
  • gcc -E:表示从现在开始 只要预处理完成就停下来

用vim打开test.i并与test.c对比:

宏替换+去注释+头文件展开全部完成)

2.编译(生成汇编)

gcc -S test.i -o test.s

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -E:表示从现在开始 只要编译完成就停下来
3.汇编(生成机器可识别代码)

gcc -c test.i -o test.o

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -c:表示从现在开始 只要汇编完成就停下来
4.链接(生成可执行文件或库文件)

gcc test.o -o testtest就是可执行的文件

5.补充知识点sudo(添加用户至白名单)

1.ls -l /etc/sudoers
2.su(切换至root)
3.vim /etc/sudoers

发现白名单里只有root,我们可以自行添加用户:

4.sudo验证

成功使用sudo,代表白名单配置成功。

相关推荐
昌原的儿子LEO几秒前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
GeW3 分钟前
RHCE通关秘籍:从零基础到高分拿证的5个加速器
linux
三8445 分钟前
SSRF 从入门到实战:原理、危害与基础利用
服务器·网络安全·ssrf·#web安全
前端世界11 分钟前
基于 Linux 的本地 AI 智能问答平台搭建实践 —— Ollama + FastAPI + Nginx 实现本地大模型 Web 服务
linux·运维·人工智能
倔强的石头10621 分钟前
【Linux指南】动静态库系列(七):符号表与重定位:链接器如何把函数调用接起来
linux·前端·javascript
山岚的运维笔记23 分钟前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
代码方舟1 小时前
O2O二手车交易平台B端车商管理后台:基于天远车信盟出险构建自动化车况评估网关
java·运维·人工智能·自动化
数智启示录1 小时前
PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍
运维·数据库·经验分享·postgresql·面试
平原20181 小时前
GPT Image 2 / Nano Banana API成本拆解:$0.0081、84.7%与单张有效成本
linux·服务器·gpt
云登指纹浏览器1 小时前
RPA 与指纹浏览器集成:多账号自动化运营的5项环境配置
运维·自动化·rpa