提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、vim,gcc,makefile的简单使用
  • 总结

前言

这篇文章以“够用”为目的,结合实例简单介绍了vim的使用

关于gdb和vim的底行模式,我的评价是究极长痛

参考资料:vim from zero to hero


一、vim,gcc,makefile的简单使用

在Linux端输入“vim test.c”,vim就会打开test.c这个文件,如果这个文件不存在,vim就会自动给你创建一个名为"test.c"的文件,并把它打开,我这里新创建了一个目录,然后输入vim test.c之后,显示结果如下:


我们直接照常输入的话是什么反应也没有的,注意左下角显示为normal,这对应的其实是vim的默认模式,我们现在输入i,目的是进入插入模式
发现界面左下角显示为insert,证明我们已经进入到了插入模式,现在就可以正常输入了:

写完代码以后要保存一下,但是在此之前我们需要先退回normal模式,这需要我们按一下键盘左上角的esc键使左下角显示normal

冷知识:在任何模式下狂按esc键都可以让你退回到normal模式


输入冒号“:”,就是shift按住以后输入冒号键,然后我们就进入到了底行模式,界面会变成下面这样:

如果只想保存的话,在这里输入w,如果想直接退出的话,输入q,这里我们输入wq以后回车实现保存并退出:

这个模式下还有其他茫茫多的指令,这些内容放在第二部分了


可以看到test.c真的被保存起来了

从源文件写完,到屏幕上显示出“Hello Linux”还有“预处理、编译、汇编、链接”4个步骤要走,

关于这4个过程中源文件都经历了哪些变化,可以参考下我的这篇博客:传送门
这4个过程都要用gcc来完成
这里我们为了举例子,先输入一个“-c”命令,先让gcc生成目标代码,然后再生成可执行程序:

自己写的时候直接 gcc test.c,直接就可以生成可执行程序a.out

"-o"指令的后面紧跟你想定义的目标文件名称,图中的指令意为命令gcc根据test.c直接生成可执行程序,并将生成的文件放进一个名为test.o的文件里面

执行可执行程序以后发现屏幕上已经==打印出了我们想要的结果:

gcc的常用选项如下表所示:

选项 功能
-E 只进行预处理,不生成文件,必须配合-o指令重定向到一个文件里,后缀为.i
-S 编译到汇编语言,不进行汇编和链接,后缀为.s
-c 编译到目标代码,形成一个后缀为.o的二进制文件,有权限也不能直接用命令行执行
-o 文件输出到文件,与上述三条指令结合使用
-static 此选项对生成的文件采用静态链接
-g 生成调试信息,GNU调试器可利用该信息
-shared 此选项将尽量使用动态库,所以生成文件较小,但是在此之前系统里得有动态库
-w 不生成任何警告信息
-o 生成所有警告信息

也就是说如果不嫌麻烦的话你可以像下面这样一步一步的编译代码:


问题是虽然我们只想要最后的可执行程序,但是却生成了test.i,test.s,test.o这三个“没用”的临时文件,用完以后一个一个删也非常麻烦,于是就引出了我们的自动化编译工具make/Makefile,来自动化删除运行过程中的临时文件,以上面生成test.i,test.s,test.o三个文件的顺序来写,make的操作过程如下图所示:

先简述一下make的工作方式:
make会在我们当前处在的目录下面寻找名为“Makefile”或“makefile”的文件,然后根据这个文件里面的指令完成操作,我们这里写的makefile文件内容如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1cf515d1b066407d85f97e9bdb629fdf.png
我们要把想要得到的最终文件写在最前面,写出它来自于哪个文件
eg:test:test.o
表示test文件依赖于test.o
紧接着第2行的代码表示test是由test.o用gcc编译过来的,随后如法炮制按照逆过来的逻辑顺序,一直写到目录中实际存在的文件test.c

这个规定的顺序其实暗示了make里面用了一个栈的数据结构,虽然我们写入(入栈)的过程是倒着的,但是等到make运行指令(出栈)的时候,顺序自然就是正过来的了

当你编译的程序含有自己编写的头文件时,则需要把被依赖的文件用空格分开,依次写道:以后

实际上你不需要像上面的例子一样一步一步地写,直接让可执行程序test依赖于test.c即可
最后我们直接运行test:

总结

vim的其他模式,尤其是底行模式还有很多指令没有讲,不了解的话对vim的使用没有特别大的影响,受于篇幅和时间限制不再做过多讲述

【Linux】编辑器vim的育婴式教程(勉强够用)相关推荐

  1. 你一定可以看懂的:Linux编辑器-vim的使用

    你一定可以看懂的:Linux编辑器-vim的使用 每博一文案 正如这句话所说的,人跟人之间的感情,就像织毛衣拆开的, 永远比拆开的快,失去永远比得到的快,没有一段感情, 天生牢固,也没有一段感情从来不 ...

  2. Linux编辑器vim

    本文已收录至<Linux知识与编程>专栏! 作者:ARMCSKGT 演示环境:CentOS 7  目录 前言 正文 vim常用方式 进入vim 退出vim vim基本模式及模式功能 命令模 ...

  3. 【Linux练习生】Linux编辑器-vim使用(详解)

    vim使用 1. vim的基本概念 2. vim的基本操作 2.vim正常模式命令集 4. vim末行模式命令集 5.vim多行操作 常用命令选项: – the End – vi/vim区别: vi/ ...

  4. 榕树贷款的Linux编辑器-vim使用,榕树贷款环境基础开发工具

    榕树贷款Linux编辑器-vim使用 榕树贷款vim的基本模式 正常/普通/命令模式(NORMAL ) 榕树贷款控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或 ...

  5. 【Linux】Linux编辑器—vim使用

    目录 1.vim的基本概念 2.vim基本操作 3.vim命令模式命令集 4.vim末行模式命令集 5.简单vim配置 6.使用sudo提权 7.关闭vim时使用 ctrl + z 退出怎么解决? 为 ...

  6. linux 编辑器vim配置

    1.         基本配置 对vim进行配置的目的: 进行vim配置,可以让我们在后续敲代码更加方便.按F5可以直接编译并执行C.C++代码以及执行shell脚本:按"F8"可 ...

  7. Linux编辑器——vim

    目录 1.vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4.vim末行模式命令集 5. 简单vim配置 1.vim的基本概念 这里主要讲解vim最常用的三种模式:命令模式(co ...

  8. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

  9. 【Linux入门】第三篇:软件包管理器yum和编辑器vim的使用

    目录 前言 Linux软件包管理yum 查看软件包 如何安装软件 如何卸载软件 lrzsz的使用 Linux编辑器-vim使用 01.vim的基本概念 02.vim的基本操作 03.vim命令模式命令 ...

最新文章

  1. 卡片使用_APP必备的设计元素!卡片
  2. 访谈Stuart Davidson:Skyscanner的持续交付推广
  3. ASP.NET中TextBox控件设置ReadOnly=true后台取不到值
  4. 控制论python_[干货]深入浅出LSTM及其Python代码实现
  5. pandas输出到excel_python读写excel等数据文件方法汇总
  6. 冬奥网络安全卫士被表彰突出贡献,探寻冬奥背后的安全竞技
  7. javascript-运算符
  8. 8.Java 面试题整理(J2EE,MVC方面)
  9. 华擎 j3455 时钟 linux,J3455安装centos步骤
  10. 华为手机多久可以摆脱美国技术依赖?任正非放出豪言!
  11. php ajax base64,jQuery实现文件编码成base64并通过AJAX上传的方法
  12. java 集合中对象的排序 和去重
  13. 极客大学架构师训练营 系统架构 分布式数据库 数据分片 业务分库 CAP ACID BASE 第11课 听课总结
  14. Stanford CoreNLP依存关系分析、词性标注及句子主语分析(使用Python) 超详细截图手把手教学,新手友好
  15. 计算机与网络时间同步,电脑时间同步,教您怎么让电脑时间和网络时间同步
  16. mapboxGL入门详解
  17. Hadoop分布式文件系统 (HDFS)
  18. CTFshow--常用姿势
  19. Could not find parameter map com.itcast.mapper.userinfMapper.map
  20. python操作Excel的5种常用方式

热门文章

  1. windows编译 zlib
  2. 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”解决方案
  3. 服务器ie不能打开购物网站,[Answers 分享]通过IE浏览器无法打开网上银行或者支付宝等加密安全站点...
  4. js 时间转东八区_js:固定与东八区服务器时间保持一致并且可选时间格式
  5. Ubuntu 20.04 源码编译Paddle2.2.2
  6. 终于有人把大数定律讲明白了
  7. android面试宝典!Android高级工程师面试实战,通用流行框架大全
  8. 测试银行卡号必看(长度限制及卡号字符类型总结)
  9. java将十进制数字转换成二进制
  10. 利用51单片机,矩阵键盘按键显示0--F在数码管