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的文字
[命令模式] 进入到 [插入模式]
- 输入i
- 输入a
- 输入o
[插入模式] 进入到 [命令模式]
按Esc
[命令模式] 进入到 [插入模式]
shift + ; 即冒号:
退出vim即保存文件
在命令模式下时按一下shift + ;进入底行模式
- 输入w(保存当前文件)
- 输入wq(保存当前文件并退出vim)
- 输入q!(不保存文件并退出vim)
1.3vim命令模式命令集
- 切换至插入模式
- 按【i】键切换进入插入模式,按【i】进入插入模式后是从光标当前位置开始输入文字
- 按【a】进入插入模式后是从当前光标所在位置的下一个位置开始输入文字
- 按【o】进入插入模式后是插入新的一行,从行首开始输入文字
- 从插入模式切换到命令模式
- 按【Esc】键
- 移动光标
- vim可以直接用键盘上的光标来上下移动,但正规的vim是用小写英语字母【h】【j】【k】【l】,分别来控制光标的左、下、上、右的移动
- 按【G】:移动到文章的最后
- 按【$】:移动光标到所在行的行首
- 按【^】:移动光标到所在行的行尾
- 按【w】:光标跳到下个字的开头
- 按【e】:光标跳到下个字的结尾
- 按【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 背景知识
- 预处理(进行宏替换,去除注释,条件编译,头文件展开等)
- 编译(生成汇编)
- 汇编(生成机器可识别代码)
- 链接(生成可执行文件或者库文件)
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