Linux环境基础与开发工具使用

1. Linux编译器vim

1.1 vim的基本概念讲解

vim有很多种模式,我们初学者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。

命令/正常模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift+: 即可进入该模式。

 PS:不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

在末行模式下我们输入w就是保存,输入q就是退出,输入wq就是保存并退出,wq!就是强制保存并退出。

1.2 三模式之间的切换

我们一开始进入vim是命令模式,我们要切换成插入模式才可以编写代码。

以下就是三模式之间的切换的方式:

 1.3 vim正常模式常用命令

• 行间移动:

◦ h:向左移动一个字符 ;nh 向左移动n个字符。

◦ l:向右移动一个字符 ;nl 向右移动n个字符。

◦ j:向下移动一行 ;nj 向下移动n行。

◦ k:向上移动一行 ;nk 向上移动n行。

• 行内移动:

◦ 0:移动到行首。

◦ ^:移动到本行第一个非空白字符。

◦ $:移动到行尾。

• 单词移动:

◦ w:移动到下一个单词的开头。

◦ e:移动到当前或下一个单词的末尾。

• 文件内跳转:

◦ gg:移动到文件开头。

◦ G:移动到文件末尾。

◦ nG 或 :n :跳转到第n行 。

• 翻页移动:

◦ Ctrl + u:向上滚动半页。

◦ Ctrl + d:向下滚动半页。

◦ Ctrl + b:向上滚动一整页。

◦ Ctrl + f:向下滚动一整页。

• 删除:

◦ x:删除光标所在字符 ;#x(如6x )删除光标后#个字符。

◦ X:删除光标前一个字符 ;#X(如20X )删除光标前#个字符。

◦ dd:删除光标所在行 ;#dd(如3dd )从光标所在行开始删除#行。

◦ d$ 或 D:删除光标到行尾内容。

◦ dw:删除光标到单词末尾内容。

• 复制:

◦ yy:复制光标所在行 ;#yy(如6yy )复制光标所在行往下#行内容。

◦ y$:复制光标到行尾内容。

◦ yw:复制一个单词。

• 粘贴:

◦ p:若复制内容为行,粘贴到当前行下方;若小于一行,粘贴到光标右侧。

◦ P:若复制内容为行,粘贴到当前行上方;若小于一行,粘贴到光标左侧。

◦ #p(如3p ):粘贴#次。

• 替换:

◦ r:替换光标所在字符,输入新字符即可替换 ;#r(如2r )替换#个字符。

◦ R:进入连续替换模式,直到按Esc 键结束。

• 更改:

◦ cw:更改光标所在处的字到字尾处 ,删除单词并进入插入模式 ;#cw(如2cw )更改#个单词。

◦ c$:更改从光标位置到行尾的内容,删除并进入插入模式。

• 撤销与恢复:

◦ u:撤销上一步操作 ;#u(如5u )撤销最近#次操作。

◦ Ctrl + r:恢复撤销的操作。

• 重复操作:

◦ .:重复上一次操作 ;#.(如10. )重复上一次操作#次。

1.4 vim末行模式常用命令

• 跳转到指定行:
:行号(如 :10,光标跳转到第10行)。

• 跳转到文件开头:
:1(快速回到首行)。

• 跳转到文件末尾:
:$(光标移至最后一行)。

• 查找:

◦ 正向查找:/关键字(如 /hello,从当前位置向后查找,按 n 下一个,N 上一个)。

◦ 反向查找:?关键字(如 ?world,从当前位置向前查找,按 n 下一个,N 上一个)。

• 替换:

◦ 行内替换:范围s/旧内容/新内容/g(如 :1,20s/abc/def/g,将1-20行的“abc”替换为“def”)。

◦ 全局替换(带确认)::%s/旧内容/新内容/gc(% 表示全文,c 逐个确认替换)。

• 保存文件:

◦ :w(保存当前修改)。

◦ :w 文件名(另存为新文件)。

• 退出VIM:

◦ :q(未修改或已保存时退出,否则报错)。

◦ :q!(强制退出,不保存修改)。

◦ :wq 或 :x(保存并退出)。

• 显示/隐藏行号:
:set nu(显示); :set nonu(隐藏)。

• 开启/关闭语法高亮:
:syntax on(开启); :syntax off(关闭)。

• 高亮/取消搜索结果:
:set hlsearch(高亮); :set nohlsearch(取消)。

执行外部命令

:!命令(如 :!ls,不退出VIM执行Shell命令)。

2. g++与gcc

g++与gcc分别就是在Linux编译器里面的C++与C语言。

下面就是我们使用C++写的一个代码,那么我们在编译的时候就必须使用g++(我们写的纯C语言的代码也可以用g++)。

 我们通过以下的方式就可以生成一份可执行文件(默认叫做a.out)。

 3. 动态库与静态库

 我们要知道代码对于计算机来说并不是像我们看到的那样的,我们写的代码会经历预处理(进行宏替换) ->编译(生成汇编) ->汇编(生成机器可识别代码)-> 链接(生成可执行文件或库文件)。

而动态库与静态库则是在链接阶段被嵌入代码中。

那么动态库与静态库又有什么差别呢?我个人认为他们就好像自定义函数与内联函数。

编译器记录下动态库里面的一些信息,然后把源代码里面包含这些信息的部分与动态库进行连接,从而实现调用。

静态库则是在链接阶段把自己的代码拷贝到原代码中。

4. 自动化构建工具makefile

makefile写好之后,我们只需要一个输入make和make clear就可以实现可执行文件的生成与销毁。

以下就是makefile里面要写的内容:

然后我们就可以生成可执行文件mytestvim。 

 最后我们可以通过make clean来对mytestvim进行销毁:

 像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编译。 但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行的。

PS:像clean这样的伪目标我们可以设置多个。

5. git命令

首先我们要通过yum install git来安装相关的git命令。

然后我们需要输入git clone 【HTTPS】

点击这个位置就可以进行查看HTTPS: 

这样我们就把代码仓库复制到了本地,接着我们需要进入到自己的代码仓库里面并把需要上传的代码复制到仓库,然后就git add [文件名]当然我们也可以git add . 就是吧使用没有添加的全部添加进去。

如果出现这些字我们就需要复制红线内部的内容然后输入自己的邮箱和名字。 

然后输入git commit -m "要取的名字"。

最后输入git push,接着输入自己账号的手机号和密码,接着我们如果看到以下的内容就代表成功了。

特别要注意一点,git是无法全局查找的,所以是一定要把代码复制进本地里面的。

就是要放进下图的这个路径里面。

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

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

相关文章

《Python星球日记》 第36天:线性代数基础

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、标量、…

使用VMware Workstation pro 17.5.1在Windows上安装Ubuntu 24.04.2的 详细步骤

一、准备工作 1. 下载Ubuntu 24.04.2 ISO镜像 官方下载地址:Ubuntu 24.04.2 (Noble Numbat) 选择 ubuntu-24.04.2-desktop-amd64.iso(桌面版)或 ubuntu-24.04.2-live-server-amd64.iso(服务器版)。 2. 确认系统要求…

ios systeam introduction

Here is an in-depth look at Apple’s iOS, from its inception to its latest major release, covering architecture, core components, security, app lifecycle, development tools, and the headline features of iOS 18. iOS began life as “iPhone OS,” unveiled alo…

优化04-选择率和直方图

选择率 在Oracle数据库中,选择率(Selectivity) 是优化器(CBO,基于成本的优化器)用来评估SQL语句中某个条件(如WHERE子句)过滤数据的比例的关键指标。它直接影响优化器选择执行计划的…

python实战:通过输入文字匹配在docx文档中的具体位置

在指定的docx文档中,输入一串文字来查看该文字在文档中的具体位置;方便后续处理(如替换文字,高亮显示等等操作) from docx import Documentdef find_text_in_docx(file_path, search_text):# 读取docx文件doc = Document(file_path)# 遍历段落,查找匹配的文本for i

Flutter——数据库Drift开发详细教程(二)

目录 1.核心API1.1查询数据列表分页1.2 列表排序1.3推迟获取与观察 1.核心API 1.1查询数据列表分页 限制返回的结果数量limit&#xff0c;从某一位置开始查询offset ///limit10, offset10 Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {return …

mux-vlan基础配置

1.top配置 2.各个交换机设置 sw3交换机的 sysname swb # undo info-center enable # vlan batch 10 20 30 100 # vlan 10description financial vlan vlan 20description marketing vlan vlan 30description client vlan vlan 100description principal vlanmux-vlansubordi…

SAM详解2(初级应用)

SAM SAM5. 初级应用5.1 静态本质不同子串个数5.2 字符串匹配5.3 关于子串出现次数5.4 动态添加时本质不同子串个数SAM 5. 初级应用 记 l o n g e s t ( x ) longest(x) longest(x) 为点 x x x 代表子串集合中最长串的长度。记 s h o r t e s t ( x ) shortest(x) shortest(…

【日撸 Java 三百行】Day 4(条件语句实战——闰年问题)

目录 Day 4&#xff1a;条件语句实战——闰年问题 一、基础知识及代码思路 二、代码及测试 小结 Day 4&#xff1a;条件语句实战——闰年问题 Task&#xff1a; if 语句的嵌套.基本规律自行百度.布尔类型. 一、基础知识及代码思路 1. 什么是闰年&#xff1f; 闰年是历法中…

MySQL 中 EXISTS (SELECT 1 FROM ...) 的用法详解

EXISTS (SELECT 1 FROM ...) 是 MySQL 中用于存在性检查的核心语法&#xff0c;其核心逻辑是判断子查询是否返回至少一行数据。以下从作用原理、使用场景、性能优化等方面展开解析&#xff0c;并结合具体示例说明。 1. 基本语法与作用原理 语法结构&#xff1a; SELECT 列名 F…

阿里云服务器防御是怎么做出来的?服务器攻击方式有几种?

阿里云服务器防御是怎么做出来的?服务器攻击方式有几种&#xff1f; 服务器防御是一个多层次、多维度的体系&#xff0c;通常包括以下核心措施&#xff1a; 1. 网络层防御 防火墙&#xff08;Firewall&#xff09;&#xff1a;过滤非法流量&#xff0c;仅允许授权通信&#xf…

ElasticSearch深入解析(八):索引设置、索引别名、索引模板

一、索引的动态设置、静态设置 索引设置包含两部分核心内容&#xff1a; 静态设置(static index settings)&#xff0c;只允许在创建索引时或者针对已关闭的索引进行设置。指动态设置(dynamic index settings)&#xff0c;可以借助更新设置(update settings)的方式进行动态更新…

Prometheus实战教程:k8s平台手动部署Grafana

以下是一个可用于生产环境的 Kubernetes 部署 Grafana 的 YAML 文件。该配置包括 Deployment、Service、ConfigMap 和 PersistentVolumeClaim&#xff0c;确保 Grafana 的高可用性和数据持久化。 Grafana 生产部署 YAML 文件 ☆实操示例 cat grafana-deployment.yaml 登录后复制…

VSTO外接程序与VBA的联动尝试

文章目录 前言一、第一坑&#xff1a;安装offic2007后excel加载项找不到了二、示例1 通过Ribbon XML自定义Excel主菜单并添加新项二、示例1 总结三、示例2 创建VSTO外接程序三、示例2 总结四、示例 3 C# VSTO外接程序示例四、示例 3 总结五、实现C# 的VSTO调用VBA函数(xlam)六、…

DeepSeek驱动的金市情绪量化:NLP解析贸易政策文本的情绪传导路径

【AI观察】政策信号与市场情绪的量化关联 基于自然语言处理技术对全球财经文本的情绪分析显示&#xff0c;4月30日亚盘时段现货黄金价格波动率较前日下降12.3%&#xff0c;与技术面修正指标呈现强相关性。特政府最新关税政策调整引发市场风险偏好指数&#xff08;RPI&#xff…

期末代码Python

以下是 学生信息管理系统 的简化版代码示例&#xff08;控制台版本&#xff0c;使用文件存储数据&#xff09;&#xff0c;包含核心功能&#xff1a; 1. 定义学生类 class Student: def __init__(self, sid, name, score): self.sid sid # 学号 self.name name # 姓名 self.s…

zotero pdf中英翻译插件使用

最近发现一个pdf中英翻译的神器zotero-pdf2zh&#xff0c;按照官方安装教程走一遍的时候&#xff0c;发现一些流程不清楚的问题&#xff0c; 此文就是整理一些安装需要的文件以及遇到的问题&#xff1a; 相关文件下载地址 Zotero 是一款免费的、开源的文献管理工具&#xff0…

本地MySQL连接hive

1、首先需要修改MySQL的配置&#xff0c;允许远程连接&#xff1a; # 在本地MySQL服务器上执行 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf找到 bind-address 行&#xff0c;将其修改为&#xff1a; bind-address 0.0.0.02、在本地MySQL中创建用户并授权&#xff08;注意…

Nginx核心功能2

一&#xff1a;正向代理 正向代理&#xff08;Forward Proxy)是一种位于客户端和原始服务器之间的代理服务器&#xff0c;其主要作用是将客户端的请求转发给目标服务器&#xff0c;并将响应返回给客户端Nginx的正向代理充当客户端的“中间人”&#xff0c;代表用户访问外部资源…

高定电视,一场关于生活方式的觉醒

需要有自己的工作室&#xff0c;雇用3个以上专职模特&#xff0c;至少15名全职员工和20名技术工匠‌&#xff1b; 每年都要参加巴黎高级时装周&#xff0c;展示至少50款原创设计&#xff1b; 使用的面料必须高质量、昂贵且不同寻常&#xff0c;设计上注重细节和个性&#x…