Linux开发工具【中】
目录
一、vim
1.1 插入模式
1.2 底行模式
1)set nu
2)set nonu
3) /XXX + n
4)!command
5)vs other
1.3 补充
1) 批量化操作
2)批量化替换 :
3)快速定位:
4)!
5)查询Linux有几种模式:
1.4 扩展 - vim配置
二、编译器gcc/g++
2.1 gcc 编译选项
2.2 预处理
2.3 编译
2.4 汇编
2.5 链接
Linux开发工具【上】-CSDN博客
学会在 vim下写代码 , 很重要 , 因为以后我们避免不了会需要改一些配置文件 , 或者编写一些基础文件 。熟悉了就不会觉得很难了 , 一句话 , 菜就多练 。
一、vim
1.1 插入模式
【插入模式】 -> 【命令模式】
按 Esc 键
1.2 底行模式
1)set nu
set nu : 调出行号
2)set nonu
set nonu : 退出行号
3) /XXX + n
/XXX: 搜索具有 XXX 字符的命令 , n (next ) 表示下一个
4)!command
!command : 在不退出命令行模式下,执行命令
5)vs other
vs other : 文件级别分屏
如果你分屏的文件并不存在,系统会自动生成,最后不要忘记保存并且退出!
那如何区别是那一个文件呢?
在整个终端重 , 只有一个光标,可以看一下,光标在哪里 , 就在哪一个文件。
如何进行光标切换:
在【命令模式】下:Ctrl + ww
1.3 补充
1) 批量化操作
这里我借 批量化注释和 批量化去注释为引子 。
ctrl + v --> hjkl --> shift + i ---> // ---> ESc
ctrl + v ---> hjkl ---> d
这里我们 ctrl + v : 进入的是视图模式
2)批量化替换 :
在底行模式下:
%s /print / printf / g
1)g : 表示全部有关于print 的替换 , 如果没有 , 仅仅替换每行的首个print
2) 把后者的 printf 替换给者 printf
3)快速定位:
vim xxxx(文件名字) + n (行号)
一般用于编译的时候,代码报错,并且告诉你具体的错误是在某行的范围,使用这个指令便于快速定位 。
4)!
!g : 快速定位历史命令以 g 为开头的命令
! 后面接历史命令的起始字母 , 能快速执行历史命令。
5)查询Linux有几种模式:
底行模式下查询:
help vim-modes
1.4 扩展 - vim配置
其实vim 还可以配置一下缩进,高亮等(见一见,但是不建议常用)。
vim 配置的原理:
1)首先先过渡一下,以后你在编写命令的时候,不要在root 账号下编写了,需要在 普通用户下编写:
adduser XXX //添加用户
passwd XXX //为新添加的用户设置密码,密码不回显
2)创建配置文件 ( .vimrc) ---> 如果没有
那么随后我们就可以在我们的这一个配置文件进行配置!
3)配置
touch test.c //创建一个文件vim test.c //编写基础代码,此时是没有行号的touch .vimrc //ls -al 时候,如果没有该文件则创建,有则不需要vim .vimrc //在配置文件下配置 ,例如set nu(设置行号)vim test.c //此时再打开test.c 已经是有行号的了
打开 test.c
1. 我们每一个普通用户 , 在自己的家目录里做一些配置项 , 对其他用户是不奏效的 , 因为在Linux 多用户下 , 文件之间是隔离的!!!
2 . 其实在系统中也有公共的 vim 配置文件 , 对所有文件都起效:
/etc/vimrc
但是 , 你别动人家root 里面的配置项 , 别动!!!别动!!!别动!!!你管好自己普通用户下的配置文件就好了 , root 不用你操心 。
3. 但是,我不知道有什么配置项怎么办?
1)大语言模型走起 : deepseek 、 文心一言 、......
2)或者还可以去 其他地方里直接找 ....(脚本)
" 关闭 vi 兼容模式(必须放在配置最开头)
set nocompatible" 显示行号
set number" 高亮当前行
set cursorline" 语法高亮
syntax enable" 自动缩进
set autoindent
set smartindent" Tab 转换为 4 个空格
set tabstop=4
set shiftwidth=4
set expandtab" 显示输入命令
set showcmd" 实时搜索高亮
set incsearch" 搜索忽略大小写(输入大写时自动关闭)
set ignorecase
set smartcase" 启用鼠标支持(normal/visual/insert 模式)
set mouse=a" 显示状态栏(0=不显示,1=多窗口时显示,2=总是显示)
set laststatus=2" 显示标尺(右下角行列号)
set ruler" 折行显示(不自动换行)
set nowrap" 代码折叠(manual-手动,indent-缩进,syntax-语法)
set foldmethod=indent" 打开文件时默认不折叠
set nofoldenable" 滚动时保留上下边距
set scrolloff=5" 显示匹配的括号
set showmatch
这里我们只要知道有这么个东西,但是不建议日常码字的时候在配置了的 vim 下编写 。
二、编译器gcc/g++
我们知道,一个源文件生成可执行文件 会经过
1) 预处理(进行宏替换 / 去编译 / 条件编译 / 头文件展开等 )
2) 编译(生成汇编)
3) 汇编(生成机器可识别代码)
4) 链接 (生成可执行文件或库文件)
2.1 gcc 编译选项
格式: gcc [选项] 要编译的文件 [选项] 目标文件
2.2 预处理
头文件的展开,就相当于一个拷贝的过程 , 是递归展开的 (如果头文件中还有头文件 ) 。
问 : 预处理完后 , 我们的代码还是 c 语言吗?
是 , 只不过 .i 文件时经过预处理后的一个干净的c 语言 , 与头文件、宏等都没关系了。
2.3 编译
编译:把c 语言 , 变成汇编语言 。在这个阶段中, gcc 首先要检查代码的规范性、是否有语法错误等 , 以确定代码的实际要做的工作 , 在检查无误后,gcc 把代码翻译成汇编语言。
2.4 汇编
汇编语言 ---> 二进制(生成机器可识别代码)
2.5 链接
记忆技巧:
相关文章:

Linux开发工具【中】
目录 一、vim 1.1 插入模式 1.2 底行模式 1)set nu 2)set nonu 3) /XXX n 4)!command 5)vs other 1.3 补充 1) 批量化操作 2)批量化替换 : 3)快速定位&am…...
Ceph PG unfound/lost 问题排查与解决
Ceph PG unfound/lost 问题排查与解决 背景现象排查过程经验总结参考命令结语 背景 Ceph 集群出现 HEALTH_ERR,提示有 PG 对象丢失(unfound),并且 repair 无法自动修复。 现象 ceph health detail 显示: HEALTH_ERR …...

MySQL OCP 认证限时免费活动 7 月 31 日 前截止!!!
为庆祝 MySQL 数据库发布 30 周年,Oracle 官方推出限时福利:2025 年 4 月 20 日至 7 月 31 日期间,所有人均可免费报考 MySQL OCP(Oracle Certified Professional)认证考试。该认证验证持证者在 MySQL 数据库管理、优化…...
Python Cookbook-7.8 使用 Berkeley DB 数据库
任务 你想将一些数据做持久化处理,而且也想体验一下BerkeleyDB数据库的简洁和高效。 解决方案 如果以前在你的计算机中安装过 BerkeleyDB,Python标准库附带的bsddb包(以及可选的 bsddb3,用于访间Berkeley DBrelease 3.2数据库)可以被用来作…...
STM32智能手表:基于FreeRTOS
引言 随着物联网和可穿戴设备的快速发展,智能手表作为典型代表,集成了传感器数据采集、实时显示、无线通信等多项功能。本文将深入剖析一个基于STM32和FreeRTOS的智能手表项目,从硬件架构到软件设计,逐步讲解如何构建一个完整的嵌…...

学习笔记:数据库——事务
1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...
C++命名空间、内联与捕获
命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

UE5 Daz头发转Blender曲线再导出ABC成为Groom
先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...
【进阶】C# 委托(Delegate)知识点总结归纳
1. 委托的基本概念 定义:委托是一种类型安全的函数指针,用于封装方法(静态方法或实例方法)。 核心作用:允许将方法作为参数传递,实现回调机制和事件处理。 类型安全:委托在编译时会检查方法签…...

【贪心算法】贪心算法四
贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长回文串 题目链接: 409. 最长回文串 题目分析: 给一个包含大小字母的字符串,从里面挑选出来一些字母构成一个…...
【漫话机器学习系列】240.真正类率(True Positive Rate,TPR)
理解真正类率(True Positive Rate,TPR):公式、意义与应用 在机器学习与深度学习模型评估中,"真正类率"(True Positive Rate,简称TPR)是一个非常重要的指标。TPR反映了分类…...

Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...

含铜废水循环利用体系
在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…...
移动端返回指定页面
onLoad(() > { // #ifdef APP-PLUS || MP-ALIPAY || H5 onBackPress(() > { uni.switchTab({ url: ‘/pages/my/my’, }) return true }) // #endif }) onUnload(() > { // #ifdef MP-WEIXIN uni.switchTab({ url: ‘/pages/my/my’, }) // #endif })...

MySQL 安装配置(完整教程)
文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机
目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…...
100个常用的DeepSeek指令
日常生活类(20个) 1. 新闻解读:请为我解读今天的热点新闻。 2. 天气查询:请查询……的天气并推荐着装。 3. 旅行攻略:请制定前往……的旅行攻略。 4. 菜谱生成:请生成……菜的具体做法。 5. 解决方案&…...

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...

基于Jenkins的DevOps工程实践之Jenkins共享库
文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

使用Qt自带的Qt assistant时如何添加需要查看的文档
当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦...

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

日本IT|AI应用工程师主要工作内容以及职业前景解析
1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…...

Soft Mask(软遮罩)技术
一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…...

ESP32开发之freeRTOS的互斥量
什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量 在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。 比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然…...

K8s 资源分类
K8s 资源分类图谱 内置资源的分类 1、工作负载相关: Pod:最小的部署单元,包含一个或多个容器。 Deployment:管理无状态应用的副本和滚动更新。 StatefulSet:适用于有状态应用(如数据库)&#…...
Python连接云端服务器:基于Paramiko库的实践与问题剖析
引言 在软件开发与运维场景中,借助Python连接云端服务器进行操作极为常见。Paramiko库作为实现SSHv2协议的有力工具,为Python与云端服务器的交互搭建了桥梁。本文将深入介绍使用Paramiko连接云端Linux服务器的方法,并剖析过程中可能遭遇的问…...

基于 Flask的深度学习模型部署服务端详解
基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…...