首页 > 其他分享 >vi编辑器和gcc编译器

vi编辑器和gcc编译器

时间:2024-07-20 15:01:11浏览次数:14  
标签:gcc vi str1 编译器 str2 hello 光标

1.vi编辑器

vi是Linux中最常用的文本编辑器,嵌入式系统开发人员要熟练使用这个工具,vim是其改进版本。

vi编辑器中共有三种模式,进入文件是处于命令行模式

1.1如何进入插入模式

先按Esc键,而后按下a、A、i、I、o、O中的一个可以进入插入模式

新增(append)

                        a:在光标位置的后面新增内容

                        A:在光标所在行的最后新增内容

插入(insert)

                        i:在光标所在位置插入内容

                        I:在光标所在行的非空白字符前插入内容

打开(open)

                        o:在光标所在行的下方新开一行并进行输入

                        O:在光标所在行的上方新开一行并进行输入

1.2命令行模式

如何进入命令模式:也是按esc键

复制:yy nyy(n:行数)

删除(剪切): dd ndd

粘贴:p

撤销:u

反撤:ctrl r

光标移动首行: gg

光标移动末行: G

光标移动行首:数字0或者shift 6

光标移动行尾:$ 或者shift 4

搜索:/或者?(搜索下一个用n)

调整代码格式:gg=G

1.3底行模式

如果想在底行输入命令:先按esc键,然后敲空格或者冒号。

指定第几行到第几行复制:5,10y

指定第几行到第几行删除: 5,10d

保存:w

退出:q

保存并退出:wq

强制:!

竖着分屏:vsp

横着分屏:split

取消分屏:on

查找:/str

取消高亮:noh

替换:s/str1/str2 光标所在行第一个str1替换成str2

s/str1/str2/g 光标所在行所有str1替换成str2

%s/str1/str2/g每一行中所有str1来替换成str2

n,$s/str1/str2/g替换第n行到最后一行中所有str1为str2

n,ms/str1/str2/g替换第n行到第m行中所有str1为str2

设置行号:set nu

取消:set nonu

2.程序语言设计

2.1机器语言

直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植

2.2汇编语言

把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 不能被计算机系统直接识别,要转化成机器语言后才能执行。

2.3高级语言

和特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。同样需要转换成机器代码后才能被计算机系统识别、执行。

3.gcc编译器

gcc(GNU CCompiler)是GNU推出的功能强大,性能优越的多平台编译器,gcc编译器能将C,C++语言源程序编译连接成可执行文件

3.1预处理

gcc -E hello.c -o hello.i 得到预处理文件,其中,-E 表示只进行预编译。

展开头文件、宏定义,删去注释

3.2编译

gcc -S hello.i -o hello.s 得到汇编文件,其中,-S 表示生成汇编文件。

编译就是把预处理完的文件,进行语法分析、词法分析、语义分析及优化后生成相应的汇编代码文件

3.3汇编

gcc -c hello.s -o hello.o, -c 表示只编译不链接。

将汇编代码文件转变成机器可以执行的指令文件。

3.4链接

gcc hello.o -o hello

将各种代码和数据片段收集并组合成为一个可执行文件的过程

标签:gcc,vi,str1,编译器,str2,hello,光标
From: https://blog.csdn.net/thh135/article/details/140468519

相关文章

  • Anroid 11 关于NotificationManager && NotificationManagerService
    frameworks/base/core/java/android/app/NotificationManager.java几个比较重要的函数://移除mContext.getUser发送的通知publicvoidcancel(@NullableStringtag,intid){cancelAsUser(tag,id,mContext.getUser());}//移除所有通知publicvoidcanc......
  • 大模型环境配置,包括多机多卡 conda env export > qwen_environment.yml同步环境
    多机一致环境:pipfreeze>requirements.txt装特定的torch,--extra-index-urlhttps://download.pytorch.org/whl/cu118pipinstalltorch==2.2.0+cu118--extra-index-urlhttps://download.pytorch.org/whl/cu118要将Conda/Mamba环境从一台机器同步到另一台机器,最好的......
  • Linux Vim教程(二):基本命令和操作
    目录1.进入和退出Vim1.1启动Vim1.2退出Vim2.模式切换2.1切换到插入模式2.2切换到普通模式2.3切换到命令模式2.4切换到可视模式3.移动光标4.编辑文本4.1插入和追加文本4.2删除文本4.3复制和粘贴文本4.4撤销和重做5.搜索和替换5.1搜索文本5.2......
  • winform 的 datagridview 动态刷新
    要实现在datagridview中动态的增删改查,目前能用的比较友好的方案似乎只有datatable,网上有人说用BindingList的,我替你们试过了,无法筛选,坑很多publicpartialclassForm1:Form{privateDataTabledataTable=newDataTable();privateBindingSour......
  • ViT(论文解读):An Image is worth 16*16 words
    研究问题虽然transformer已经成为NLP领域的标准(BERT、GPT3、T5),但是在CV领域很有限。在CV中,自注意力要么和CNN一起用,要么替换CNN中某个组件后保持整体结构不变。本文证明了对CNN的这种依赖并不必要,在图像分类中,纯VisionTransformer直接作用于一系列图像块也可以取得不错的成果......
  • FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“第11章 FFmpeg的桌面开发”介绍了如何在Windows环境对Qt结合FFmpeg实现桌面程序,那么Windows系统通过VisualStudio开发桌面程序也是很常见的,下面就介绍如何在VisualStudio的C++工程中集成FFmpeg库和SDL2库。首先按照《FFmpe......
  • ios CCUIDevice.m
    ////CCUIDevice.h//CCFC////#import<Foundation/Foundation.h>#import"CCConfig.h"#import<mach/mach.h>//判断设备是480*320还是960*640#defineIS_RETINA\([UIScreeninstancesRespondToSelector:@selector(currentMode)]?......
  • 我为什么要使用Vim编辑器?
    如果你真的了解Vim并且深度使用它,就会像真的懂了Markdown语法后离不开Markdown语法一样沉迷!Vim是一个高度可定制的文本编辑器,它之所以受到许多程序员的热爱,主要是以下几个原因:高效的键盘操作:Vim以其丰富的快捷键和命令著称,这些设计使得用户能够通过键盘完成几乎所有操......
  • 基于labview的气象监测系统
    一、引言气象对人类生活和社会发展至关重要,精准实时的气象数据意义重大。现有气象监测手段存在不足,本系统基于LabVIEW进行设计。二、系统设计概述(1)程序框架通过在后面板创建while循环和条件结构,以及在前面板设置相关控件,实现程序运行控制和数据输入。在while循环中嵌入For......
  • 基于labview的热电偶测温系统
    引言             温度监测系统在工业、医疗和环境领域的应用具有重要意义。本文详细介绍了基于LabVIEW的温度监测系统的设计与实现。该系统通过LabVIEW软件和相关硬件设备,实现了对温度的实时监测和数据展示功能。文章详细描述了该系统的程序设计原理,包......