Linux编译器vim的使用

这篇具有很好参考价值的文章主要介绍了Linux编译器vim的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 :Linux编辑器–vim

1:vim基本概念

vim是Linux下的一个多模式的编译器 简单来说就是写代码的工具 不提供编译调试等功能
有语法高亮功能 可视化操作不仅可以在终端运行 还可以运行与x windows mac os windows

2:vim的常用三种模式

Linux编译器vim的使用,linux,vim,运维

1、命令模式
控制光标的移动 字符,字或行 的删除 ,移动复制某区段
以及切换到插入模式和底行模式下
2、插入模式(使用最频繁的模式)
只有在插入模式下 才可以进行文字的输入
以及切换到命令模式
3、底行模式
文件保存或退出 也可以进行 文件替换 找字符串 列出行号等
以及切换到命令模式

3:vim三种模式的相互转换

Linux编译器vim的使用,linux,vim,运维

命令模式切换到插入模式
输入a:进入插入模式后 从目标光标所在位置的下一个位置开始输入文字
输入i: 进入插入模式后 从光标当前位置开始输入
输入0:进入插入模式后 插入新的一行 从行首开始输入文字
命令模式 切换到底行模式
输入shift+;
插入模式/底行模式切换命令模式
按ESC即可
插入模式和底行模式之间不能相互转换

4:vim命令模式下的命令集

- 移动光标

  • vim可以直接使用键盘来控制光标的上下左右移动,正规的vim使用的是小写字母h j k l 分别控制光标左下上右移动一格 也可以使用方向键进行移动
  • G :移动到文章的最后
  • gg:进入到文本开始
  • $(shift+4):移动到光标所在行的行尾
  • ^(shift+6):移动到光标所在行的行首
  • n+Enter:光标向下移动n行
  • n+l:光标进去到改行的第n个位置
  • ctrl+b :屏幕向前翻一页
  • ctrl+f:屏幕向后翻一页
  • ctrl+u:屏幕向前翻半页
  • ctrl+d:屏幕向后翻半页
  • w:光标进入到下个字的开头
  • e:光标进入到下个字的自尾
  • b:光标回到上个字的开头

-删除文字

  • x:每按一次删除光标所在位置一个字符
  • n+x:删除光标所在位置后面的n个字符
  • X:删除光标所在位置前一个字符
  • n+X:删除光标所在位置后前面的n个字符

-剪切/删除

  • dd:剪切/删除光标所在行
  • n+dd:从光标所在行开始剪切/删除n行
  • p:将剪切的内容复制到光标所在位置下一行
  • n+p:将剪切的内容复制到光标所在位置下一行开始复制n行

-复制

  • yy:复制光标所在行到缓冲区
  • n+yy:复制从光标所在行往下数n行字符到缓冲区
  • p:将缓冲区的字符粘贴到光标所在位置下一行
  • yw:将光标所在位置到字尾的字符复制到缓冲区
  • n+yw:复制n个字到缓冲区

-替换

  • r: 替换光标所在处的字符
  • R:替换光标所在位置的字符 直到按下esc停止uu
  • ctrl+~:快速切换大小写

-撤销和恢复

  • u:撤销
  • ctrl+r:恢复

-跳转至指定行

  • n+G:移动到第n行行首

5:vim底行模式下的命令集

在使用底行模式之前 先按ESC键确定自己处于命令模式 然后再按shift+;进入底行模式

  • 输入 set nu:按回车后在文件中的每一行前列出行号
  • 输入 set nonu:按回车后在文件中的取消列出的行号
  • 输入数字:按回车后就会跳转到该行行首
  • 输入w:保存文件
  • 输入w!:强制保存
  • 输入q:退出文件
  • 输入q!:强制退出文件
  • 输入wq:保存并退出文件
  • 输入vs+文件名:进行多文件操作
  • 输入ctrl+ww:光标在不同文件中切换
  • !+其他指令 :在不退出vim的情况下执行Linux其他命令

二:Linux编译器–gcc/g++

1:gcc/g++的作用

gcc/g++分别是GUN中的c和c++编译器
对于 .c和.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的)
对于 .c和.cpp文件,g++则统一当做cpp文件编译

在使用gcc之前 应该了解一个.c源文件到一个.exe可执行程序经历了哪些过程和函数库 # 程序编译链接的四个过程

  1. 预处理
    完成头文件的展开 删去注释 宏替换等工作
  2. 编译
    将源代码翻译成汇编语言 语法分析 词法分析 语义分析等
  3. 汇编
    汇编代码转换成为二进制指令产生目标文件
  4. 链接
    将汇编过程产生的二进制指令进行连接 生成可执行程序

2:gcc/g++的语法

gcc/g++ 选项 文件
常用选项:
-E :只进行预处理 不会生成文件 需要自己重定向到一个文件里
-S: 编译到汇编语言(生成.s文件) 不进行汇编和链接
-c:编译到目标文件 (生成.o文件) 不进行链接
-o:将执行结果输出到指定文件中
-static:对生成的文件采用静态链接

3:预处理

gcc -E -o test.i test.c
将源文件test.c进行预处理后停止 将是执行结果输出到test.i文件中
Linux编译器vim的使用,linux,vim,运维
可以看到预处理阶段完成了头文件的展开 删去注释 宏替换等工作

4:编译

gcc -S test.s
将预处理阶段产生的test.i文件编译产生.s汇编文件
Linux编译器vim的使用,linux,vim,运维
Linux编译器vim的使用,linux,vim,运维

5:汇编

gcc -c test.s
将汇编文件test.s编译成产生.o目标文件
Linux编译器vim的使用,linux,vim,运维
Linux编译器vim的使用,linux,vim,运维

6:链接

gcc test.o
将目标文件链接产生可执行程序a.out
Linux编译器vim的使用,linux,vim,运维
如果你也和我一样 不喜欢a.out 用-o进行重定向gcc -o test.exe test.o
Linux编译器vim的使用,linux,vim,运维
可执行程序也是二进制指令
Linux编译器vim的使用,linux,vim,运维

7:函数库

我们在c程序中,并没有实现printf函数,且在预编译中包含的头文件stiod.h中也仅仅只是有该函数的声明 并没有定以实现该函数 那么printf函数在哪里实现的呢?
在Linux中 系统把这些函数都实现在一个名为libc.so.6(Linux中的一个动态链接库 包含了标准c库的实现)的文件中 在没有特别指定时 gcc会到系统默认的路径’‘/usr/lib’'下进行查找,也就是链接到libc.so.6库函数中去 这样就能实现函数printf了 这也就是链接的作用
库函数一般分为静态库和动态库

- 动静态库

  • 静态库是指在编译链接时 把库文件的代码全部加入到可执行文件中 因此生成的可执行程序文件会比较大 但在运行时也就不需要库文件了在linux下后缀名一般为.a windows中后缀名为.lib
  • 动态库则是在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库 这样可以节省系统的开销 在Linux下后缀为.so windows后缀为.dll 前面所说的libc.so.6就是动态库
  • gcc在编译时默认使用动态链接(使用file命令验证)

file 命令
语法: file 文件名
功能: 辨识文件类型
Linux编译器vim的使用,linux,vim,运维
gcc/g++在编译时默认采用动态链接 我们也可以加上-static选项使用静态链接的方式编译
gcc -o newtest.exe test.c -static
Linux编译器vim的使用,linux,vim,运维
采用静态链接 可执行程序会比较大
我们也可以查看一个可执行程序所依赖的库(使用ldd命令)

ldd 命令
语法: ldd 可执行程序
功能: 查看一个可执行程序依赖的库

Linux编译器vim的使用,linux,vim,运维

- 动态链接的优缺点

Linux编译器vim的使用,linux,vim,运维

8:静态链接的优缺点

Linux编译器vim的使用,linux,vim,运维

三:Linux项目自动化构建工具make/makefile

  • make/makefile 是Linux项目自动化构建的工具
  • make是一个命令工具 是一个解释makefile当中的指令的工具
  • makefile是一个文件 带来的好处就是自动化编译 makefile写的好 只需要一个make命令 就能完成整个工程的自动编译 极大提高了开发效率 一个比较大的工程源文件不计其数 按照其类型 功能 模块存放在若干个目录中 mkaefile定义了一系列的规则来指定哪些文件需要先编译 哪些文件需要后编译 甚至于进行更复杂的功能操作
  • make需要和makefile互相搭配使用 完成项目的自动化构建

在使用make/makefile之前 先了解一下各个文件之间的依赖关系和依赖方法

依赖关系

Linux编译器vim的使用,linux,vim,运维

依赖方法

Linux编译器vim的使用,linux,vim,运维

make工作原理

  • 当我们输入make命令时 make会在当前目录下寻找名为Makefile或者makefile的文件
  • 找到之后 他会找文件中的第一个“目标文件” 上面makefile例子中 他会找到test这个文件 将这个文件作为最终的"目标文件"
  • 如果test文件不存在 或者是test所依赖的后面test.o 文件的修改时间 要比这个test文件新 那么他就会执行后面所定义的命令来生成test这个文件
  • 如果test所依赖的test.o文件不存在 那么make会在当前文件中找目标位test.o文件的依赖 找到的话 在根据那一个规则生成test.o文件
  • 这就是整个make的依赖性 make会一层一层的去找文件的依赖关系 知道最终编译出第一个目标文件
  • 如果在查找过程中 被依赖的文件找不到 make就会直接退出 并报错 如果是定义的命令错误 或者是编译不成功 make根本不会理-
  • make只管文件的依赖性 如果找到了依赖关系后 冒号后面的文件还是不存在 这样的话make也不会工作

在重新产生一个可执行程序时 都应该将之前生成可执行程序以及生成的文件进行清理 即项目是需要清理的

项目清理

make clean命令是用来清除所有的目标文件 以便重新编译 像清除这种没有被第一个目标文件直接或间接关联 那么他后面所定义的命令将不会被自动执行
Linux编译器vim的使用,linux,vim,运维
一般这种clean的目标文件 直接将他设置位伪目标 .PHONY修饰,为目标的特性是可以强制执行
Linux编译器vim的使用,linux,vim,运维
Linux编译器vim的使用,linux,vim,运维

四:Linux调试器–gdb

背景:

  • 一个程序的发布方式有两中 分别是debug 和release模式
    debug一般是开发人员需要的环境 程序员需要调式找bug并解决bug
    release是经过优化后的版本 是用户使用的版本 不需要加入调试信息
  • Linux下 gcc/g++编译的二进制程序默认是release模式
  • 要使用gdb调试 必须是debug模式 在gcc/g++编译时 加上-g选项即可

gdb的使用

  • gdb 可执行程序:进入调试
  • ctrl+d 或者 q:退出调试
    Linux编译器vim的使用,linux,vim,运维
  • list/l 行号:显示指定行之后的源码 每次显示10行
  • list/l 函数名:显示函数的源码
    Linux编译器vim的使用,linux,vim,运维
  • b 行号 :在指定行设置断点
  • b函数名:在指定函数开头设置断点

Linux编译器vim的使用,linux,vim,运维文章来源地址https://www.toymoban.com/news/detail-740344.html

  • info b :查看自己打的断点信息
    Linux编译器vim的使用,linux,vim,运维
  • d breakpoints:删除所有断点
  • d 断点编号 :删除对应的断点
    Linux编译器vim的使用,linux,vim,运维
  • disable 断点编号 :禁用断点
  • enable 断点编号:启用断点
    Linux编译器vim的使用,linux,vim,运维
  • r(run) :运行程序
  • n(next):单条执行、逐过程执行 与vs中调试器的F10一样
  • s(step):进入函数调用 逐语句执行 与vs中调试器的F11一样
    Linux编译器vim的使用,linux,vim,运维
    Linux编译器vim的使用,linux,vim,运维
  • p (print) 变量名/&变量名 :显示变量的值或地址
  • display 变量名/&变量名:一直显示变量的内容或地址
  • undisplay 编号取消一直显示变量的内容或地址
    Linux编译器vim的使用,linux,vim,运维
  • c(continue):从一个断点运行到下一个断点
  • finsh:将一个函数运行结束就停下来
  • until :直接运行到指定行
    Linux编译器vim的使用,linux,vim,运维
    Linux编译器vim的使用,linux,vim,运维
  • set var :修改一个变量的内容(不用修改源代码 进行多分支测试)
    Linux编译器vim的使用,linux,vim,运维

到了这里,关于Linux编译器vim的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [linux初阶][vim-gcc-gdb] TwoCharter: gcc编译器

    目录 一.Linux中gcc编译器的下载与安装 二.使用gcc编译器来翻译 C语言程序  ①.编写C语言代码 ②翻译C语言代码 a.预处理 b.编译  c.汇编  d.链接 ③.执行Main 二进制可执行程序(.exe文件)  三.总结  使用yum命令(相当于手机上的应用市场)来进行安装.  下载完毕之后,使用 which gc

    2024年04月10日
    浏览(59)
  • 【linux】编译器使用

    目录 1. gcc ,g++ 编译器使用 a. 有关gcc的指令(g++同理) 2. .o 文件和库的链接方式 a. 链接方式 b. 动态库 和 静态库 优缺点对比 c. debug 版本 和 release 版本 注意: linux下自带gcc编译器,如果要安装g++编译器; sudo yum install -y gcc-g++ (普通用户) gcc + 文件名 得到可执行文件 gcc + 文

    2024年04月26日
    浏览(39)
  • 【Linux】03 GCC编译器的使用

     在使用gcc编译程序时,编译过程可以简要划分为4个阶段:         预处理、编译、汇编、链接 这个阶段主要处理源文件中的#indef、#include和#define预处理命令; 这里主要是把一些include的头文件和一些宏定义,放到源文件中。 编译命令: gcc  -E  -o  hello.i  hello.c 将经过预处

    2024年01月20日
    浏览(55)
  • Linux编译器——gcc/g++使用

    前言:  在上一篇,我们学习了关于文本编辑器 vim 的全部知识,今天给大家带来的是关于Linux编译器—gcc/使用的详细介绍。 本文目录  (一)温习程序的产生的过程 1、前言 2、程序的产生过程 3、🌜初步认识 gcc🌛 a) gcc的基本概念 b)gcc的基本特点 4、使用方法💻 (二)

    2023年04月17日
    浏览(55)
  • Linux--编译器-gcc/g++使用

    目录 前言 1.看一段样例  2.程序的翻译过程 1.第一个阶段:预处理 2.第二个阶段:编译 3.第三个阶段:汇编 4.第四个阶段:链接 3.程序的编译为什么是这个样子? 4. 关于编译器 5.链接(动静态链接) 1.首先,我们来看一段样例(见一下) 2.见完之后,我们来看一下程序的翻译

    2024年02月20日
    浏览(63)
  • 【Linux】编译器-gcc/g++使用

    个人主页 : zxctscl 文章封面来自:艺术家–贤海林 如有转载请先通知 在之前已经分享了 【Linux】vim的使用,这次来看看在云服务器上的编译器gcc。 我们先写一段简单的代码: 当我们进行编译的时候: 发现根本就编译不了。 这个是因为编译器版本的问题: 查看编译器的版

    2024年03月11日
    浏览(129)
  • 【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用(1编译器)

    作者:爱写代码的刚子 时间:2023.6.3 本篇博客主要详细介绍Linux中十分重要的工具:编译器,灵活使用这些工具是Linux中一项必备技能。项目自动化构建工具、调式器、git工具会在下一篇博客中进行介绍。 Linux编译器-gcc/g++使用 gcc编译C语言: g++编译C++: gcc只能编译C语言,而

    2024年02月09日
    浏览(69)
  • Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具

    目录 Ⅰ.  Linux 软件包管理器 yum 一、yum 背景知识 二、yum 的基本使用 1、查看软件包 2、软件包名称构成 3、安装软件 4、卸载软件 Ⅱ.vim编辑器  一、认识vim 1、vim概念  2、模式及其切换  二、vim使用 1、vim的指令(重要)  命令模式 插入模式 底行模式 2、vim配置 Ⅲ.gcc/g++编

    2024年02月05日
    浏览(55)
  • Linux的学习之路:6、Linux编译器-gcc/g++使用

    本文主要是说一些gcc的使用,g++和gcc使用一样就没有特殊讲述。 目录 摘要 一、背景知识 二、gcc如何完成 1、预处理(进行宏替换) 2、编译(生成汇编) 3、汇编(生成机器可识别代码 4、链接(生成可执行文件或库文件) 5、函数库 6、静态库和动态库 7、gcc选项 三、思维导图

    2024年04月23日
    浏览(50)
  • Linux编译器--git、yum、gdb的使用

    雷纳斯-托瓦兹在开源了linux后全世界的很多人都要给linux提供代码,他需要合并代码。但是一个人的精力有限。无法完成,他就自己写了一个版本控制工具git。来控制自己的代码,并且也开源了。 linux和git就不断迭代,也不断进步。后来有人对git进行了商业化包装,形成了g

    2024年01月20日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包