Linux的强大开发工具vim 的使用配置以及gcc

前言

前文介绍了很多指令,在Linux的运行测试,包括yum源的安装卸载查看,还有权限的理解,个人,组织,还有外人,U、G、X文件的分类,这些我们可以类比记忆与Windows的操作系统里面的知识点,我们这篇文章介绍的是vim的使用,

1.vim的使用

1.1 vim的基本概念 

vim的三种模式(其实有好多模式,主要掌握这3种即可),分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 命令模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁 的编辑模式。
  • 底行模式:文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式

1.2 vim的基本使用

 打开vim直接输入,vim就可以进入,我们正常进入vim默认是命令模式,这个时候需要我们输入a、i、o、都可以进入插入模式,这个时候我们是可以进行文本编辑的,退回命令模式就是esc,再通过命令模式输入shift+:就可以进入底行模式

  • : w (保存当前文件)
  • : wq (输入「wq」,存盘并退出vim)
  • : q! (输入q!,不存盘强制退出vim)

1.3 vim的指令集

插入模式就是直接输入一些东西,类似于记事本的功能。

主要介绍的就是命令模式

  • [h]、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格 
  • 光标位置锚点: shitf+~(行首) shift+$(行尾)
  • gg (起始行) shift+g(结束行) n+shift+g(指定行)
  • b/w:按照单词为单位进行前后光标移动

文本操作:

  • yy:复制当前行
  • nyy:复制当前行及其之后的n行,包含当前行
  • u: 撤销误操作
  • p: 粘贴,np:一次重复粘贴n行
  • dd:删除当前光标所在行,支持ndd
  • dd->p:剪切功能
  • shift+~:快速大小写切换
  • x: 左向右删除光标之后的一个字符,支持nx
  • X:右向左也是支持nX
  • r: 替换一个字符,光标所在的字符,支持nrshift+r: 替换模式,直接进行多个内容的替换
  • ctrl+r:撤销最近的撤销

底行模式:

  • set nu: 调出行号
  • set nonu:取消行号
  • vs 文件:多文件操作[ctrl+w+w]w:保存
  • q:退出
  • !:强制[w!,q!,wq!]

1.4 vim的配置

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

如果我们想用已经配置好了的配置可以去网上找找就行。

touch .vimrc
 vim .vimrc

在里面输入set nu,我们进入vim,就会每一行都会产生行号 

 

2.gcc和g++---Linux的编译器

一个程序运行过程主要有下面这几个阶段

  • 预处理(进行宏替换)
  • 编译(生成汇编)
  • 汇编(生成机器可识别代码)
  • 连接(生成可执行文件或库文件)

各个阶段的格式

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

gcc -E test.c -o test.i
gcc -S test.i -o test.s
gcc -c test.s -o test.o
gcc -o test.o mytest

运行一下这个C程序直接输入./mytest

 

这里引入一个问题,我们并没有写入一些头文件的代码,只是声明了一下头文件,在Linux中我们是怎么使用printf函数呢?答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到 系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函 数“printf”了,而这也就是链接的作用,这里介绍一下动态链接和静态链接

2.1动态链接和静态链接

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

gcc test.c -o mytest_s -static

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时 链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态 库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件,如下所示。 gcc  hello.o –o hello

2.2 gcc的命令集

  • -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
  • -S 编译到汇编语言不进行汇编和链接
  • -c 编译到目标代码
  • -o 文件输出到 文件
  • -static 此选项对生成的文件采用静态链接
  • -g 生成调试信息。GNU 调试器可利用该信息。
  • -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
  • -O0 -O1 -O2 -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
  • -w 不生成任何警告信息。
  • -Wall 生成所有警告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值