LINUX系统工具(vim和gcc)_第1页
LINUX系统工具(vim和gcc)_第2页
LINUX系统工具(vim和gcc)_第3页
LINUX系统工具(vim和gcc)_第4页
LINUX系统工具(vim和gcc)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LINUX系统工具Vim的使用1、三种模式相互转换末行模式输入模式命令行模式用户输入vi输入i或o或a输入shift+;输入ESC输入ESC1、解压缩包gz格式:(管理员下)tar xvzf vim_文件名.orig.tar.gzBz2格式:(管理员下) tar xvjf vim_文件名.orig.tar.gz用make 测试(管理员下)make test2、vi命令i、o、a插入(append、insert、open):q退出:help version当前版本:set nocp恢复默认的程序:help在线帮助信息hjkl左移、下移、上移、右移Ctrl+D将光标向下移动半个窗口Ctrl+U将光

2、标向上移动半个窗口!强制执行help 命令显示相关的命令帮助3.31、命令行模式如果不是合法命令,就会发出报警声。I切换到输入模式,在i命令之后输入的内容都插在光标位置之前,光标后的文本相应的向右移动。如按enter键,就插入新的一行或者换行。o切换到输入模式,且从首行开始插入新的一行。a切换到输入模式,在该命令之后的字符都插入到光标之后:末行模式,最后行出现冒号,光标在冒号后闪烁0光标移到本行开头h光标左移一格l光标右移一格j光标上移一格k光标下移一格$光标移到本行行尾n光标下移n行nG光标移到第n行X删除光标所在位置的前一个字符x删除光标所在位置的字符nx删除光标所在位置及其后的n 个字符

3、nX删除光标所在位置及前n个字符dd删除光标所在行ndd删除光标之后n行R修改光标所在位置的字符,可以一直替换,直到按下Esc键r修改光标所在字符/name查找光标之后name的字符串,系统会自动查找,并突出显示所有找到的字符串,并转到第一个找到的字符串;如果要继续向下查找,可以按n键;向上查找按N键?name查找光标之后name的字符串,与“/”类似,但它是向上查找name字符串查找“”,并将光标移到“”处yy复制所在行nyy复制光标之后n行P将复制的内容粘贴到光标所在位置u撤销最近一次操作,并恢复操作结果,可多次使用u来恢复已经进行了多步的操作U撤销当前进行的所有的操作(文件自上次保存到现

4、在的操作)3.32.末行模式w写文件,将编辑的内容保存到文件系统w!如果是只读文件,强制写入文件q!退出vi,但是文件内容有修改的话,并不保存修改wq!保存内容并退出vi/查找匹配的字符串,在编辑时,要查找包含某个字符串,可以使用“/字符串”,会查找所有的,转到第一个字符n加载新文件,e创建新文件3.41.编辑多个文件vi文件1文件2 文件N:n(next)进入下一个文件:rew进入首文件:args当前缓冲区所存的文件的文件名3.42.分割窗口:split上下分割(可加文件名):vsplit左右分割(可加文件名):ctrl+w光标到下一个窗口:close:quit关闭窗口3.43用户命令模式V

5、imdiff 文件名 文件名 左右分割vi -r 文件名断电恢复3.44.定义新命令:ab字符一字符串一:imap快捷键需要替换的字符串3.4.5.文本整体移动默认为8,用set进行设置n,n 右n,n 左:nmkn,原目的行;m,(move)移动;k,第k行下方:n,nmkn,n,原目的行;m,(move)移动;k,第k行下方3.5高级使用Vi环境(m):set功能选项(输入全拼)首先使用.bash_profile文件,每个文件可以有自己的.exrc配置文件。aiautoindent选项把每一行缩排为与其上一行的行首对齐,默认为offapautoprint默认为onsmshowmatch在输

6、入右圆括号时,显示匹配的左括号。默认为offnmnumber显示行号。默认为offWm=nwrapmargin定义右边距。n为整数。默认为0reportreport编辑操作改变的次数,导致信息出现在状态行。默认为5smdshowmode给出相关命令时,显示“插入”。默认为offwsWord search在查找期间遇到结束符时,绕道开头继续查找。默认为oneberrorbells命令错误会报警。默认为offredaw发生变化时刷新。默认为onwarn修改缓冲区内容后未保存,显示警告信息。默认为onfl输入无效命令,发出声音;flash不再发出;noflash发出。默认onlistvi中的Tab用

7、“1”表示,用“$”表示每行结束。icignorecase区分大小写搜索,noignorecase不区分大小写。默认为offwarp较长行。wrap后自动换行,nowrap不自动换行。默认为On3.5.2语法高亮显示/root/.vimrc对文件进行高亮设置的配置文件。exportTERM=xterm-color3.5.3.正则表达式斜杠/定界符,表示表达式的开始和结束句点.匹配任意单个字符,该字符可以代替其后任何单个字符。/s.d/,点代表任意字符;/.ping/,代表任意字符。方括号用来表示匹配括号中的任意一个字符,其中需要指出的是,在括号中出现“-”表示一段范围,如a-z表示可以匹配到所

8、有小写字母,a-zA-Z可以匹配小写和大写,0-9可以匹配0-9的任意数字。除外,表示匹配除括号中字符的所有字符,取括号中字符的补集。例如,/taeoik/可以匹配到tak、tik、tek等字符;/bookpu.k/可以匹配到boook、bokek、boulk等字符;/pa-z.s/可以匹配到paus、pkks、pu7s、prss等字符;/715ui9h/匹配到71h/7uh/7ih;/k0-9k/匹配到k9k、k7k、k3k等字符;/ka-zj/匹配到kZj、kSj、k%j、k6j等字符。唯独不能匹配到中间字符是小写字母的字符串。星号*匹配0个或多个字符,如,/ab*c/匹配到abc、abb

9、bbbc、akloic、a*95c等字符;/a-z*/匹配任意以小写字母开头的句子、单词或字符串;/t*ing/匹配到tkling、tping、t56ing。反斜杠转义字符,把紧跟其后的第一个原字符当做普通文字对待,除第一个以外都保持其原来的含义。/sound*/可匹配到包含sound*的行;/ba-zk/匹配含有b-a-zk/;/s*aa-z*ing/匹配到s*aissing、s*akddssding、s*ajkoplling等。匹配所有括号中的单词,不仅表示每行包含该文字符即可,而要包含单词。表示所有行中包含单词wth的行;表示所有行中包含sun的行。匹配一行的开始。/f/表示匹配所有以f

10、作为开头的行;“#/a-z/”表示匹配所有以#作为一行开头。并且第二个字符为小写的行。$符号$匹配一行的结束,其使用格式是在指定的字符后面加$行。如,/wth$/,表示所有以wth字符结尾的行;/A-Z$/表示匹配所有以大写字母结尾的行。由于正则表达式必须与定位命令、全局命令一块儿使用,才能显示其强大。3.5.4行号和范围确定光标。指明行号。末行模式下。n1,n2n1行到n2行.光标所在行%最后一行$全选。第一行到最后一行+n相对当前行,“.,.+10”向后的10行-n相对当前行,“.,. - 5”向前的5行3.5.5全局命令1.addr g /字符串/ 命令让系统在指定的行中进行搜索字符串所

11、在行,使用命令操作。g:全局,对包含字符串的指定行进行相应的命令操作,通常有:p(显示)、g(替换)、d(删除)格式中的g表示进行对选定的行进行操作;末行的g表示替换。2. 替换addr s /源字符串/目的字符串/ 选项S:表示替换工作。选项表示对字符串操作的类型,当省略选项时,对每行第一个匹配串进行替换。有:g:对全局的字符串替换、c:对全局要替换的字符进行确认、p:将替换的结果逐行显示(ctrl+L可恢复)。命令操作说明g/字符串/p显示所有带有“字符串”的行g!/字符串/p显示所有不带有“字符串”的行n1,n2g/字符串/p显示从n1到n2中,所有带“字符串”行g/字符串/d删除所有带

12、有“字符串”的行g!/字符串/d删除所有不带有“字符串”的行g/字符串 1/s/字符串2/用“字符串2”全文替换“字符串1”,但每行只替换第一个“字符串1”g/字符串 1/s/字符串 2/g用“字符串2”全文替换“字符串1”s/字符串1/字符串2用“字符串2”替换当前行第一个“字符串1”s/字符串1/字符串2/g用“字符串2”替换当前行所有“字符串1”%s/字符串1/字符串2/用“字符串2”全文替换“字符串1”%s/字符串1/字符串2/g用“字符串2”全文替换“字符串1”g/字符串1/s/字符串2/字符串3/g表示在所有包含“字符串1”的行中,把“字符串2”用“字符串3”代替3.5.6.执行s

13、hell命令 使用vi时,执行shell程序的方法通常有3种:返回式、退出式、执行式。1、 返回式。末行模式sh输入shell命令exit(退出shell)。2、 退出式。末行模式!command回车输入shell命令(加!)回车(退出shell)。3、 执行式。末行模式r输入shell命令回车回车。软件开发工具GCC7.4.编译基础流程和选项 四个步骤:预处理(pre-processing)、编译(compiling)、汇编(assembling)、连接(linking)。链接C、C+等源程序生成可执行文件编译编译后生成的代码(.s、.S等)汇编生成的目标文件.o汇编预编译后生成文件(.i、

14、.ii等)预编译在处理过程中,C预编译器首先扩展宏定义和相应的头文件,在编译阶段根据源文件的指令创建汇编语言代码;然后使用汇编器创建计算机可读的目标文件代码,每个源文件代码都会创建一个目标代码;在编译最后一个阶段,连接器搜索指定的函数库,找到程序中使用的函数,并将这些函数的目标代码和所有的源文件目标代码合并在一起。编译过程中,使用合适的编译选项,可以控制编译过程,最后生成可执行。GCC支持的编译源文件的后缀及解释:后缀名对应的语言种类后期可能进行的操作.cC语言源程序预处理、编译、汇编、链接.C / .cc / .cxxC+语言源程序预处理、编译、汇编、链接.mObjective-C语言源程序

15、预处理、编译、汇编、链接.i预处理后的C文件编译、汇编、链接.ii预处理后的C+文件编译、汇编、链接.s / .S汇编语言源程序汇编、链接.o目标文件程序链接.a / .so编译后的库文件.h预处理所需的文件GCC编译器使用的主要格式为:GCC选项 要编译的文件 选项目标文件如:GCC -E hellogcc.c-o hellogcc.i7.4.1.预处理过程就是要对源程序中出现的伪指令(以#开头;宏定义、条件编译、头文件包含、特殊符号)和特殊字符进行处理的过程。其具体过程就是把包含“#”的文件插入原文中,将宏展开,根据条件编译命令选择要使用的代码,把源文件变为一个没有宏定义、没有条件编译指令

16、、没有特殊字符的文件,最后将代码生成一个 .i 的文件中,等待下一步处理过程。如程序hellogcc.c:gcc -E hellogcc.c -o hellogcc.i7.4.2.程序编译过程主要目标是用预处理过程产生的指令生成汇编语言代码。新文件中只包含常量、变量以及关键字的信息。GCC编译器首先检查代码的规范性、可读性以及是否存在错误,检查无误后,把C/C+代码或者 .i 文件翻译成汇编代码。如程序hellogcc.i:gcc -S hellogcc.i -o hellogcc.s7.4.3.汇编过程把汇编代码翻译成格式正确的机器代码。在汇编语言中,用助记符代替操作码,用地址符号代替地址码

17、,因此,使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种程序叫汇编程序,GCC是系统软件中可以进行汇编处理的系统软件。如程序hellogcc.s:gcc -c hellogcc.s -o hellogcc.o7.4.4.链接过程将上步生成的一个或多个 .o 目标文件盒函数库文件结合起来,最终生成在特定平台上的可执行文件。函数库:静态库和动态库。函数库文件可执行文件链接器目标文件.o目标文件.o目标文件.o如程序hellogcc.o:gcc -o hellogcc hellogcc.c7.5GCC编译高级操作及选项7.5.1.常规操作选项选项解释-X lang

18、uage输入文件的语言language-E只进行预处理-S只进行编译-c只进行汇编-o file输出的文件指定到file中,可以输出汇编文件、目标文件、可执行文件-v打印出编译器内部编译各个过程的命令行信息和编译器版本7.5.2.警告提示功能对程序结构的诊断信息,不一定有错误,而是存在风险,可能存在错误。选项解释-fsyntax-only检查语法错误,不产生输出信息-w禁止所有警告信息-Wunused如果某个局部变量除了声明就没再使用,或者声明了静态函数但是没哟定义,或者某条语句的运算结果显然没有使用,编译器就发出警告-Wmain把main函数声明或定义成奇怪的类型-Werror视警告为错误,

19、出现任何警告就放弃编译-Wredundant-decls同一个可见域定义多次声明-Wall允许GCC提供所有有用的报警信息-pedantic-error允许发出ANSI C标准所列出的全部信息如程序hellogcc.c:gcc -Wall -o hellogcc hellogcc.c7.5.3.代码调试产生调试信息,方便后面gdb和gprof工具的调试和执行。选项说明-g产生调试信息,GDB能够使用这些调试信息对程序进行排错-pg产生额外代码,输出profile信息,供分析程序gprof使用-gdwarflevel n生成调试信息,同时用level指出需要多少信息,默认的level值是2,le

20、vel 1输出最少量的信息,仅包括函数和外部变量的描述,没有局部变量和行号信息。Level3包含更多的信息,出现的所有宏定义,支持宏扩展。7.5.5.链接功能-llibrary搜索library的库文件,连接器在标准搜索目录中寻找这个库文件,库文件的真正名字是library.a,连接器会把它当做文件名准确引用这个文件。但是即使不使用这个选项,GCC也把默认的一些库链接进去。搜索目录除了一些系统标准目录外,还包括用户以“-L”选项指定的路径-nostartfiles不连接系统标准启动文件,而标准库文件仍然正常使用-object-file-name如果某些文件没有特别明确的后缀,GCC就认为他们生

21、成的是目标文件或库文件-nostdilb不连接系统标准启动文件盒标准库文件,只把指定的文件传递给连接器-static在动态连接时,阻止连接共享库-shared生成一个共享目标文件,它可以和其它目标文件连接产生可执行文件。只有部分系统支持该选项-I 目录表示在头文件搜索路径中添加用户自定义的搜索目录。由于Linux中头文件都默认放到“/usr/include”目录下,当用户希望添加其他位置的头文件时,就可以通过“-I dir”选项指定。这个选项在编译多个不在同一个目录下的文件时非常有用-L 目录在库文件的搜索路径中添加用户自定义的搜索的目录名,例如一个程序在连接时需要使用在目录“/home/wth”下libwth.so 的库,用户只需要在gcc命令中加入“-L/home/wth/libwth.so”如程序hellogcc.c,/home/wth目录下的wenjian2.h。把wenjian2.h在前,hellogcc.c 在后:gcc -I /home/wth -o hellogcc hellogcc.c. / hellogcc7.6.1.程序性能测试gprof(与GCC协同工作)执行完毕后,在当前目录下生成gmon.out文件,gprof通过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论