首页 > 嵌入式基础教程 > 基础知识

3.2常用编辑器3.2.1进入vi

Linux系统提供了一个完整的编辑器家族系列,如Ed、Ex、vi和emacs等。按功能它们可以分为两大类:行编辑器(Ed、Ex)和全屏幕编辑器(vi、emacs)。行编辑器每次只能对一行进行操作,使用起来很不方便。而全屏幕编辑器可以对整个屏幕进行编辑,用户编辑的文件直接显示在屏幕上,从而克服了行编辑那种不直观的操作方式,便于用户学习和使用,具有强大的功能。

vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,足以见其生命力之强,而强大的生命力是其强大的功能带来的。由于大多数读者在此之前都已经用惯了Windows平台上的编辑器,因此,在刚刚接触时总会或多或少不适应,但只要习惯之后,就能感受到它的方便与快捷。

1.vi的模式

vi有3种模式,分别为命令行模式、插入模式及命令行模式。下面具体介绍各模式的功能。

(1)命令行模式。

用户在用vi编辑文件时,最初进入的为一般模式。在该模式中用户可以通过上下移动光标进行“删除字符”或“整行删除”等操作,也可以进行“复制”、“粘贴”等操作,但无法编辑文字。

(2)插入模式。

只有在该模式下,用户才能进行文字编辑输入,用户按[ESC]可键回到命令行模式。

(3)底行模式。

在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。

2.vi的基本流程

(1)进入vi,即在命令行下键入“vihello”(文件名)。此时进入的是命令行模式,光标位于屏幕的上方,如图3.2所示。

图3.2进入vi命令行模式

(2)在命令行模式下键入i进入插入模式,如图3.3所示。可以看出,在屏幕底部显示有“插入”表示插入模式中的输入状态,在该模式下可以输入文字信息。

图3.3进入vi插入模式

(3)最后,在插入模式中,按“Esc”键,则当前模式转入命令行模式,并在底行行中输入“:wq”(存盘退出)进入底行模式,如图3.4所示。

这样,就完成了一个简单的vi操作流程:命令行模式→插入模式→底行模式。由于vi在不同的模式下有不同的操作功能,因此,读者一定要时刻注意屏幕最下方的提示,分清所在的模式。

图3.4进入vi底行模式

3.vi的各模式功能键

(1)命令行模式常见功能键如表3.1所示。

表3.1 vi命令行模式功能键

功能键

功能

i

切换到插入模式,在目前的光标所在处插入输入的文字,已存在的文字会向后退

a

切换到插入模式,并从目前光标所在位置的下一个位置开始输入文字

o

切换到插入模式,且从行首开始插入新的一行

[ctrl]+[b]

屏幕往“后”翻动一页

[ctrl]+[f]

屏幕往“前”翻动一页

[ctrl]+[u]

屏幕往“后”翻动半页

[ctrl]+[d]

屏幕往“前”翻动半页

0(数字0)

光标移到本行的开头

G

光标移动到文件的最后

nG

光标移动到第n行

$

移动到光标所在行的“行尾”

n<Enter>

光标向下移动n行

/name

在光标之后查找一个名为name的字符串

?name

在光标之前查找一个名为name的字符串

x

删除光标所在位置的一个字符

X

删除光标所在位置的前一个字符

dd

删除光标所在行

ndd

从光标所在行开始向下删除n行

yy

复制光标所在行

nyy

复制光标所在行开始的向下n行

p

将缓冲区内的字符粘贴到光标所在位置(与yy搭配)

u

恢复前一个动作

(2)插入模式的功能键只有一个,即按“Esc”键可回到命令行模式。

(3)底行模式常见功能键如表3.2所示。

表3.2 vi底行模式功能键

功能键

功能

:w

将编辑的文件保存到磁盘中

:q

退出vi(系统对做过修改的文件会给出提示)

:q!

强制退出vi(对修改过的文件不作保存)

:wq

存盘后退出

:w[filename]

另存一个名为filename的文件

:setnu

显示行号,设定之后,会在每一行的前面显示对应行号

:setnonu

取消行号显示

注意

vim是vi的升级版,与vi相比扩展了很多功能且保持与vi的90%相兼容,感兴趣的读者可以查看相关资料进行学习。

3.2.2初探emacs

正如前面所述,vi是一款功能非常强大的编辑器,它能够方便、快捷、高效地完成用户的任务,那么,在此再次向读者介绍另一款编辑器是否多此一举呢?答案是否定的。因为emacs不仅仅是一款功能强大的编译器,而且是一款融合编辑、编译、调试于一体的开发环境。虽然,它没有VisualStudio一样绚丽的界面,但是它可以在没有图形显示的终端环境下出色的工作,相信追求强大功能和工作效率的用户不会介意它朴素的界面的。emacs的使用和vi截然不同。在emacs里,没有类似于vi的3种“模式”。emacs只有一种模式,也就是编辑模式,而且它的命令全靠功能键完成。因此,功能键也就相当重要了。

但emacs却还使用一个不同vi的“模式”,它的“模式”是指各种辅助环境。比如,当编辑普通文本时,使用的是“文本模式(TextMode)”,而当写程序时,使用的则是如“c模式”、“shell模式”等。

下面,首先介绍一下emacs作为编辑器的使用方法,以帮助读者熟悉emacs的环境。

注意

emacs缩写注释:

C+<chr>表示按住Ctrl键的同时键入字符<chr>。因此,C+f就表示按住Ctrl键同时键入f。

M+<chr>表示当键入字符<chr>时同时按住Meta或Edit或Alt键(通常为Alt键)。

1.emacs安装

现在较新版本的Linux(如本书中所用的RedHatEnterprise4AS)的安装光盘中一般都自带有emacs的安装包,用户可以通过安装光盘进行安装(一般在第2张光盘中)。

2.启动emacs

安装完emacs之后,只需在命令行键入“emacs[文件名]”(若缺省文件名,也可在emacs编辑文件后另存时指定),也可从“编程”→“emacs”打开,如3.5图所示的就是从“编程”→“emacs”打开的emacs欢迎界面。

图3.5emacs欢迎界面

接着可单击任意键进入emacs的工作窗口,如图3.6所示。

从图中可见,emacs的工作窗口分为上下两个部分,上部为编辑窗口,底部为命令显示窗口,用户执行功能键的功能都会在底部有相应的显示,有时也需要用户在底部窗口输入相应的命令,如查找字符串等。

图3.6emacs的工作窗口

3.进入emacs

在进入emacs后,即可进行文件的编辑。由于emacs只有一种编辑模式,因此用户无需进行模式间的切换。下面介绍emacs中基本编辑功能键。

(1)移动光标。

虽然在emacs中可以使用“上”、“下”、“左”、“右”方向键来移动单个字符,但笔者还是建议读者学习其对应功能键,因为它们不仅能在所有类型的终端上工作,而且读者将会发现在熟练使用之后,输入这些Ctrl加字符会比按方向键快很多。表3.3列举了emacs中光标移动的常见功能键。

表3.3 emacs光标移动功能键

功能键

功能

功能键

功能

C-f

向前移动一个字符

M-b

向后移动一个单词

C-b

向后移动一个字符

C-a

移动到行首

C-p

移动到上一行

C-e

移动到行尾

C-n

移动到下一行

M-<(M加
“小于号”)

移动光标到整个文本的开头

M-f

向前移动一个单词

M->(M加
“大于号”)

移动光标到整个文本的末尾

(2)剪切和粘贴。

在emacs中可以使用“Delete”和“BackSpace”删除光标前后的字符,这和用户之前的习惯一致,在此就不赘述。以词和行为单位的剪切和粘贴功能键如表3.4所示。

表3.4 emacs剪切和粘贴

功能键

功能

功能键

功能

M-Delete

剪切光标前面的单词

M-k

剪切从光标位置到句尾的内容

M-d

剪切光标前面的单词

C-y

将缓冲区中的内容粘贴到光标所在的位置

C-k

剪切从光标位置到行尾的内容

C-xu

撤销操作(先操作C+x,接着再单击u)

注意

在emacs中对单个字符的操作是“删除”,而对词和句的操作是“剪切”,即保存在缓冲区中,以备后面的“粘贴”所用。

(3)复制文本。

在emacs中的复制文本包括两步:选择复制区域和粘贴文本。

选择复制区域的方法是:首先在复制起始点(A)按下“C-Space”或“C-@(C-Shift-2)”使它成为一个标识点,再将光标移至复制结束点(B),再按下“M-w”,就可将A与B之间的文本复制到系统的缓冲区中。再使用功能键C-y将其粘贴到指定位置。

(4)查找文本。

查找文本的功能键如表3.5所示。

表3.5 emacs查找文本功能键

功能键

功能

C-s

查找光标以后的内容,并在对话框的“I-search:”后输入要查找的字符串

C-r

查找光标以前的内容,并在对话框的“I-searchbackward:”后输入要查找的字符串

(5)保存文档。

在emacs中保存文档的功能键为“C+xC+s”(即先操作C+x,接着再操作C+s),这时,屏幕底下的对话框会出现如“Wrote/root/workplace/editor/why”的字样,如图3.7所示。

图3.7emacs中保存文档

另外,emacs在编辑时会为每个文件提供“自动保存(autosave)”的机制,而且自动保存的文件的文件名前后都有一个“#”,例如,编辑名为“hello.c”的文件,其自动保存的文件的文件名就叫“#hello.c#”。当用户正常地保存了文件后,emacs就会删除这个自动保存的文件。这个机制当系统发生异常时非常有用。

(6)退出文档。

在emacs中退出文档的功能键为“C-xC-c”。

4.emacs中的模式

emacs不仅仅是个强大的编译器,它还是一个集编译、调试等于一体的工作环境。在这里,读者将会了解到emacs作为编译器的最基本的概念,感兴趣的读者可以参考《LearningGNUEmacs,SecondEdition》一书进一步学习emacs。

在emacs中并没有像vi中那样的“命令行”、“编辑”模式,只有一种编辑模式。这里所说的“模式”是指emacs里的各种辅助环境。下面着重讲解C模式。

当我们启动某一文件时,emacs会判断文件的类型,从而自动选择相应的模式。当然,用户也可以手动启动各种模式,用功能键“M-x”,然后再输入模式的名称,如图3.8所示,这样就启动了“C模式”。

图3.8emacs中选择模式

在强大的C模式下,用户拥有“自动缩进”、“注释”、“预处理扩展”、“自动状态”等强大功能。在“C模式”下编辑代码时,可以用“Tab”键自动地将当前行的代码产生适当的缩进,使代码结构清晰、美观,它也可以指定缩进的规则。

源代码要有良好的可读性,必须要有良好的注释。在emacs中,用“M-”可以产生一条右缩进的注释。C模式下是“/*comments*/”形式的注释,C++模式下是“//comments”形式的注释。当用户高亮选定某段文本,然后操作“C-cC-c”,就可以注释该段文字。

emacs还可以使用C预处理其运行代码的一部分,以便让程序员检测宏、条件编译以及include语句的效果。

5.emacs编译调试程序

emacs可以让程序员在emacs环境里编译自己的软件。此时,编辑器把编译器的输出和程序代码连接起来。程序员可以像使用Windows的其他开发工具一样,将出错位置和代码定位联系起来。

emacs默认的编辑命令是对一个make(在本章3.6节中会详细介绍)的调用。用户可以打开“tool”下的“Compile”进行查看。emacs可以支持大量的工程项目,以方便程序员的开发。

另外,emacs为gdb调试器提供了一个功能齐全的接口。在emacs中使用gdb的时候,程序员不仅能够获得gdb的全部标准特性,还可以获得通过接口增强而产生的其他性能。

换一批

延伸阅读

[行业资讯] Nvidia存在游戏GPU库存问题,OEM向NVIDIA退还30万颗GPU芯片

Nvidia存在游戏GPU库存问题,OEM向NVIDIA退还30万颗GPU芯片

目前台湾的报道显示Nvidia存在游戏GPU库存问题。外媒昨天报道了这个问题,并称该渠道库存过剩是造成GPU新游戏延迟的主要原因。据报道,一家亚洲顶级OEM合作伙伴已向Nvidia返还30万颗GPU。 ......

关键字:芯片 GPU Nvidia

[行业资讯] 郭台铭:中国可以做出自己的芯片和操作系统,但路要慢慢走

郭台铭:中国可以做出自己的芯片和操作系统,但路要慢慢走

鸿海董事长郭台铭表示,中国可以做出自己的芯片和操作系统。他认为,今年富士康进行园区改造,深圳龙华产业园区预计5年改造完成。 ......

关键字:芯片 操作系统 机器人

[行业资讯] NVIDIA和AMD争夺Intel芯片市场

NVIDIA和AMD争夺Intel芯片市场

一季度的财报显示,NVIDIA和AMD的营收均取得了高速增长,NVIDIA的服务器业务收入、AMD的PC处理器营收高速增长是原因之一,很显然这两个领域都是Intel占优势的领域,无疑它们正给Intel带来巨大的压力。 ......

关键字:芯片 Intel NVIDIA AMD

[行业资讯] 在路上!我国自主智能终端操作系统日趋成熟

在路上!我国自主智能终端操作系统日趋成熟

长期以来,智能终端操作系统基础软件一直是我国短板领域。随着智能手机的普及,研发自主、可控、成熟的智能终端操作系统成为迫切需求。在国家大力支持和行业的共同努力下,近年来,我国涌现了一批以syberos为代表的自主智能终端操作系统填补空白,自主......

关键字:智能终端 操作系统 芯片

[行业资讯] 美审查中美AI合作企业:五分之一业务在中国的NVIDIA麻烦大了

美审查中美AI合作企业:五分之一业务在中国的NVIDIA麻烦大了

随着贸易战的升级,中美科技企业之间的关系变得极为微妙。除了中兴、华为,美国在半导体技术领域对中国的围追堵截仍在继续升温,波及范围也越来越广。据CNBC报道,美国政府正在考虑对中美公司在AI人工智能领域的非正式合作展开调查,NVIDIA首当其......

关键字:中美贸易战 AI人工智能 NVIDIA

[趣科技] 可以为手机充电的牛仔裤

可以为手机充电的牛仔裤

但是如果有一条神奇的既可以容纳你的手机,同时还可以给你的手机充电,让你出门在外,从此无忧,你会去购买这款神奇的牛仔裤吗?......

关键字:充电

[真心话] 明年内存铁定要降价!中国三大存储公司将量产内存、闪存

明年内存铁定要降价!中国三大存储公司将量产内存、闪存

对于关注国产内存、闪存的用户来说,从明年开始将会有实质性的成果,因为长江存储、晋华集成电路以及合肥Innotro存储都将量产。据台湾电子时报报道称,2019年,中国大陆地区将有三家存储芯片厂竣工并投入量产。目前,......

关键字:内存 存储
条评论

我 要 评 论

网友评论

大家都爱看

  • 扇出型晶圆级封装的优势和挑战!

    我们有能力创造一些能保持前代性能并且更好更小的电子设备,例如今天的可穿戴设备、智能手机或平板电脑,这是由于很多因素超过摩尔定律而快速发展,从而能够从底层的嵌入组件发展到今天把它们封…

    2018-03-29
  • Xilinx推出革命性的新型自适应计算产品

    自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX)),近日宣布推出一款超越FPGA功能的突破性新型产品,名为ACAP(Adaptive Compute Acceleration Platform,自适应计算加速…

    2018-03-20
  • 赛普拉斯为树莓派3 B+ IoT单板计算机提供强大稳定的无

    先进嵌入式系统解决方案的领导者赛普拉斯(纳斯达克代码:CY)近日宣布其Wi-Fi&#174;和蓝牙&#174;combo解决方案为全新的树莓派 3 B+(Raspberry Pi 3Model B+)IoT单板计算机提供强大稳定的无线连接…

    2018-03-20
  • 观看直播领红包,SEED-A10加速卡助力人工智能

    随着云服务器、云计算的发展,大家对硬件加速的需求越来越多,但是随着设备功耗的上升、性能需求越来越高,常规加速设备以及开始不能满足需求,因此FPGA逐渐在硬件加速中找到了自己的位置,而艾…

    2018-03-19
  • 特朗普:博通不得以任何形式收购高通

    白宫周一(3月12日)晚发出声明,川普(特朗普)总统出于“国家安全”考量、禁止新加坡博通公司(Broadcom)收购美国高通公司(Qualcomm)。

    2018-03-14