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 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析】如何构建指标体系?

有哪些指标体系搭建模型?五个步骤教你从0开始搭建指标体系 一、企业指标体系搭建存在什么问题 许多企业在搭建数据指标体系时遇到了诸多难题,如问题定位不准确、数据采集不完整、目标不一致、报表无序、指标覆盖不全面以及报表价值未充分利用等。 1、…

ANDROIDWORLD: A Dynamic Benchmarking Environment for Autonomous Agents论文学习

这个任务是基于androidenv的。这个环境之前学过,是一个用来进行强化学习的线上环境。而这篇文章的工作就是要给一些任务加上中间的奖励信号。这种训练环境的优点就是动态,与静态的数据集(比如说我自己的工作)不同,因此…

【Android】轮播图——Banner

引言 Banner轮播图是一种在网页和移动应用界面设计中常见的元素,主要用于在一个固定的区域内自动或手动切换一系列图片,以展示不同的内容或信息。这个控件在软件当中经常看到,商品促销、热门歌单、头像新闻等等。它不同于ViewPgaer在于无需手…

容器化技术入门:Docker详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 容器化技术入门:Docker详解 容器化技术入门:Docker详解 容器化技术入门:Docker详解 引言 Doc…

AssertionError: weight model.layers.0.self_attn.q_proj.weight does not exist

通义千问2.5-7B-Instruct-AWQ量化,但在npu上运行报上面错误,奇怪?: Exception:weight model.layers.0.self_attn.q_proj.weight does not exist AssertionError: weight model.layers.0.self_attn.q_proj.weight does not exist https://…

【SSL-RL】自监督强化学习:随机潜在演员评论家 (SLAC)算法

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅…

怎么启动python脚本文件

创建一个简单的python入门代码,以便示范。 存储文件并复制该python文件的存储路径。 使用cd 命令切换工作目录到python文件所在的目录。 输入变量环境中的python路径和python文件的名字。 回车执行后,可完成命令行的python文件运行。

DDei在线设计器V1.2.42版发布

V1.2.42版 新特性: 1.快捷编辑框可以映射到主控件的多个属性上,从而实现快速编辑。 2.跟随图形的支持范围增加,从仅支持线控件到支持所有控件 2.新增控件双击回调函数EVENT_CONTROL_DBL_CLICK,可以用于覆盖默认的快速编辑逻辑…

信息安全工程师(78)网络安全应急响应技术与常见工具

前言 网络安全应急响应是指为应对网络安全事件,相关人员或组织机构对网络安全事件进行监测、预警、分析、响应和恢复等工作。 一、网络安全应急响应技术 网络安全应急响应组织 构成:网络安全应急响应组织主要由应急领导组和应急技术支撑组构成。领导组负…

网络安全之SQL初步注入

一.字符型 平台使用pikachu $name$_GET[name]; ​ $query"select id,email from member where username$name"; 用户输入的数据会被替换到SQL语句中的$name位置 查询1的时候,会展示username1的用户数据,可以测试是否有注入点(闭…

Gradle命令编译Android Studio工程项目并签名

文章目录 gradlew命令gradlew编译debug apkgradlew编译release apkapksigner签名apkgradlew注意事项 gradlew命令 gradlew 是一个脚本文件,它允许你在没有全局安装 Gradle 的情况下运行 Gradle 构建。这个脚本在多平台上可用,对于 Windows 系统来说是 g…

B2B订货系统功能设计与代码开发(PHP + MySQL)

在B2B(Business to Business)电子商务中,企业之间的商品订购、交易和供应链管理是核心功能。一个高效的B2B订货系统可以帮助企业管理库存、订单、采购等业务流程。本文将介绍一个基于PHP与MySQL技术栈的B2B订货系统的功能设计与开发流程。 一…

增删改查基础项目总结

上篇中主要负责后端部分完成了一个简单的学习辅助系统部分界面,主要针对增删改查进行了练习,过程中遇到了一些细节上的问题以及当时做的时候去查阅的一些之前没有太注意到的额外知识,所以还需要进行进一步梳理,像登录校验的方法以…

【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作

目录 一、安装Zookeeper 二、配置Zookeeper集群 三、Zookeeper服务的启动与关闭 四、Zookeeper的shell操作 前情提要:延续上篇【Hadoop和Hbase集群配置】继续配置Zookeeper,开启三台虚拟机Hadoop1、Hadoop2、Hadoop3,进入终端&#xff0c…

智能社区服务小程序+ssm

智能社区服务小程序 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足,创建了一个计算机管理智能社区服务小程序的方案。文…

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下,通过对vector的模拟实现,我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数,然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下,因为c库里面也有…

前端学习八股资料CSS(一)

🤔🤔宝子们,好久不见啊!今日继续分享前端八股笔记,好多友友们觉得笔记对于自己学习复习或面试复习或平时加强知识非常有用,收到了大家的好评,谢谢大家的喜欢,我会坚持继续更新的&…

【进阶】Stable Diffusion 插件 Controlnet 安装使用教程(图像精准控制)

Stable Diffusion WebUI 的绘画插件 Controlnet 最近更新了 V1.1 版本,发布了 14 个优化模型,并新增了多个预处理器,让它的功能比之前更加好用了,最近几天又连续更新了 3 个新 Reference 预处理器,可以直接根据图像生产…

小程序源码-模版 100多套小程序(附源码)

一、搭建开发环境 搭建环境可以从这里开始: 微信小程序从零开始开发步骤(一)搭建开发环境 - 简书 二、程序示例 1、AppleMusic https://download.csdn.net/download/m0_54925305/89977187 2、仿B站首页 https://download.csdn.net/downlo…

【Python-AI篇】K近邻算法(KNN)

0. 前置----机器学习流程 获取数据集数据基本处理特征工程机器学习模型评估在线服务 1. KNN算法概念 如果一个样本在特征空间中的K个最相似(即特征空间中最邻近)的样本中大多数属于某一个类别,则该样本也属于这一个类别 1.1 KNN算法流程总…