【Linux】编辑器vim的育婴式教程(勉强够用)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、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的育婴式教程(勉强够用)相关推荐
- 你一定可以看懂的:Linux编辑器-vim的使用
你一定可以看懂的:Linux编辑器-vim的使用 每博一文案 正如这句话所说的,人跟人之间的感情,就像织毛衣拆开的, 永远比拆开的快,失去永远比得到的快,没有一段感情, 天生牢固,也没有一段感情从来不 ...
- Linux编辑器vim
本文已收录至<Linux知识与编程>专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 vim常用方式 进入vim 退出vim vim基本模式及模式功能 命令模 ...
- 【Linux练习生】Linux编辑器-vim使用(详解)
vim使用 1. vim的基本概念 2. vim的基本操作 2.vim正常模式命令集 4. vim末行模式命令集 5.vim多行操作 常用命令选项: – the End – vi/vim区别: vi/ ...
- 榕树贷款的Linux编辑器-vim使用,榕树贷款环境基础开发工具
榕树贷款Linux编辑器-vim使用 榕树贷款vim的基本模式 正常/普通/命令模式(NORMAL ) 榕树贷款控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或 ...
- 【Linux】Linux编辑器—vim使用
目录 1.vim的基本概念 2.vim基本操作 3.vim命令模式命令集 4.vim末行模式命令集 5.简单vim配置 6.使用sudo提权 7.关闭vim时使用 ctrl + z 退出怎么解决? 为 ...
- linux 编辑器vim配置
1. 基本配置 对vim进行配置的目的: 进行vim配置,可以让我们在后续敲代码更加方便.按F5可以直接编译并执行C.C++代码以及执行shell脚本:按"F8"可 ...
- Linux编辑器——vim
目录 1.vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4.vim末行模式命令集 5. 简单vim配置 1.vim的基本概念 这里主要讲解vim最常用的三种模式:命令模式(co ...
- 【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. ...
- 【Linux入门】第三篇:软件包管理器yum和编辑器vim的使用
目录 前言 Linux软件包管理yum 查看软件包 如何安装软件 如何卸载软件 lrzsz的使用 Linux编辑器-vim使用 01.vim的基本概念 02.vim的基本操作 03.vim命令模式命令 ...
最新文章
- 卡片使用_APP必备的设计元素!卡片
- 访谈Stuart Davidson:Skyscanner的持续交付推广
- ASP.NET中TextBox控件设置ReadOnly=true后台取不到值
- 控制论python_[干货]深入浅出LSTM及其Python代码实现
- pandas输出到excel_python读写excel等数据文件方法汇总
- 冬奥网络安全卫士被表彰突出贡献,探寻冬奥背后的安全竞技
- javascript-运算符
- 8.Java 面试题整理(J2EE,MVC方面)
- 华擎 j3455 时钟 linux,J3455安装centos步骤
- 华为手机多久可以摆脱美国技术依赖?任正非放出豪言!
- php ajax base64,jQuery实现文件编码成base64并通过AJAX上传的方法
- java 集合中对象的排序 和去重
- 极客大学架构师训练营 系统架构 分布式数据库 数据分片 业务分库 CAP ACID BASE 第11课 听课总结
- Stanford CoreNLP依存关系分析、词性标注及句子主语分析(使用Python) 超详细截图手把手教学,新手友好
- 计算机与网络时间同步,电脑时间同步,教您怎么让电脑时间和网络时间同步
- mapboxGL入门详解
- Hadoop分布式文件系统 (HDFS)
- CTFshow--常用姿势
- Could not find parameter map com.itcast.mapper.userinfMapper.map
- python操作Excel的5种常用方式
热门文章
- windows编译 zlib
- 加载java ie停止工作_IE报错“Internet Explorer 已停止工作”解决方案
- 服务器ie不能打开购物网站,[Answers 分享]通过IE浏览器无法打开网上银行或者支付宝等加密安全站点...
- js 时间转东八区_js:固定与东八区服务器时间保持一致并且可选时间格式
- Ubuntu 20.04 源码编译Paddle2.2.2
- 终于有人把大数定律讲明白了
- android面试宝典!Android高级工程师面试实战,通用流行框架大全
- 测试银行卡号必看(长度限制及卡号字符类型总结)
- java将十进制数字转换成二进制
- 利用51单片机,矩阵键盘按键显示0--F在数码管