Linux环境基础与开发工具使用
1. Linux编译器vim
1.1 vim的基本概念讲解
vim有很多种模式,我们初学者常用的就是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。



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是无法全局查找的,所以是一定要把代码复制进本地里面的。
就是要放进下图的这个路径里面。