Linux环境及工具(yum/vim/gcc/g++/gdb/make/Makefile)(2)

简介: Linux环境及工具(yum/vim/gcc/g++/gdb/make/Makefile)(2)

3、vim正常模式命令集


  • 移动光标:


上下左右:正规的vim是用小写英文字母「h」、「j」、「k」、「l」分别控制光标左、下、上、右移一格,也可以直接用键盘上的光标来上下左右移动
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「$」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”
按「n+l」:光标移到该行的第n个位置
按[gg]:光标移到文本开始
按[shift+g]:光标移到文本末端
按[n+shift+g]:光标移到文本第n行


  • 删除文字:


「x」:每按一次,删除光标所在位置的一个字符
「n+x」:删除光标所在位置的“后面(包含自己在内)”n个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「n+X」:表示删除光标所在位置的“前面”n个字符
「dd」:剪切光标所在行
「n+dd」:从光标所在行开始剪切n行
//注意:dd与“p”配能完成剪切粘贴功能


  • 复制:


「yw」:将光标所在之处到字尾的字符复制到缓冲区中
「n+yw」:复制n个字到缓冲区
「yy」:复制光标所在行到缓冲区
「n+yy」:表示拷贝从光标所在的该行“往下数”n行文字
「p」:将缓冲区内的字符贴到光标所在位置
//注意:y相关的操作与“p”配能完成复制粘贴


  • 替换:


「r」:输入需要改成的字符,替换光标所在处的字符
「R」:切换成替换模式,输入可以替换光标所到之处的字符,按下「ESC」键退回正常模式
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作,按多次“u”可以执行多次回复
「ctrl + r」: 撤销的恢复


4、vim底行模式命令集


注:先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入底行模式


  • 列出行号:


「set nu」: 输入「set nu」后,会在文件中的每一行前面列出行号跳到文件中的某一行
「set nonu」: 输入「set nonu」后会取消文件中 的行号
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了


  • 查找字符:


「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止(向下查找)
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止(向上查找)


  • 保存退出:


「w」: 在冒号输入字母「w」就可以将文件保存起来
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件


替换


「%s/要被替换的字符或字符串/要替换成的字符或字符串/g」:将对应字符或字符串替换成对应字符或字符串(g表示全部)


  • 更改:


「~」:从光标所在行将单词大写转小写,小写转大写


  • 打开多个窗口:


vs + 文件名:(如果没有那么就会创建一个,如果有就会打开对应的文件)


  • 多文件切换:


ctrl + w(双击):切换文件(注:在多窗口的情况下)


  • 特别命令:


vim test.c +10   //打开test.c文件将光标定位到第10行
!vim   //打开历史上最近一次执行vim的操作



5、vim操作总结

简图:


全图:


6、简单vim配置

配置文件的位置:

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效,而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建,切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~打开自己目录下的.vimrc文件,执行 vim .vimrc 进行配置


示图:


  • 常用配置选项:


设置语法高亮: syntax on
显示行号: set nu
设置缩进的空格数为4: set shiftwidth=4


注意:

建议使用网络上已经配置好的vim,学习教程进行下载就行了


一般vimrc在每一个用户下都有一个,彼此之间互不影响


三、Linux编译器-gcc/g++

1、程序生成过程

注:以gcc为示例展示过程


语法:

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


1)预处理

功能主要包括:

将源文件进行宏定义替换,文件包含展开,条件编译处理,去注释等


示例:

gcc –E hello.c –o hello.i


示图:


注:

选项“-E”的作用是让 gcc 在预处理结束后停止编译过程


选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序(临时文件)


2)编译

功能主要包括:

首先 gcc 检查代码的规范性、是否有语法错误;在检查无误后, gcc 把代码翻译成汇编语言


实例:

gcc –S hello.i –o hello.s


示图:


注:

“-S”选项来进行查看,该选项只进行编,生成汇编代码


3)汇编

功能主要包括:

汇编阶段对全局变量生成符号表;把编译阶段生成的“.s”文件转成目标文件(由汇编指令转成二进制指令)


示例:

gcc –c hello.s –o hello.o


示图:


注:

使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了


4)链接

功能主要包括:

合并段表,合并符号表以及符号表的重定位;每个目标文件由链接器捆绑在一起,形成一个单一而完整的可执行程序


示例:

gcc hello.o –o hello


示图:


2、函数库

概念:

在上面的C程序中并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,但是系统把这些函数实现都被放入到名为 libc.so.6 的库文件中去了,在没有特别指定时 gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能间接实现函数“printf”了,而这也就是链接的作用


分类:

函数库一般分为静态库和动态库两种


静态库:

指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了,其后缀名一般为“.a”


动态库:

在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销,一般后缀名为“.so”


注: gcc 在编译时默认使用动态库,可以通过 file 命令查看文件信息


示图:


总结:

以动态库链接方式生成的可执行程序体积比较小,比较节省系统资源,缺点是一旦库缺失,所以依赖的程序都不可运行


而如果是以静态库链接方式生成的可执行程序体积比较大,因为他会将库里面的代码拷贝至可执行程序,缺点是程序的体积比较大,浪费系统空间资源,但是如果库缺失不影响程序运行


gcc选项总结:


-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w 不生成任何警告信息
-Wall 生成所有警告信息(默认生成)
相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
29天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
35 4
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
98 3
|
7月前
|
人工智能 Linux 开发工具
linux 对文件内容的查看、归档 及 vim基本操作
linux 对文件内容的查看、归档 及 vim基本操作
|
4月前
|
Unix Linux 开发工具
在Linux中,有哪些基本的 Vim 命令?
在Linux中,有哪些基本的 Vim 命令?
|
2月前
|
Unix Linux 开发工具
Linux Vim的 命令大全
Linux Vim的 命令大全
31 0
|
3月前
|
存储 Linux Shell
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
这篇文章介绍了Vim编辑器的基本使用、常用命令和模式,以及Linux系统中用户和组的管理方法,包括用户和组相关文件如/etc/passwd、/etc/shadow和/etc/group的说明。
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
|
3月前
|
存储 Linux 编译器
linux中vim介绍以及常用命令大全
linux中vim介绍以及常用命令大全
89 8
|
5月前
|
搜索推荐 Linux 开发工具
|
6月前
|
Linux Shell 持续交付
Linux下vim的配置
本文介绍了如何对vim进行基础配置,如行号显示、缩进设置等,并推荐了一种自动化部署方案,通过链接下载预配置的vim环境脚本,简化了配置过程,提升开发效率。
91 3
Linux下vim的配置
|
5月前
|
Linux Shell 开发工具
Linux Vim批量注释和自定义注释
在Vim中,快速批量注释和取消Shell脚本的多行可以使用替换命令。例如,用`:1,10s/^/#/g`在第1到10行行首加`#`注释,`:1,10s/^#//g`则移除这些行的行首`#`。定义快捷键如`:map^P l#<Esc>`(需用Ctrl+V+P生成^P)能一键在当前行添加`#`注释。要取消注释,可以定义`:map^B 0x`来删除行首字符。通过`.vimrc`保存快捷键设置,可使它们在每次启动Vim时生效。