目录
前言:
一、vim编辑器
1.vim常用模式
1.1 正常/普通/命令模式(Normal mode)
1.2 插入模式(Insert mode)
1.3 末行/底行模式(last line mode)
2.vim模式切换
3.正常/命令模式操作集
3.1进入插入模式
3.2 移动光标
3.3删除文字
3.4复制
3.5替换
3.6撤销上一次操作
3.7跳至指定行
4.底行/末行模式命令集
4.1列出行号
4.2跳至某一行
4.3查找字符
4.4保存文件和离开vim
5.vim中执行Linux命令行(底行模式中)
6.vs 多窗口编辑
6.1切换窗口
7.快速退出vim编辑器
8.可视块模式(批量注释代码)
9.vim配置
10.vim配置链接
二、gcc编译器
1.gcc生成可执行文件过程
2.ldd命令
3.函数库
总结:
本篇我们来学习一些vim编辑器的基本使用方法和gcc编译器,来完成一些简单的代码运行。
提前声明,这个叫做编辑器而不是编译器。
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。本篇,统一按照vim来进行讲解。
其实关于vim操作很简单,vim中存在很多模式,但是真正使用的一般就3种模式(下图介绍5种模式)。
1.1 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
1.2 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
1.3 末行/底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式(下文我们统称底行模式)。要查看你的所有模式:打开vim,底行模式直接输入help vim-modes。
因为不同镜像源会有不同的vim版本,不同vim版本里的模式种类数量也不一样,用vim打开一个文件之后进入底行模式使用help vim-modes来查看vim的模式。
我们直接使用vim打开一个文件默认进入的是正常/命令模式。
命令模式 -> 插入模式:
- 直接输入 shift + i (相当于I),直接在当前光标中开始插入。
- 直接输入 a 光标向后移动一个字符之后直接进入插入模式。
- 直接输入 o 光标下新开一行并进入插入模式。
命令模式 -> 底行模式
- 直接输入shift + ; (相当于' : ')。
命令模式 -> 可视块模式
- 直接输入 Ctrl + v (后续详细介绍)。
这里并没有介绍退出各种模式,因为有固定的一个键,就是Esc,就可以退出任意模式到命令模式。
3.1进入插入模式
●按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
●按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
●按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
3.2 移动光标
●vim可以直接用键盘上的光标来上下左右移动,但正规的vim是使用 h, j, k, l来移动的(可以这样记:j(jump跳下) k(king国王) h(在左边) l(在右边))。
●按 shift + g (也就是G) : 光标移动到文本末尾
●按 shift + 4 (也就是$) :光标移动到本行末尾
●按 shift + 6 (也就是^) :光标移动到本行开头
●按 w :光标按照单词为单位,跳向下一个字的开头
●按 e :光标跳到单词结尾
●按 b :光标按照单词回跳
●按 gg :光标跳转到文件开头
●按 Ctrl + b :屏幕往“后”移动一页
●按 Ctrl + f :屏幕往“前”移动一页
3.3删除文字
● x :每按一次,删除光标当前字符
● #x :比如,6x 表示删除光标所在位置的后面(包括自己在内)6个字符
● X (也就是 shift + x) :每按一次,删除光标前面的字符(不包括自己)
● #X (也就是 # shift + x) :比如,20X 表示删除光标所在位置前面的20个字符
● dd :删除光标所在行,也有剪切的意思
● #dd :从光标所在行开始删除#行
3.4复制
● yy :复制光标所在区到缓冲区
● #yy :复制光标所在#行到缓冲区中。比如, 6yy 表示拷贝光标所在的改行往下数6行文字
● p :将缓冲区的字符粘贴到光标所在位置。注意:所有与‘y’有关的复制命令都必须与‘p’配合才能完成复制与粘贴功能。
3.5替换
● r :替换光标所处字符。比如,我们先点r,之后点击 x 当前字符会被替换为 x
● R :替换光标所到之处,知道按下Esc停止
3.6撤销上一次操作
● u :就是回撤
● Ctrl + r :取消回撤
3.7跳至指定行
● #gg 或者 #shift + g (也就是 #+G ) :跳至指定行。比如,15G,跳转至15行
先点 shift + ; (也就是 : )进入底行模式。
4.1列出行号
● set nu :输入 set nu 后,会在文件前每一行列出行号
4.2跳至某一行
● # :# 表示一个数字,在冒号后输入一个数字,之后回车跳至该行了。
4.3查找字符
● /关键字 :先按 “/” ,之后输入要找寻的字符,如果第一个不是您想要的,可以一直按 n 知道遇到你想要的即可
● ?关键字 :先按 “?” ,之后输入要找寻的字符,如果第一个不是您想要的,可以一直按 n 知道遇到你想要的即可
这两个的区别为一个从上往下查找,一个从下往上查找。
4.4保存文件和离开vim
● w :在冒号后面输入 w ,就可以保存文件
● q :按 q 就是退出,如果无法离开vim,可以在 q 后面跟上 ! 强制离开vim
● wq :一般离开时,保存并退出,无法退出跟上 ! 强制保存离开vim
底行模式中,我们可以通过!执行Linux命令行。
之后点击任意键即可继续退回vim编辑器。
此时我们在当前目录中再写入两个文件(当前打开的是code.c,新建file.txt、tmp.txt),之后学习vs命令。
此时我们再vim编辑器上把tmp.txt,code.c,file.txt文件都用vs方式打开。
此时如何判断我们当前处于哪个窗口?因为光标只有一个,所以看光标即可。
6.1切换窗口
Ctrl + w : 可以快速切换窗口。
但是这个要一直按住w才可以切换窗口,我们可以点击Ctrl之后快速点击两次w进行窗口切换。这些窗口可以互相复制粘贴
shift + zz :命令行退出vim编辑器。但是一般最好不要用这个命令。
当我们想进行批量化的代码注释时,我们需要先进入可视块模式(在命令模式中点击Ctrl + V),之后移动光标,之后点击shift + i,并输入//,最后点击两次Esc就可以完成批量化的注释。
我们也可以结合shift + g使用,比如先Ctrl + v,进入视图模式,之后10 + shift + g,之后shift + i,并输入//,最后双击Esc,可以选定注释多少行(这里的行是行号,不是一共注释多少行)。
但是如果我们想取消注释,此时可以进入视图模式之后,之后控制光标选中好位置,之后直接单机d即可取消注释。
注意: 当我们进入可视块模式时,移动光标最好使用"hjkl",不要使用小键盘的箭头,否则可能会退出模式。
当我们进入系统时,我们会vim编辑器会在每个人的家目录中找一个vim配置文件,如果此时想让vim配置起来的话,我们可以在家目录中新建一个 .vimrc 的文件,之后可以在该vim配置文件中写入一些vim配置。
此时我们编辑.vimrc文件,比如写入set nu。
此时在使用vim打开当前目录下的test.c文件:
可以发现其默认加上了行号。
这里再次强调,当vim启动的时候,会先读取家目录中的vim配置文件.vimrc文件!
此时发现并没有显示行号,这是为什么?
我们刚才强调了,我们vim打开文件的时候,会先读取当前用户家目录中的vim配置文件.vimrc文件,所以一个用户配置好以后不会影响别人。
当我们想向vim配置文件中写入内容时,我们可以利用搜索引擎,在vim配置文件中写入内容。
因为配置文件中的命令很多,这里我给大家提供一个链接,大家可以直接下载这个链接(只推荐各位在普通用户中下载)。
我们先登录gitee,之后搜索vimforcpp。
之后下滑找到:
直接在Linux命令行中执行这条命令:
注意这个软件支持Cent OS 7(建议在普通用户家目录下下载)。
此时我在gan用户下下载,需要输入root密码:
当我们安装好以后,需要使用以下命令使vim配置生效:
当然也重启终端也可使配置生效。
此时再次使用vim打开test.c,往里面写入C代码,你就会发现它和编译器一样好用了。
我们也可以看vim的配置文件。
如果你嫌当前缩进太短了,可以去更改vim配置文件(因为配置文件中的缩进为2,所以我们在底行模式中搜索2(也就是:/2)之后点击n,光标快速移动到查找的字符上面,之后输入r,将2替换为4,最后退出并保存即可):
在Linux系统中,我们一般使用C/C++编译器是gcc/g++,gcc/g++编译选项是一样的,此时我们先利用vim编辑一个code.c文件并写入一些内容。
此时我们直接执行gcc code.c会生成a.out可执行文件。
我们小学1年级都学过C语言,知道C语言文件是通过预编译(预处理),编译,汇编,连接生成的可执行文件(这里给出C语言预处理详解链接:预处理详解-CSDN博客)。
此时我们先要知道gcc其中的-o选项是什么意思:
就是生成目标文件,有以上两种用法。
此时我们删除a.out文件。以上直接通过源文件code.c文件直接生成了可执行文件code,此时我们按照C语言形成可执行文件的过程逐步分析:
注意我们说过,生成的二进制文件(.o文件)必须经过链接才能生成可执行文件, 所以此时生成的二进制文件(code.o)不是可执行文件,不能执行。
我们必须经过连接的步骤才能生成可执行文件:
其实我们可以直接gcc -o生成可执行文件(也就是说可以进行跳步)。
总结一下: 对应选项为ESc,对应生成目标文件为iso。
此时我们先生成一个code可执行文件,二进制文件要经过链接才可以执行,我们可以看code这个可执行文件依赖哪些库:
这里补充一下:
windows中:
- 静态库后缀为.lib
- 动态库后缀为.dll(Dynamic Link Library)
Linux中:
- 静态库后缀为.a
- 动态库后缀为.so(如libc.so.6为动态库)
我们可以看到,Linux的命令也依赖这个库,也说明了Linux中有很多命令是C写的。
这里提出一个问题: 先有语言还是先有编译器?
第一版时候没有汇编的编译器,我们先拿二进制写一个编译器,这个编译器可以帮我们把汇编语言翻译为二进制。
此时我们就可以用汇编的方式写一个编译器,之后底层以二进制的形式解析这些汇编指令。
所以第一版C语言,要先把C语言翻译为汇编语言,之后用汇编写的编译器进行翻译执行。所以先有编译器,后有语言。
这里分为两种库:动态库和静态库。
所以说链接方式也有两种:动态链接和静态链接。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也 就不再需要库文件了。其后缀名一般为“.a”
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态 库。gcc 在编译时默认使用动态库。
我们可以在生成可执行文件的时候指定使用动态库还是静态库,因为默认使用动态库,所以这里我们使用静态库进行链接:
云服务器上默认是没有安装C/C++的静态标准库,所以我们要手动安装glibc-static静态库:
此时执行以上命令并观察通过静态链接和动态链接生成可执行文件的大小区别:
好了,此时你已经拥有了一个强大的vim配置和gcc编译器,但是这仅仅只是冰山一角,当代码有错误的时候,难道每次都要生成一个可执行文件?又该如何调试代码?这就是下一章的内容了,老铁焖,加油啊!
到此这篇lvremove命令(lvcreate命令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/34079.html