嵌入式linux上的c语言编程实践 第3章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章vi文本编辑器第3章vi文本编辑器3.1vi文本编辑器概述3.2vi基本命令3.3vi常用末行命令习题第3章vi文本编辑器3.1vi文本编辑器概述与Unix相同,Linux本质上是一个文本驱动(text-driven)的操作系统。文本文件就是全部由ASCII码字符及某种语言的编码字符构成的文件,不含有任何样式和格式信息。文本文件可以被任何文本编辑器解释而不会出现乱码,还可以被所有程序操作和使用。在Linux系统中,文本文件被广泛地用作系统配置文件和系统工具软件的操作对象。这使得用户可以在文本方式下完成所有的工作,如编写程序和命令脚本、读/写电子邮件、配置和管理系统等。而完成所有这些工作的基本工具就是文本编辑器。因此,Linux的用户应当熟悉至少一种文本编辑器。第3章vi文本编辑器3.1.1vi文本编辑器介绍Linux下的文本编辑器有ex、sed、vi和emacs等很多种。其中,vi是最基本的文本编辑工具。vi(visual)诞生于1978年,由柏克莱大学的BillJoy编写。从其诞生至今,vi始终是所有Unix/Linux系统上必配的编辑器,甚至在DOS、Windows、Macintosh、OS/2乃至IBM大型机S/390系统上都能见到vi的某个版本。目前Linux系统上流行的版本是vi增强版vim(viimproved)。vim是一个开放源代码软件,它在vi的基础上增强了功能,也更容易使用。现在许多Linux发行版中的vi就是vim。本书中所说的vi也兼指vim,但有一些选项可能只有vim支持。第3章vi文本编辑器vi是一个全屏幕文本编辑器,具有文本编辑所需的所有功能。vi以高效和快捷著称,这是vi能够在编辑器领域中保持几十年领先地位的原因。以下介绍vi的几个突出特点。第3章vi文本编辑器1.编辑功能强大vi的编辑功能十分强大,除通常的编辑功能外,vi还支持一些高级编辑特性,如正则表达式、宏和命令脚本。利用这些特性可以完成非常复杂的编辑任务,实现编辑的智能化和自动化。另一方面,vi的功能又十分专注,它只是一个编辑器,没有其他功能。Linux系统提供了许多专门用途的工具,如排版、排序、流过滤、E-mail、编译等软件。vi可以和这些工具软件协同工作,从而实现几乎所有的文件加工处理任务。用一些小而精悍、功能专一的工具结合起来完成复杂的处理功能,这正是Unix的设计哲学。第3章vi文本编辑器2.适用于各种版本的Unix/Linux系统vi是Unix/Linux系统的标准文本编辑器,几乎每一台Unix/Linux系统上都会有vi,这是其他编辑器无法相比的。3.适用于各种类型的终端vi得以广泛应用的原因之一是它对终端设备的广泛适应性。不管是只有打字机键盘加Esc键的简单终端,还是受通信限制的远程终端,或是配有完备的功能键和鼠标的现代化终端,都可以很好地支持vi完成文本编辑工作。第3章vi文本编辑器4.使用灵活快捷广泛适应性带来的问题是繁多的命令。对于同一项编辑操作,vi提供了许多不同的命令。vi的命令都很简练,往往是单个字符或少数几个字符的组合。对初学者来说,使用这些命令并不方便,甚至过于复杂。但对于熟练的用户来说,更多的选择意味着更大的自由,简单的命令意味着更少的击键次数。正因为如此,vi被看做是Linux开发人员和系统管理员的编辑利器。初学者经过一段时间的使用,也会逐渐习惯vi的操作方式,并形成自己特有的操作风格。第3章vi文本编辑器3.1.2vi的工作模式vi是一个多模式的软件,它有三种工作模式。在不同的工作模式下,它对输入的内容有不同的解释。1.命令模式(Commandmode)在命令模式下,输入的任何字符都作为命令来解释执行,屏幕上不显示输入内容。命令模式用于完成各种文本修改工作。2.输入模式(Insertmode)在输入模式下,输入的任何字符都将作为文件的内容被保存,并显示在屏幕上。输入模式用于完成文本录入工作。第3章vi文本编辑器3.末行模式(Lastlinemode)末行模式也称为ex转义模式。在末行模式下,光标停留在屏幕的最末行,在此接收输入的命令并执行。末行模式用于执行一些全局性操作,如文件操作、参数设置、查找与替换、拷贝与粘贴、执行Shell命令等。在文本编辑过程中,用户可以控制vi在这三种工作模式之间进行切换,完成各种编辑工作。三种模式之间的转换关系如图3-1所示。第3章vi文本编辑器图3-1vi工作模式的转换第3章vi文本编辑器3.1.3vi的启动与退出在Shell下输入vi命令后,便进入全屏幕编辑环境,命令格式是:vi[文件名]vi的启动过程是:先建立一个编辑缓冲区,若指定了文件且该文件已存在,则将其内容读到编辑缓冲区中;若指定的文件不存在,则建立此文件。然后将光标定位在第1行第1列的位置上。图3-2是vi启动后的初始界面。屏幕末行显示的是文件的名称、状态、行数和字符数、光标位置(行号,列号)等信息。光标位置的字符通常用反显方式或下划线方式显示。“~”表示编辑区的空行,它们不是文件的组成部分。第3章vi文本编辑器图3-2vi的初启界面第3章vi文本编辑器vi启动后首先进入命令模式。此时,用户可以使用vi的编辑命令进行文本的输入和修改。具体的用法在第3.2节介绍。注意:编辑命令只是修改调入编辑缓冲区中的文件的副本,文件本身不会被修改。所以,编辑完成后,要用:wq命令将修改后的内容保存到文件中并退出vi。若此次运行未对原文件作任何修改,则可用:q命令退出。图3-3示意了退出命令的用法,更多的文件操作和退出命令在第3.3节介绍。第3章vi文本编辑器图3-3vi的退出第3章vi文本编辑器3.2vi基 本 命 令vi的命令繁多,但通常的编辑工作只需要掌握其中一小部分命令。而对于一些特殊的操作或编辑任务,总能够在vi手册中找到适当的命令。vi的常用编辑命令分为以下几类:●屏幕翻滚命令;●移动光标命令;●插入与删除命令;●修改与替换命令;●拷贝与粘贴命令;●复原与重复命令。第3章vi文本编辑器vi的命令通常是简单的字符(如a、s、c)或是字符组合(如dw、cc),还有少数几个控制键组合字符(如Ctrl+u)。这就是说,仅仅通过普通键盘就可以实现所有编辑工作,完全不需要用鼠标,也不倚赖于某些控制键。比起使用鼠标和复杂控制组合键来说,键入字符命令的速度要快得多。因此,熟练使用这些字符命令能够提高编辑的效率。尽管只用字符命令就可以完成所有编辑工作,vi还是提供了对现代键盘上的编辑键的支持。适当地使用这些熟悉的按键将使编辑操作更加轻松。表3-1列出了这些键在不同模式下的作用。第3章vi文本编辑器表3-1vi按键功能说明按键命令模式输入模式末行模式Home移动光标到行的最前面移动光标到行的最前面移动光标到行的最前面End移动光标到行的最后面移动光标到行的最前面移动光标到行的最前面PageDown向下翻一页移动光标到行的最前面向下翻找历史命令PageUp向上翻一页移动光标到行的最前面向下翻找历史命令Delete删除光标位置的字符移动光标到行的最前面同左,行尾时同BackspaceInsert进入输入模式替换-插入无效Backspace光标前移一个字符删除光标前的字符删除光标前的字符Space光标后移一个字符空格空格Enter光标下移一个字符换行提交命令←↑↓→按箭头方向移动光标按箭头方向移动光标←→前后移动光标,↑↓上下翻找历史命令第3章vi文本编辑器以下分类介绍常用的vi命令。注意:在命令模式下输入的字符都被vi解释为命令,不在屏幕上显示。若输入的是非法命令则响铃报警。此外,vi的命令是区别大小写的,即大写字母和小写字母代表的是不同的命令。第3章vi文本编辑器3.2.1屏幕翻滚当编辑的文件比较大时,使用翻屏命令可以快速地将要编辑的区域调入屏幕显示区。用PageDown和PageUp键可以方便地实现上下翻屏,但在有些场合下需要用命令来实现更灵活的翻屏操作。常用的几个翻屏命令介绍如下。翻屏命令:Ctrl+u:向上翻半屏。Ctrl+d:向下翻半屏。Ctrl+f:向下翻一屏。同PageDown键。Ctrl+b:向上翻一屏。同PageUp键。[n]z+Enter:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。第3章vi文本编辑器3.2.2光标定位与移动在输入或修改文本前,应先将光标移到适当的位置。vi不支持用鼠标移动光标的方式,但以下命令可以更加高效地定位和移动光标。光标定位命令:0光标移至行首。同Home键。^光标移至行首第1个非空格字符。$光标移至行尾。同End键。[n]G光标移到第n行,未指定n时移到末行。[n]|光标移到第n列,未指定n时移到首列。H、M、L光标移到屏幕首、中、尾行行首。第3章vi文本编辑器光标移动命令:h、j、k、l光标向左、下、上、右移一个字符。同箭头键。b、w光标移到上一个词、下一个词首。e光标移到词尾。(、)光标移到句首、句尾。{、}光标移到段首、段尾。注:以上光标移动命令前带数字n时,表示重复移动n次。如:2h为左移2格,3e为移到后面第3个词的词尾。第3章vi文本编辑器3.2.3文本输入与删除1.文本的输入在输入文本内容之前,应先将光标定位在要输入的位置上,然后执行插入命令,进入输入模式。处于输入模式时,屏幕底部会显示“—插入—”提示,表示后续的输入都作为文件的输入内容。输入完成后按Esc键就可返回命令模式。插入(insert)命令都是单字符命令,可以灵活地实现在当前光标位置的前、后、行首、行尾、上一行、下一行开始输入。第3章vi文本编辑器插入命令:a、A在光标位置后、行尾后开始插入。i、I在光标位置前、行首前开始插入。i的作用与Insert键相同。o、O在光标所在行之后、光标所在行之前的新行开始插入。图3-4所示为插入命令的用法。第3章vi文本编辑器图3-4插入命令用法示意第3章vi文本编辑器2.文本的删除删除(delete)文本的最简单方法是将光标移到要删除的字符上,然后,每按一下x键或Delete键就会删掉一个字符。若要删除的文本较多时,可以使用下面更加灵活的删除命令。删除命令:x、X删除光标处、光标前的字符。x的作用与Delete键相同。dd删除光标所在的行。D删除光标右面的文本。J删除当前行尾的换行符,使当前行与下一行合并为一行。第3章vi文本编辑器d+定位符删除从光标位置到指定位置范围内的字符。常用的有:d0、d^删除光标左面的文本。0或^代表行首。d$删除光标右面的文本。$代表行尾。dG删除光标所在行之后的所有行。G代表最后一行。db删除光标处前的字符直到词首。b代表词首。de删除光标处的字符直到词尾。e代表词尾。dw删除光标处的字符直到下一个词的词首。w代表下一词词首。注:以上命令前带数字n时,表示删除的范围扩大n倍。如:3dd为删除3行,2de为删除从光标开始的2个词。图3-5所示为删除命令的用法。第3章vi文本编辑器图3-5删除命令用法示意第3章vi文本编辑器3.2.4文本修改与替换1.文本的修改文本修改(correct)是指改写一部分文本的内容,修改的过程是:先删除指定范围内的文本,然后插入新文本,最后用Esc键结束插入。以下介绍几个常用的修改命令。修改命令:cc修改光标所在的行。C修改光标处到行尾的文本。c+定位符修改光标到指定范围内的文本。常用的有:c0、c^修改光标左面的文本。c$修改光标右面的文本。cG修改光标所在行之后的所有行。第3章vi文本编辑器cb修改光标处前的字符直到词首。cw修改光标处的字符直到词尾。cl修改光标处的字符。注:以上命令前带数字n时,表示修改的范围扩大n倍。如:5cc为修改从光标所在行开始的5行,3cw为修改从光标开始的3个词。例3.1修改命令的用法:原文本行:Who’safraidofthebigwolf?执行命令cwbearEsc:Who’safraidofthebigbear?第3章vi文本编辑器移动光标:Who’safraidofthebigbear?执行命令Clitterlamb?Esc:Who’sa

1 / 54
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功