Linux:基本开发工具

一:编辑器vim

1.1vim的基本概念

vim其实有多重模式,这里我们主要了解vim的三种模式,分别是命令模式(command mode),插入模式(Insert mode)和底行模式(lst line mode)

正常/普通/命令模式(Normal mode)                                                                                         

 控制光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式。从命令模式到插入模式只需要按 i  即可,从命令模式到底行模式只需按shift + ;即冒号:即可

插入模式(Insert mode)         

只有在插入模式下我们才可以进行文字的输入,我们想从插入模式回到命令模式只需要按Esc键。该模式是我们后面用的最频繁的编辑模式                                                                                         

底行模式(last line mode)

通过底行模式,我们可以进行文章的保存和退出,也可以进行文件的替换,找字符串,列出行号等操作。从底行模式到命令模式只需按Esc键

微提醒:即从插入模式和底行模式进入到命令行模式只需按Esc键即可

1.2  vim的基本操作

进入vim

在系统提示符符号后面输入vim 及文件名称后我们就进入vim全屏幕编辑画面

 如上图所示:linux1是我们创建是文件的名称,通过命令行vim linux1我们就进入了vim的编辑画面,如下图。但是我们一开始进入到vim,vim处于命令模式,即不能进行任何操作,当我们按i键时就会进入插入模式就可以输入文字,插入模式如下图所示,画面最下面会出现INSERT的文字

[命令模式]  进入到  [插入模式]

  1. 输入i
  2. 输入a
  3. 输入o

[插入模式]  进入到  [命令模式] 

按Esc

 [命令模式]  进入到  [插入模式]

shift + ; 即冒号:

退出vim即保存文件

在命令模式下时按一下shift + ;进入底行模式

  1. 输入w(保存当前文件)
  2. 输入wq(保存当前文件并退出vim)
  3. 输入q!(不保存文件并退出vim)

1.3vim命令模式命令集

  • 切换至插入模式
  1. 按【i】键切换进入插入模式,按【i】进入插入模式后是从光标当前位置开始输入文字
  2. 按【a】进入插入模式后是从当前光标所在位置的下一个位置开始输入文字
  3. 按【o】进入插入模式后是插入新的一行,从行首开始输入文字
  • 从插入模式切换到命令模式
  1. 按【Esc】键
  • 移动光标
  1. vim可以直接用键盘上的光标来上下移动,但正规的vim是用小写英语字母【h】【j】【k】【l】,分别来控制光标的左、下、上、右的移动
  2. 按【G】:移动到文章的最后
  3. 按【$】:移动光标到所在行的行首
  4. 按【^】:移动光标到所在行的行尾
  5. 按【w】:光标跳到下个字的开头
  6. 按【e】:光标跳到下个字的结尾
  7. 按【b】:光标回到上个字的开头

 

        如上两张图:

        我们可以看到第一张图中,本来光标所在位置为d,当我们按一下【b】键时,光标就会跳回到e的位置,即上一个字的开头处

        8.按【nl】:光标移动到改行的第n个位置

     

        如上两张图:光标本来在第5行字符p的前面,当我按5l的时候,光标就会移动到字符f的位置

        9.按【gg】:光标移动到文本的开头

     

      如上两张图,光标本来在第5行的字符f处,按【gg】后光标就移动到第一行的第一个字符处

        10.按【shift + G】:

        

        如上两张图,光标本来在文本的开始处,按【shift + G】后,光标就移动到文本的末尾了

        11.按【Ctrl】+ 【b】:屏幕向后移动一页

        12.按【Ctrl】+ 【f】:屏幕向前移动一页

        13.按【Ctrl】+ 【u】:屏幕向后移动半页

        14.按【Ctrl】+ 【d】:屏幕向前移动半页

  • 删除文字

      1.【x】:删除光标所在位置的字符

        

如上面两张图所示:光标原本在第9行的p字符的位置,按下【x】键p字符就已经被删除,人就称为首字符

    2.【nx】:删除包括自己在内的往后n个字符,如【6x】表示删除包括光标所在位置往后的6个字符

如上面两张图:光标原本在第10行的字符h的位置,按4x后happ都被删除

3.【X】:大写的X,删除光标所在位置的前面一个字符

如上面两张图所示:按下【X】键,光标前面的字符v被删除了

4.【nX】:删除光标所在位置前面的n个字符,如【20X】表示删除光标所在位置的前20个字符

如上面两张图所示:按下【5X】键,光标前面的字符串appye被删除了

5.【dd】:删除光标所在行

如上面两张图所示:按下【dd】键,光标所在行第8行被删除了

6.【ndd】:从光标所在行开始删除n行

  • 复制

        1.【yw】:将光标所在之处到字尾的字符复制到缓冲器中

        2.【nyw】:复制n个字符到缓冲区

        3.【yy】:复制光标所在行到缓冲区

       

        如上面两张图所示:光标位于第5行,当我们按一下【yy】键就将第5行的内容复制了,再按一下【p】键就将所复制的内容拷贝至第5行,那么原来的第5行就会往下移动1行,光标也因此向下移动一行

        4.【nyy】:拷贝从光标所在行往下数n行文字

        

        如上面两张图所示:光标原本在第7行,当我按下【5yy】时就会将包括第7行在内往下数的5行复制,即第7、8、9、10、11行的内容复制下来了,再按一下【p】键就会将复制的5行内容拷贝下来

        5.【p】:将缓冲区内的字符贴到光标所在的位置

  • 替换

        1.【r】:替换光标所在处的字符

        

如上面两张图所示:原本光标所在位置的字符为p,当我们按下【r】键时,然后再按数字1,那么光标所在位置的字符就被改成了数字1 

        2.【R】:替换光标所到之处的字符,直到按下【Esc】键位止。即一直替换光标所在位置的字符

如上两张图所示:当按下【R】键时,然后我们不停输入按键盘上的任意键,那么显示屏上的字符就会发生相应的改变,直到我们按下【Esc】键为止

        微提醒:其实当我们使用【r】或者【R】进行文本的替换的时候其实vim已经处于替换模式下了,此时的vim的左下方就会出现【REPLACE】的字符

  • 撤销上一次的操作

        1.【u】:如果你误执行了一个命令,可以按下【u】键,回到上一个操作。按多次【u】可以执行多次撤销

        

        如上两张图所示:本来在上一个操作中我们已经一口气将第9行改成了1234eedfuu89y\n");但是我们现在后悔了想让它变成之前的样子,这时候我们只需要按下【u】键就可以将第9行又变成之前的样子

        2.【Ctrl】+ 【r】:撤销的恢复

如上两张图所示:现在我们又后悔了想将第9行又变回之前的1234eedfuu89y\n");,这时候我们只需按下【Ctrl】+ 【r】键就可以达成这个效果

微提醒:如果我们按下【u】键后悔了想回到恢复到上一个操作的内容只需要按【Ctrl】+【r】键,按下【Ctrl】+【r】键我们又后悔了又想恢复上一个操作的内容只需要按【u】键。总额言之就是按【u】键后悔了就按【Ctrl】+【r】键,按【Ctrl】+【r】键后悔了就按【u】键。

  • 更改

        1.【cw】:更改光标所在处的字到字尾处

        2.【cnw】:更改n个字。例如【c3w】表示更改3个字

  • 跳转至指定的行 

        1.【Ctrl】+【g】:列出光标所在行的行号

        2.【nG】:表示移动光标到文本的第n行行首。例如【15G】表示移动光标到文本的第15行行首

如上两张图所示:光标原本位于第1行,当我按下11+shift+g即11+G的时候光标就会跳到11行的行首

1.4vim底行模式命令集

在使用底行模式之前,记得先按【Esc】键确保你已经处于命令模式,再按冒号:即可切换到底行模式

  • 列出行号

        输入【set nu】后,文本中每一行的前面都会列出行号

        

如上三张图所示:原本文本是没有行号的,当我们切换至底行模式并输入set nu命令后文本的每一行的行首都出现了对应的行号

  • 跳到文本的某一行

      

如上三张图所示:原本光标位于文本的第1行,当我们切换到底行模式并输入数字9后,光标就会跳到第9行的行首        

  • 保存文本

        按【w】键就可以将文本保存起来

  • 退出vim

        1.按【q】键就会退出vim,如果无法离开vim,可以在【q】后面跟一个【!】表示强制退出vim,即【q!】

        2.按【wq】表示保存文本并退出vim,一般推荐这种方式退出vim

1.5 vim的操作总结

  • 三种模式

        1.命令模式

        2.插入模式

        3.底行模式

  • vim的操作

        打开,关闭,查看,查询,插入,删除,替换,撤销,复制,粘粘等操作

2.  编辑器gcc/g++

2.1 背景知识

  1.  预处理(进行宏替换,去除注释,条件编译,头文件展开等)
  2. 编译(生成汇编)
  3. 汇编(生成机器可识别代码)
  4. 链接(生成可执行文件或者库文件)       

2.2 gcc编译选项

格式:

gcc [选项] 要编译的文件 [选项] [目标文件]

2.2.1预处理(进行宏替换)
  • 预处理功能主要包括宏定义,文件包含,条件编译,去注释等
  • 预处理指令是以#开头的代码行
  • 实例:gcc   -E    hello.c   -o   hello.i
  • 选项-E的作用是让gcc在编译结束后停止进行编译过程
  • 选项-o是指目标文件,“.i”文件为已经预处理的C原始程序
2.2.2编译(生成汇编)
  • 在这个阶段中,gcc首先要检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言
  • 用户可以使用  “-S”  选项进行查看,该选项只进行编译二不进行汇编,生成汇编代码
  • 实例:gcc   -S   hello.i   -o   hello.s
2.2.3汇编(生成机器可识别代码)
  • 汇编阶段是把编译阶段生成的  “.s”  文件转化为目标文件
  • 用户可以使用选项  “-c”  进行查看,该选项将汇编代码转化为  “.o”  的二进制目标代码
  • 实例: gcc   -c   hello.s   -o   hello.o 
2.2.4链接(生成可执行文件或者库文件)
  • 在成功编译之后,就进入了链接阶段
  • 实例:gcc   hello.o   -o   hello 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913152.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第14张 GROUP BY 分组

一、分组功能介绍 使用group by关键字通过某个字段进行分组,对分完组的数据分别 “SELECT 聚合函数”查询结果。 1.1 语法 SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column]; 明确&#…

TVM计算图分割--BYOC框架

文章目录 BYOC架构算子标注单算子标注复合算子标注Cost-based PartitionCodegenCodegen for C代码生成流程概览代码生成工程实现实现CodegenC实现CSourceCodegenCodegen for JSON实现JsonCodegenRuntimeJSONRuntime参考随着后端设备数量激增,为达到较高的效果在这些设备上,对…

计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

qt QShortcut详解

1、概述 QShortcut是Qt框架中的一个类,它提供了一种创建键盘快捷键的方式。通过QShortcut,开发者可以将特定的键盘组合(如CtrlC、AltF4等)与应用程序中的动作(如复制、关闭窗口等)关联起来。当用户在应用程…

C++OJ_二叉树的层序遍历

✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C_OJ 小伞的主页:xiaosan_blog 二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣(LeetCode&#xff0…

The Rank-then-Encipher Approach

原始观点 Format-Preserving Encryption 4 The Rank-then-Encipher Approach 引用1 Hybrid diffusion-based visual image encryption for secure cloud storage 2.2 Sum-preserving encryption Bellare introduced the concept of format-preserving encryption (FPE)…

DolphinDB 与南方科技大学联合授课啦!

11月1日,南方科技大学商学院和 DolphinDB 联合举办了高校课程讲座。讲座由南方科技大学商学院高级研究学者冯鹏举主持,DolphinDB 创始人兼 CEO 周小华博士、某百亿私募数据平台架构师潜蛟老师进行精彩演讲。 Part 1 : 大数据时代下数据库架构革新与生态…

IDM扩展添加到Edge浏览器

IDM扩展添加到Edge浏览器 一般情况下,当安装IDM软件后,该软件将会自动将IDM Integration Module浏览器扩展安装到Edge浏览器上,但在某些情况下,需要我们手动安装,以下为手动安装步骤 手动安装IDM扩展到Edge浏览器 打…

403 Request Entity Too Lager(请求体太大啦)

昨天收到 QA 的生产报障,说是测试环境的附件上传功能报了 403 的错误,错误信息:403 Request Entity Too Lager。我尝试复现问题,发现传个几兆的文件都费劲啊,一传一个失败。不用说,项目用到 ng 代理&#x…

HARCT 2025 新增分论坛2:机器人系统智能控制

会议名称:机电液一体化与先进机器人控制技术国际会议 会议简称:HARCT 2025 大会时间:2025年1月3日-6日 大会地点:中国桂林 主办单位:桂林航天工业学院、广西大学、桂林电子科技大学、桂林理工大学 协办单位&#…

网络世界中的侦察兵----ICMP

前言 学习了IP协议后,都知道IP协议本身是不提供可靠性保障的,那么数据包在这么复杂的互联网环境中传输,总会遇到问题,如果遇到问题后,被丢弃、无回应,可能作为工程师的我们来说都不知道发生了什么事&#…

从0开始学习机器学习--Day21--算法的评估标准

准确率和召回率(precision and recall) 在上一章我们提到了在每次运行算法时通过返回一个实数值来判断算法的好坏,但是我们该如何构建这个实数的计算公式呢,毕竟这关乎于我们对算法的判断,不能过于夸大或贬低。有一个典型的会被影响的很大例…

集群架构中Lua脚本的限制以及出现的报错

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…

快速傅里叶变换(FFT)基础(附python实现)

对于非专业人士,傅里叶变换一直是一个神秘的武器,它可以分析出不同频域的信息,从时域转换到频域,揭示了信号的频率成分,对于数字信号处理(DSP)、图像、语音等数据来说,傅里叶变换是最…

python数据结构操作与可视化的应用

Python具有丰富的数据结构操作和可视化库,可以进行各种数据结构的创建、编辑和分析,并将结果可视化。以下是几个常见的Python数据结构操作和可视化的应用示例: 1. 列表(List)操作和可视化: - 创建列表&a…

DataFrame

目录 一、创建DataFrame二、Sql语法三、DSL语法四、RDD与DataFrame互相转换 一、创建DataFrame 在SparkSql中SparkSession是创建DataFrame和执行Sql的入口,创建DataFrame有三种方式: 通过Spark的数据源进行创建 从一个存在的RDD进行转换 从Hive Tabl…

C# 实现对指定句柄的窗口进行键盘输入的实现

在C#中实现对指定句柄的窗口进行键盘操作,可以通过多种方式来实现。以下是一篇详细的指南,介绍如何在C#中实现这一功能。 1. 使用Windows API函数 在C#中,我们可以通过P/Invoke调用Windows API来实现对指定窗口的键盘操作。以下是一些关键的…

GitHub个人主页美化

效果展示 展示为静态效果,动态效果请查看我的GitHub页面 创建GitHub仓库 创建与GitHub用户名相同的仓库,当仓库名与用户名相同时,此仓库会被视作特殊仓库,其README.md(自述文件)会展示在GitHub个人主页…

2024-09-01 - 分布式集群网关 - LoadBalancer - 阿里篇 - 流雨声

摘要 通过公有云部署创建类似 MateLB 的应用负载,可以更加方便的对系统资源进行合理规划。 应用实践 CCM提供Kubernetes与阿里云基础产品(例如CLB、VPC等)对接的能力,支持在同一个CLB后端挂载集群内节点和集群外服务器&#xf…

【销帮帮-注册_登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨…