Linux编辑器-vim使用
1.vim的基本概念
在vim中,主要的三种模式分别是命令模式,插入模式和底行模式。
正常/普通/命令模式(Normal mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
末行模式(last line mode) 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。:
总结:
2.vim的基本操作
进入vim,在系统提示符号输入vim之后,是出于Normal mode,我们需要切换到Insert mode才能输入文字
[root@VM-16-4-centos ~]# vim test.c
退出vim及保存文件,需要进入底行模式;
- w (保存当前文件)
- wq (输入wq,存盘并退出)
- q! (输入q!,不存盘强制退出vim)
3.vim正常模式命令集
插入模式
按【i】切换到插入模式,按【i】键进入插入模式后是从光标当前位置开始输入文件
按【a】进入插入模式后,是目前光标所在位置的下一个位置开始输入文字
按【o】进入插入模式后,是插入新的一行,从行首开始输入文字。
移动光标
首先,vim可以使用键盘上的上下左右来控制,但是正规的vim是用小写字母【h】【j】【k】【l】,来分别控制左,下,上,右。
按【G】:移动到文章的最后
按【$】:移动到光标所在行的”行尾“
按【^】:移动到光标所在行的”行首“
按【w】:光标跳到下个字的开头
按【e】:光标跳到下个字的字尾
按【b】:光标回到上个字的开头
按【gg】:进入文本开始
按【shift+g】:进入文本末端
删除文字
「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行
复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。
替换
【r】:替换光标所在处的字符
【R】:替换光标所到之处的字符,直到按下【Esc】键为止
撤销上一次操作
【u】:撤销最近的一次操作,按多次将会执行多次恢复。
【ctrl+r】:撤销的恢复
更改
【cw】:更改光标所在处的字到字尾处
【c#w】:表示更改#个字
跳到指定行
【ctrl】+【g】列出光标所在行的行号
【#G】:#代表某个数字,表示移动光标至文章的第#行行首。
4.vim末行模式命令集
- 列出行号 : 【set nu】,输入之后会在文件中的每一行前面列出行号
- 跳到文件中的某一行: 【#】号表示一个数字,在冒号后面输入一个数字,再按回车键就会跳到该行。
- 查找字符 【/关键字】,先按/,再按回车,如果第一次找的关键字,不是我们想要的,可以一直按【n】会往后寻找我们想要的关键字
- 【?关键字】:先按【?】键,再输入我们想要的字符,如果第一次找的关键字,不是我们想要的,可以一直按【n】会往前寻找我们想要的关键字
- 保存文件 【w】在冒号后面输入字符【w】就可以将文件保存起来
- 离开vim :【q】,按q键就是退出,如果无法离开就在【q】后跟一个!,强制退出。 【wq】是在退出时进行存盘。
Linux编译器-gcc/g++使用
1.背景
gcc是用来编译C语言代码的,g++是用来编译C++代码的,这两个编译器再指令和编译过程中几乎是一样的。所以还是以g++为主进行介绍。
2.gcc如何完成
2.1预处理(头文件和宏的替换)
在预处理过程中,会将我们代码中的宏定义进行替换,同时将头文件写入到我们的代码前面,同时会删除我们写的注释。下面是我们的操作指令。
g++ -E #.cpp -o #.i
g++是指我们想要使用的编译器是g++,“-E”是代表让编译器在预处理结束之后停止编译过程。“#.cpp”则是我们写好的c++代码文件。“-o”是指利用前面处理过的内容生成一个目标文件,"#.i"是我们的目标文件的名字,".i"是文件的后缀。
2.2编译(生成汇编代码)
在编译阶段,编译器会将预处理过的C++文件翻译成汇编语言的文件
g++ -s #.i -o #.s
2.3汇编(生成二进制文件)
在汇编阶段,编译器会将编译后的汇编文件翻译成为二进制文件
g++ -c #.s -o #.o
2.4链接(生成可执行文件)
1.作用
在预处理阶段,编译器会将头文件中的内容拷贝到我们写的代码文件中,但是我们的头文件中只包含了函数的声明,仅仅是告诉编译器我们在文件中确实存在某个函数,但是没有告诉编译器我们如何实现的函数,而链接就是将函数具体实现的过程与我们的代码进行联系,从而生成一个可执行的文件。
2.静态链接和动态链接
写有具体的函数实现方法的库文件分为两类,一类是静态库,一类是动态库。
对于静态链接,编译q器就会将静态库中的代码实现拷贝到我们的代码中,优点是,如果我们的静态库丢失,代码文件也可以独立运行,缺点是,由于我们需要拷贝大量的代码,所以我们会浪费很多空间。
对于动态链接,并不会将代码实现进行拷贝,而是和动态库建立一种联系,让编译器了解到函数的具体实现,优点是,能够节约大量的空间,但是一旦丢失,则文件将无法运行 。
Linux项目自动化构建工具-make/makefile
1.介绍
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,Delphi的make,Visual C++的nmake,Linux下GNU的make。
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
2.使用make/mkefile来构建项目
make是如何工作的,在默认的方式下,也就是我们只输入make命令。
1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“hello”这个文件, 并把这个文件作为最终的目标文件。
3. 如果hello文件不存在,或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新(可 以用touch测试),那么,他就会执行后面所定义的命令来生成hello这个文件。
4. 如果hello所依赖的hello.o文件不存在,那么make会在当前文件中找目标为hello.o文件的依赖性,如果 找到则再根据那一个规则生成hello.o文件。(这有点像一个堆栈的过程)
5. 当然,你的C文件和H文件是存在的啦,于是make会生成 hello.o 文件,然后再用 hello.o 文件声明 make的终极任务,也就是执行文件hello了。
6. 这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。
7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。
8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起, 我就不工作啦。
3.项目清理
工程是需要被清理的,像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示make执行。make clean, 以此来清除所有的目标文件,以便重编译。但是一般我们这种clean的目标文件,我们将它设置为伪目标,用.PHONY修饰,伪目标的特性是总能被执行。
使用git命令行
1.安装git
首先使用命令安装git
yum install git
2.创建项目
我们需要登录自己的码云,在上面创建一个仓库。
3.下载项目到本地
创建好一个放置代码的目录
git clone [url]
url需要上面我们创建好的项目的链接。
4.提交项目到云端使用方法
1.git add
git add [文件名]
将代码放到刚才下载好的目录中,需要用git管理的文件告知git
2.git commit
提交改动到本地
git commit ""
提交的时候应该注明提交日志,描述改动的详细内容
3.git push
同步到远端服务器上
git push
此时,我们再打开我们的码云,刷新一下,就能看到代码的改动了。