当前位置:文档之家› 鸟哥的Linux 私房菜-- vim 程式编辑器

鸟哥的Linux 私房菜-- vim 程式编辑器

鸟哥的Linux 私房菜-- vim 程式编辑器
鸟哥的Linux 私房菜-- vim 程式编辑器

鸟哥的 Linux 私房菜

为取得较佳浏览结果,请爱用firefox 浏览本网页

| 繁体主站 | 简体主站 | 基础篇 | 伺服器 | 企业应用 | 桌面应用 | 安全管理 | 讨论板 | 酷学园 | 书籍戡误 | 鸟哥我 | 昆山资传 |

第十章、vim 程式编辑器

切换解析度为800x600

最近更新日期:2009/08/20

系统管理员的重要工作就是得要修改与设定某些重要软体的设定档,因此至少得要学会一种以上的文字介面的文书编辑器。在所有的Linux distributions 上头都会有的一套文书编辑器就是vi ,而且很多软体预设也是使用vi 做为他们编辑的介面,因此鸟哥建议您务必要学会使用vi 这个正规的文书编辑器。此外,vim 是进阶版的vi , vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program 等程式编辑功能, 你可以将vim 视为一种程式编辑器!鸟哥也是用vim 编辑鸟站的网页文章呢!^_^

1. vi与vim

1.1 为何要学vim

2. vi的使用

2.1 简易执行范例

2.2 按键说明

2.3 一个案例的练习

2.4 vim的暂存档、救援回复与开启时的警告讯息

3. vim的额外功能

3.1 区块选择(Visual Block)

3.2 多档案编辑

3.3 多视窗功能

3.4 vim环境设定与记录: ~/.vimrc, ~/.viminfo

3.5 vim常用指令示意图

4. 其他vim使用注意事项

4.1 中文编码的问题

4.2 DOS与Linux的断行字元:dos2unix , unix2dos

4.3 语系编码转换:iconv

5. 重点回顾

6. 本章习题

7. 参考资料与延伸阅读

8. 针对本文的建议:https://www.doczj.com/doc/f514876516.html,/viewtopic.php ?t=23883

vi 与vim

由前面一路走来,我们一直建议使用文字模式来处理Linux的系统设定问题,因为不但可以让你比较容

易了解到Linux的运作状况,也比较容易了解整个设定的基本精神,更能『保证』你的修改可以顺利的

被运作。所以,在Linux的系统中使用文字编辑器来编辑你的Linux参数设定档,可是一件很重要的事情呦!也因此呢,系统管理员至少应该要熟悉一种文书处理器的!

Tips:

这里要再次的强调,不同的Linux distribution各有其不同的附加 ?软体,例如Red

Hat Enterprise Linux与Fedora的ntsysv与setup等,而SuSE则有YAST管理工具等等,

因此,如果你只会使用此种类型的软体来控制你的Linux系统时,当接管不同的

Linux distributions时,呵呵!那可就苦恼了!

在Linux 的世界中,绝大部分的设定档都是以ASCII 的纯文字形态存在,因此利用简单的文字编辑软体

就能够修改设定了!与微软的Windows 系统不同的是,如果你用惯了Microsoft Word 或Corel Wordperfect

的话,那么除了X window 里面的图形介面编辑程式(如xemacs )用起来尚可应付外,在Linux 的文字模式

下,会觉得文书编辑程式都没有视窗介面来的直观与方便。

Tips:

什么是纯文字档?在第零章里面的资料表示方式有较多说明,请

自行查阅。ASCII就是其中一种广为使用的文字编码系统,在ASCII系统中的图

示与代码可以参考https://www.doczj.com/doc/f514876516.html,/wiki/ASCII 呢!那么Linux在文字介面下的文书编辑器有哪些呢?其实有非常多喔!常常听到的就有: emacs , pico , nano , joe ,与vim 等等( 注1 )。既然有这么多文字介面的文书编辑器,那么我们为什么一定要学vi啊?还有那个vim是做啥用的?底下就来谈一谈先!为何要学vim

文书编辑器那么多,我们之前在第五章也曾经介绍过那简单好用的 nano ,既然已经学会了nano ,干

嘛鸟哥还一直要你学这不是很友善的vi呢?其实是有原因的啦!因为:

所有的Unix Like 系统都会内建vi 文书编辑器,其他的文书编辑器则不一定会存在;

其实档案记录的就是0与1 ,而我们透过编码系统来将这些0

与1转成我们认识的文字就是了。原文

其實檔案記錄的就是0 與1 ,而我們透過編碼系統來將這些0 與1 轉成我們認識的文字就是了。

提供更好的翻译建议

很多个别软体的编辑介面都会主动呼叫vi (例如未来会谈到的crontab , visudo , edquota等指令);

vim 具有程式编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程式设计;

因为程式简单,编辑速度相当快速。

其实重点是上述的第二点,因为有太多Linux 上面的指令都预设使用vi 作为资料编辑的介面,所以你必须、一定要学会vi ,否则很多指令你根本就无法操作呢!这样说,有刺激到你务必要学会vi 的热情了吗?^_^

那么什么是vim呢?其实你可以将vim视作vi的进阶版本,vim可以用颜色或底线等方式来显示一些特殊的资讯。举例来说,当你使用vim去编辑一个C程式语言的档案,或者是我们后续会谈到的 shell script程式时,vim会依据档案的副档名或者是档案内的开头资讯,判断该档案的内容而自动的呼叫该程式的语法判断式,再以颜色来显示程式码与一般资讯。也就是说,这个vim是个『程式编辑器』啦!甚至一些Linux基础设定档内的语法,都能够用vim来检查呢!例如我们在第八章谈到的/etc/fstab这个档案的内容。

简单的来说, vi是老式的文书处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim 则可以说是程式开发者的一项很好用的工具,就连vim的官方网站( https://www.doczj.com/doc/f514876516.html, )自己也说vim 是一个『程式开发工具』而不是文书处理软体~^_^。因为vim里面加入了很多额外的功能,例如支援正规表示法的搜寻架构、多档案编辑、区块复制等等。这对于我们在Linux上面进行一些设定档的修订工作时,是很棒的一项功能呢!

Tips:

什么时候会使用到vim呢?其实鸟哥的整个网站都是在vim的环境下一字一

字的建立起来的喔!早期鸟哥使用网页制作软体在编写网页,但是老是发

现网页编辑软体都不怎么友善,尤其是写到PHP方面的程式码时。后来就

干脆不使用所见即所得的编辑软体,直接使用vim ,然后标签(tag)也都自行

用键盘输入!这样整个档案也比较干净!所以说,鸟哥我是很喜欢vim的

啦!^_^

底下鸟哥会先就简单的vi 做个介绍,然后再跟大家报告一下vim 的额外功能与用法呢!

vi 的使用

基本上vi共分为三种模式,分别是『一般模式』、『编辑模式』与『指令列命令模式』。这三种模式的作用分别是:

一般模式:

以vi打开一个档案就直接进入一般模式了(这是预设的模式)。在这个模式中,你可以使用『上下左右』按键来移动游标,你可以使用『删除字元』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件资料。

编辑模式:

在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的!要等到你按下『i,I,o,O,a,A,r,R』等任何一个字母之后才会进入编辑模式。注意了!通常在Linux中,按下这些按键时,在画面的左下方会出现『INSERT或REPLACE』的字样,此时才可以进行编辑。而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。

指令列命令模式:

在一般模式当中,输入『 : / ?』三个中的任何一个按钮,就可以将游标移动到最底下那一行。在这个模式当中,可以提供你『搜寻资料』的动作,而读取、存档、大量取代字元、离开vi 、显示行号等等的动作则是在此模式中达成的!

简单的说,我们可以将这三个模式想成底下的图示来表示:

图2.1、vi 三种模式的相互关系

注意到上面的图示,你会发现一般模式可与编辑模式及指令列模式切换,但编辑模式与指令列模式之间不可互相切换喔!这非常重要啦!闲话不多说,我们底下以一个简单的例子来进行说明吧!

简易执行范例

如果你想要使用vi 来建立一个名为test.txt 的档案时,你可以这样做:

1. 使用vi 进入一般模式;

[r o o t@w w w~]#v i t e s t.t x t

直接输入『 vi 档名』就能够进入vi 的一般模式了。请注意,记得vi 后面一定要加档名,不管该档名存在与否!整个画面主要分为两部份,上半部与最底下一行两者可以视为独立的。如下图

2.1.1 所示,图中那个虚线是不存在的, 鸟哥用来说明而已啦!上半部显示的是档案的实际内

容,最底下一行则是状态显示列(如下图的[New File]资讯), 或者是命令下达列喔!

图2.1.1、用vi 开启一个新档案

如果你开启的档案是旧档(已经存在的档案),则可能会出现如下的资讯:

图2.1.2、用vi 开启一个旧档案

如上图2.1.2 所示,箭头所指的那个『"/etc/man.config" 141L, 4617C』代表的是『档名

为/etc/man.conf, 档案内有141 行以及具有4617 个字元』的意思!那一行的内容并不是在档案内,而是vi 显示一些资讯的地方喔!此时是在一般模式的环境下啦。接下来开始来输入吧!

2. 按下i进入编辑模式,开始编辑文字

在一般模式之中,只要按下i, o, a等字元就可以进入编辑模式了!在编辑模式当中,你可以发现在左下角状态列中会出现–INSERT-的字样,那就是可以输入任意字元的提示啰!这个时候,键盘上除了[Esc]这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑啰!

图2.1.3、开始用vi 来进行编辑

Tips:

在vi里面, [tab]这个按钮所得到的结果与空白字元所得到的结果是不一

样的,特别强调一下!

3. 按下[ESC]按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下[Esc]这个按钮即可!马上你就会发现画面左下角的– INSERT –不见了!

4. 在一般模式中按下:wq储存后离开vi

OK,我们要存档了,存档并离开的指令很简单,输入『:wq』即可存档离开!(注意了,按下:该游标就会移动到最底下一行去!)这时你在提示字元后面输入『 ls -l 』即可看到我们刚刚建立的test.txt档案啦!整个图示有点像底下这样:

图2.1.4、储存并离开vi 环境

如此一来,你的档案test.txt就已经建立起来啰!需要注意的是,如果你的档案权限不对,例如为-r--r--r--时,那么可能会无法写入,此时可以使用『强制写入』的方式吗?可以!使用『:wq!』多加一

个惊叹号即可!不过,需要特别注意呦!那个是在『你的权限可以改变』的情况下才能成立的!关于权限的概念,请自行回去翻一下第六章的内容吧!

按键说明

除了 ?

上面简易范例的i, [Esc], :wq之外,其实vim还有非常多的按键可以使用喔!在介绍之前还是要再次强调, vim的三种模式只有一般模式可以与编辑、指令列模式切换,编辑模式与指令列模式之间并不能切换的!这点在图2.1里面有介绍到,注意去看看喔!底下就来谈谈vim软体中会用到的按键功能吧!

第一部份:一般模式可用的按钮说明,游标移动、复制贴上、搜寻取代等

移动游标的方法

h或向左方向键(←)游标向左移动一个字元

j或向下方向键(↓)游标向下移动一个字元

k或向上方向键(↑)游标向上移动一个字元

l或向右方向键(→)游标向右移动一个字元

如果你将右手放在键盘上的话,你会发现h j k l 是排列在一起的,因此可以使用这四个

按钮来移动游标。如果想要进行多次移动的话,例如向下移动30行,可以使用"30j"或"30↓"的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!

[C t r l]+[f]萤幕『向下』移动一页,相当于[P a g e D o w n]按键(常用)

[C t r l]+[b]萤幕『向上』移动一页,相当于[P a g e U p]按键(常用)

[C t r l]+[d]萤幕『向下』移动半页

[C t r l]+[u]萤幕『向上』移动半页

+游标移动到非空白字元的下一列

-游标移动到非空白字元的上一列

n那个n 表示『数字』,例如20 。按下数字后再按空白键,游标会向右移动这一行的n个字元。例如20则游标会向后面移动20个字元距离。

0或功能键[H o m e]这是数字『 0』:移动到这一行的最前面字元处(常用) $或功能键[E n d]移动到这一行的最后面字元处(常用)

H游标移动到这个萤幕的最上方那一行的第一个字元

M游标移动到这个萤幕的中央那一行的第一个字元

L游标移动到这个萤幕的最下方那一行的第一个字元

G移动到这个档案的最后一行(常用)

n G n为数字。移动到这个档案的第n行。例如20G则会移动到这个档案的第20行(可配合:s e t n u)

g g移动到这个档案的第一行,相当于1G啊!(常用) nn为数字。游标向下移动n行(常用)

搜寻与取代

/w o r d 向游标之下寻找一个名称为w o r d的字串。例如要在档案内搜寻v b i r d这个字串,就输入/v b i r d即可!(常用)

?w o r d向游标之上寻找一个字串名称为w o r d的字串。

n 这个n是英文按键。代表『重复前一个搜寻的动作』。举例来说,如果刚刚我们执行/v b i r d去向下搜寻v b i r d这个字串,则按下n后,会向下继续搜寻下一个名称为v b i r d的字串。如果是执行?v b i r d的话,那么按下n则会向上继续搜寻名称为v b i r d的字串!

N 这个N是英文按键。与n刚好相反,为『反向』进行前一个搜寻动作。例如/v b i r d后,按下N则表示『向上』搜寻v b i r d。

使用/w o r d配合n及N是非常有帮助的!可以让你重复的找到一些你搜寻的关键字!

:n1,n2s/w o r d1/w o r d2/g n1与n2为数字。在第n1与n2行之间寻找w o r d1这个字串,并将该字串取代为w o r d2!举例来说,在100到200行之间搜寻v b i r d并取代为V B I R D则:

『:100,200s/v b i r d/V B I R D/g』。(常用)

:1,$s/w o r d1/w o r d2/g 从第一行到最后一行寻找w o r d1字串,并将该字串取代为w o r d2!(常用)

:1,$s/w o r d1/w o r d2/g c 从第一行到最后一行寻找w o r d1字串,并将该字串取代为

w o r d2!且在取代前显示提示字元给使用者确认(c o n f i r m)是否需要取代!(常用)

删除、复制与贴上

x,X 在一行字当中,x为向后删除一个字元(相当于[d e l]按键),X为向前删除一个字元(相当于[b a c k s p a c e]亦即是倒退键)(常用)

n x n为数字,连续向后删除n个字元。举例来说,我要连续删除10个字元, 『10x』。

d d删除游标所在的那一整列(常用)

n d d n为数字。删除游标所在的向下n列,例如20d d则是删除20列(常用)

d1G删除游标所在到第一行的所有资料

d G删除游标所在到最后一行的所有资料

d$删除游标所在处,到该行的最后一个字元

d0那个是数字的0,删除游标所在处,到该行的最前面一个字元

y y复制游标所在的那一行(常用)

n y y n为数字。复制游标所在的向下n列,例如20y y则是复制20列(常用)

y1G复制游标所在列到第一列的所有资料

y G复制游标所在列到最后一列的所有资料

y0复制游标所在的那个字元到该行行首的所有资料y$复制游标所在的那个字元到该行行尾的所有资料

p,P p为将已复制的资料在游标下一行贴上,P则为贴在游标上一行!举例来说,我目前游标在第20行,且已经复制了10行资料。则按下p后,那10行资料会贴在原本的20行之后,亦即由21行开始贴。但如果是按下P呢?那么原本的第20行会被推到变成30行。(常用)

J将游标所在列与下一列的资料结合成同一列

c重复删除多个资料,例如向下删除10行,[10c j]

u复原前一个动作。(常用)

[C t r l]+r重做上一个动作。(常用)

这个u与[C t r l]+r是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!

.不要怀疑!这就是小数点!意思是重复前一个动作的意

思。如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了!(常用)

第二部份:一般模式切换到编辑模式的可用的按钮说明

进入插入或取代的编辑模式

i,I 进入插入模式(I n s e r t m o d e):

i为『从目前游标所在处插入』, I为『在目前所在行的第一个非空白字元处开始插入』。(常用)

a,A 进入插入模式(I n s e r t m o d e):

a为『从目前游标所在的下一个字元处开始插入』, A为『从游标所在行的最后一个字元处开始插入』。(常用)

o,O 进入插入模式(I n s e r t m o d e):

这是英文字母o的大小写。o为『在目前游标所在的下一行处插入新的一行』; O为在目前游标所在处的上一行插入新的一行!(常用)

r,R 进入取代模式(R e p l a c e m o d e):

r只会取代游标所在的那一个字元一次;R会一直取代游标所在的文字,直到按下E S C为止;(常用)

上面这些按键中,在v i画面的左下角处会出现『--I N S E R T--』或『--R E P L A C E--』的字样。由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字元时, 一定要在左下角处看到I N S E R T或R E P L A C E才能输入喔!

[E s c]退出编辑模式,回到一般模式中(常用)

第三部份:一般模式切换到指令列模式的可用的按钮说明

指令列的储存、离开等指令

:w将编辑的资料写入硬碟档案中(常用)

:w!若档案属性为『唯读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!

:q离开v i(常用)

:q!若曾修改过档案,又不想储存,使用!为强制离开不储存档案。

注意一下啊,那个惊叹号(!)在v i当中,常常具有『强制』的意思~:w q储存后离开,若为:w q!则为强制储存后离开(常用)

Z Z 这是大写的Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!

:w[f i l e n a m e]将编辑的资料储存成另一个档案(类似另存新档)

:r[f i l e n a m e]在编辑的资料中,读入另一个档案的资料。亦即将『f i l e n a m e』 这个档案内容加到游标所在行后面

:n1,n2w[f i l e n a m e]将n1到n2的内容储存成f i l e n a m e这个档案。

:!c o m m a n d 暂时离开v i到指令列模式下执行c o m m a n d的显示结果!例如

『:!l s/h o m e』即可在v i当中察看/h o m e底下以l s输出的档案资讯!

v i m环境的变更

:s e t n u显示行号,设定之后,会在每一行的字首显示该行的行号

:s e t n o n u与s e t n u相反,为取消行号!

特别注意,在vi中,『数字』是很有意义的!数字通常代表重复做几次的意思!也有可能是代表去到第几个什么什么的意思。举例来说,要删除50行,则是用『50dd』对吧!数字加在动作之前~那我要向下移动20行呢?那就是『20j』或者是『20↓』即可。

OK!会这些指令就已经很厉害了,因为常用到的指令也只有不到一半!通常vi 的指令除了上面鸟哥注明的常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的萤幕墙上, 一有疑问可以马上的查询呦!这也是当初鸟哥使用vim 的方法啦!

一个案例练习

来来来!赶紧测试一下你是否已经熟悉vi这个指令呢?请依照底下的需求进行指令动作。(底下的操作为使用CentOS 5.2中的man.config来做练习的,该档案你可以在这里下载:

https://www.doczj.com/doc/f514876516.html,/linux_basic/0310vi/man.config。)看看你的显示结果与鸟哥的结果是否相同啊?

1. 请在/tmp 这个目录下建立一个名为vitest 的目录;

2. 进入vitest 这个目录当中;

3. 将/etc/man.config复制到本目录底下(或由上述的连结下载man.config档案);

4. 使用vi 开启本目录下的man.config 这个档案;

5. 在vi 中设定一下行号;

6. 移动到第58 行,向右移动40 个字元,请问你看到的双引号内是什么目录?

7. 移动到第一行,并且向下搜寻一下『 bzip2 』这个字串,请问他在第几行?

8. 接着下来,我要将50 到100 行之间的『小写man 字串』改为『大写MAN 字串』,并且一个一

个挑选是否需要修改,?如何下达指令?如果在挑选过程中一直按『y』, 结果会在最后一行出现改变了几个man 呢?

9. 修改完之后,突然反悔了,要全部复原,有哪些方法?

10. 我要复制65 到73 这九行的内容(含有MANPATH_MAP),并且贴到最后一行之后;

11. 21 到42 行之间的开头为# 符号的注解资料我不要了,要如何删除?

12. 将这个档案另存成一个man.test.config 的档名;

13. 去到第27 行,并且删除15 个字元,结果出现的第一个单字是什么?

14. 在第一行新增一行,该行内容输入『I am a student...』;

15. 储存后离开吧!

整个步骤可以如下显示:

1.『m k d i r/t m p/v i t e s t』

2.『c d/t m p/v i t e s t』

3.『c p/e t c/m a n.c o n f i g.』

4.『v i m a n.c o n f i g』

5.『:s e t n u』然后你会在画面中看到左侧出现数字即为行号。

6.先按下『58G』再按下『40→』会看到『/d i r/b i n/f o o』这个字样在双引号内;

7.先执行『1G』或『g g』后,直接输入『/b z i p2』,则会去到第118行才对!

8.直接下达『 :50,100s/m a n/M A N/g c』即可!若一直按『y』最终会出现『在23行内置

换25个字串』的说明。

9.(1)简单的方法可以一直按『 u』回复到原始状态,(2)使用不储存离开『 :q!』之

后,再重新读取一次该档案;

10.『65G』 然后再『 9y y』之后最后一行会出现『复制九行』之类的说明字样。按下『

G』到最后一行,再给他『 p』贴上九行!

11.因为21~4222行,因此『 21G』→『 22d d』就能删除22行,此时你会发现游标所

在21行的地方变成M A N P A T H开头啰, 注解的#符号那几行都被删除了。

12.『 :w m a n.t e s t.c o n f i g』,你会发现最后一行出现"m a n.t e s t.c o n f i g"[N e w]..的字

样。

13.『27G』 之后,再给他『 15x』即可删除15个字元,出现『 y o u』的字样;

14.先『 1G』去到第一行,然后按下大写的『 O』便新增一行且在插入模式;开始输入

『I a m a s t u d e n t...』后, 按下[E s c]回到一般模式等待后续工作;

15.『:w q』

如果你的结果都可以查的到,那么vi 的使用上面应该没有太大的问题啦!剩下的问题会是在…打字练习…。

vim 的暂存档、救援回复与开启时的警告讯息

在目前主要的编辑软体都会有『回复』的功能,亦即当你的系统因为某些原因而导致类似当机的情况时, 还可以透过某些特别的机制来让你将之前未储存的资料『救』回来!这就是鸟哥这里所谓的『回复』功能啦!那么vim 有没有回复功能呢?有的!vim 就是透过『暂存档』来救援的啦!

当我们在使用vim编辑时, vim会在与被编辑的档案的目录下,再建立一个名为.filename.swp的档案。比如说我们在上一个小节谈到的编辑/tmp/vitest/man.config这个档案时, vim会主动的建

立/tmp/vitest/.man.config.swp的暂存档,你对man.config做的动作就会被记录到这个.man.config.swp当中喔!如果你的系统因为某些原因断线了,导致你编辑的档案还没有储存,这个时候.man.config.swp就能够发会救援的功能了!我们来测试一下吧!底下的练习有些部分的指令我们尚未谈到,没关系,你先照着做,后续再回来了解啰!

 

[r o o t@w w w~]#c d/t m p/v i t e s t

[r o o t@w w w v i t e s t]#v i m m a n.c o n f i g

#此时会进入到v i m的画面,请在v i m的一般模式下按下『 [c t r l]-z』的组合键

[1]+S t o p p e d v i m m a n.c o n f i g<==按下[c t r l]-z会告诉你这个讯息

当我们在vim的一般模式下按下[ctrl]-z的组合按键时,你的vim会被丢到背景去执行!这部份的功能

我们会在第十七章的程序管理当中谈到,你这里先知道一下即可。回到命令提示字元后,接下来我

们来模拟将vim的工作不正常的中断吧!

[r o o t@w w w v i t e s t]#l s-a l

t o t a l48

d r w x r-x r-x2r o o t r o o t4096J a n1214:48.

d r w x r w x r w t7r o o t r o o t4096J a n1213:26..

-r w-r--r--1r o o t r o o t4101J a n1213:55m a n.c o n f i g

-r w-r--r--1r o o t r o o t4096J a n1214:48.m a n.c o n f i g.s w p<==就是他,暂存档

-r w-r--r--1r o o t r o o t4101J a n1213:43m a n.t e s t.c o n f i g

[r o o t@w w w v i t e s t]#k i l l-9%1<==这里模拟断线停止v i m工作

[r o o t@w w w v i t e s t]#l s-a l.m a n.c o n f i g.s w p

-r w-r--r--1r o o t r o o t4096J a n1214:48.m a n.c o n f i g.s w p<==暂存档还是会存在!

那个kill可以模拟将系统的vim工作删除的情况,你可以假装当机了啦! 由于vim的工作被不正常的

中断,导致暂存档无法藉由正常流程来结束,所以暂存档就不会消失,而继续保留下来。此时如果

你继续编辑那个man.config ,会出现什么情况呢?会出现如下所示的状态喔:

[r o o t@w w w v i t e s t]#v i m m a n.c o n f i g

E325:A T T E N T I O N<==错误代码

F o u n d a s w a p f i l e b y t h e n a m e".m a n.c o n f i g.s w p"<==底下数行说明有暂存档的存在

o w n e d b y:r o o t d a t e d:M o n J a n1214:48:242009

f i l e n a m e:/t m p/v i t e s t/m a n.c o n f i g<==这个暂存档属于哪个实际的档案?

m o d i f i e d:n o

u s e r n a m e:r o o t h o s t n a m e:w w w.v b i r d.t s a i

p r o c e s s I D:11539

W h i l e o p e n i n g f i l e"m a n.c o n f i g"

d a t

e d:M o n J a n1213:55:072009

底下说明可能发生这个错误的两个主要原因与解决方案!

(1)A n o t h e r p r o g r a m m a y b e e d i t i n g t h e s a m e f i l e.

I f t h i s i s t h e c a s e,b e c a r e f u l n o t t o e n d u p w i t h t w o

d i f f

e r e n t i n s t a n c e s o

f t h e s a m e f i l e w h e n m a k i n

g c

h a n g e s.

Q u i t,o r c o n t i n u e w i t h c a u t i o n.

(2)A n e d i t s e s s i o n f o r t h i s f i l e c r a s h e d.

I f t h i s i s t h e c a s e,u s e":r e c o v e r"o r"v i m-r m a n.c o n f i g"

t o r e c o v e r t h e c h a n g e s(s e e":h e l p r e c o v e r y").

I f y o u d i d t h i s a l r e a d y,d e l e t e t h e s w a p f i l e".m a n.c o n f i g.s w p"

t o a v o i d t h i s m e s s a g e.

S w a p f i l e".m a n.c o n f i g.s w p"a l r e a d y e x i s t s!底下说明你可进行的动作

[O]p e n R e a d-O n l y,(E)d i t a n y w a y,(R)e c o v e r,(D)e l e t e i t,(Q)u i t,(A)b o r t:

由于暂存档存在的关系,因此vim 会主动的判断你的这个档案可能有些问题,在上面的图示中vim

提示两点主要的问题与解决方案,分别是这样的:

问题一:可能有其他人或程式同时在编辑这个档案: 由于Linux是多人多工的环境,因此很可

能有很多人同时在编辑同一个档案。如果在多人共同编辑的情况下,万一大家同时储存,那

么这个档案的内容将会变的乱七八糟!为了避免这个问题,因此vim会出现这个警告视窗!解

决的方法则是:

找到另外那个程式或人员,请他将该vim 的工作结束,然后你再继续处理。

如果你只是要看该档案的内容并不会有任何修改编辑的行为,那么可以选择开启成为唯

读(O)档案,亦即上述画面反白部分输入英文『 o 』即可,其实就是[O ]pen Read-Only的

选项啦!

问题二:在前一个vim的环境中,可能因为某些不知名原因导致vim中断(crashed): 这就是常见

的不正常结束vim产生的后果。解决方案依据不同的情况而不同喔!常见的处理方法为:如果你之前的vim处理动作尚未储存,此时你应该要按下『R』,亦即使用(R)ecover的项

目,此时vim会载入.man.config.swp的内容,让你自己来决定要不要储存!这样就能够救

回来你之前未储存的工作。不过那个.man.config.swp并不会在你结束vim后自动删除,所

以你离开vim后还得要自行删除.man.config.swp才能避免每次打开这个档案都会出现这样

的警告!

如果你确定这个暂存档是没有用的,那么你可以直接按下『D』删除掉这个暂存档,亦

即(D)elete it 这个项目即可。此时vim 会载入man.config ,并且将旧的.man.config.swp 删除

后,建立这次会使用的新的.man.config.swp 喔!

至于这个发现暂存档警告讯息的画面中,有出现六个可用按钮,各按钮的说明如下:[O]pen Read-Only:打开此档案成为唯读档,可以用在你只是想要查阅该档案内容并不想要进

 

行编辑行为时。一般来说,在上课时,如果你是登入到同学的电脑去看他的设定档,结果发

现其实同学他自己也在编辑时,可以使用这个模式;

(E)dit anyway:还是用正常的方式打开你要编辑的那个档案,并不会载入暂存档的内容。不过

很容易出现两个使用者互相改变对方的档案等问题!不好不好!

(R)ecover:就是载入暂存档的内容,用在你要救回之前未储存的工作。不过当你救回来并且储存离开vim后,还是要手动自行删除那个暂存档喔!

(D)elete it:你确定那个暂存档是无用的!那么开启档案前会先将这个暂存档删除!这个动作

其实是比较常做的!因为你可能不确定这个暂存档是怎么来的,所以就删除掉他吧!哈哈!

(Q)uit:按下q就离开vim ,不会进行任何动作回到命令提示字元。

(A)bort:忽略这个编辑行为,感觉上与quit非常类似!也会送你回到命令提示字元就是啰!vim 的额外功能

其实,目前大部分的distributions 都以vim 取代vi 的功能了!如果你使用vi 后,却看到画面的右下角有显示目前游标所在的行列号码,那么你的vi 已经被vim 所取代啰~ 为什么要用vim 呢?因为vim 具有颜色显示的功能,并且还支援许多的程式语法(syntax), 因此,当你使用vim 编辑程式时( 不论是C 语言,还是shell script ), 我们的vim 将可帮你直接进行『程式除错(debug)』的功能!真的很不赖吧!^_^

如果你在文字模式下,输入alias 时,出现这样的画面:

[r o o t@w w w~]#a l i a s

....其他省略....

a l i a s v i='v i m'<==重点在这行啊!

这表示当你使用vi这个指令时,其实就是执行vim啦!如果你没有这一行,那么你就必须要使用vim filename来启动vim啰!基本上, vim的一般用法与vi完全一模一样~没有不同啦!那么我们就来看看vim 的画面是怎样啰!假设我想要编辑/etc/man.config ,则输入『vim /etc/man.config』

图3.0.1、 vim 的图示示意

上面是vim 的画面示意图,在这个画面中有几点特色要说明喔:

1. 由于man.config 是系统规划的设定档,因此vim 会进行语法检验,所以你会看到画面中内部主要为

深蓝色, 且深蓝色那一行是以注解符号(#) 为开头;

2. 最底下一行的左边显示该档案的属性,包括141行与4617 字元;

3. 最底下一行的右边出现的1,1 表示游标所在为第一行, 第一个字元位置之意(请看一下上图中的游标

所在);

所以,如果你向下移动到其他位置时,出现的非注解的资料就会有点像这样:

图3.0.2、 vim 的图示示意

看到了喔!除了注解之外,其他的行就会有特别的颜色显示呢!可以避免你打错字啊!而且, 最右下角的30% 代表目前这个画面占整体档案的30% 之意!这样了乎?

区块选择(Visual Block)

刚刚我们提到的简单的vi 操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢?举例来说,像底下这种格式的档案:

192.168.1.1h o s t1.c l a s s.n e t

192.168.1.2h o s t2.c l a s s.n e t

192.168.1.3h o s t3.c l a s s.n e t

192.168.1.4h o s t4.c l a s s.n e t

.....中间省略......

这个档案我将他放置到https://www.doczj.com/doc/f514876516.html,/linux_basic/0310vi/hosts ,你可以自行下载来看一看这个档案啊!现在我们来玩一玩这个档案吧!假设我想要将host1, host2...等等复制起来,并且加到每一行的后面,亦即每一行的结果要是『 192.168.1.2 https://www.doczj.com/doc/f514876516.html, host2 』这样的情况时,在传统或现代的视窗型编辑器似乎不容易达到这个需求,但是咱们的vim是办的到的喔!那就使用区块选择(Visual Block)吧!当我们按下v或者V或者[Ctrl]+v时,这个时候游标移动过的地方就会开始反白,这三个按键的意义分别是:

区块选择的按键意义

v字元选择,会将游标经过的地方反白选择!

V行选择,会将游标经过的行反白选择!

[C t r l]+v区块选择,可以用长方形的方式选择资料

y将反白的地方复制起来

d将反白的地方删除掉

来实际进行我们需要的动作吧!就是将host 再加到每一行的最后面,你可以这样做:

1. 使用vim hosts来开启该档案,记得该档案请由上述的连结下载先!

2. 将游标移动到第一行的host 那个h 上头,然后按下[ctrl]-v ,左下角出现区块示意字样:

图3.1.1、进入区块功能的示意图

3. 将游标移动到最底部,此时游标移动过的区域会反白!如下图所示:

图3.1.2、区块选择的结果示意图

4. 此时你可以按下『 y 』来进行复制,当你按下y 之后,反白的区块就会消失不见啰!

5. 最后,将游标移动到第一行的最右边,并且再用编辑模式向右按两个空白键,回到一般模式

后, 再按下『 p 』后,你会发现很有趣!如下图所示:

图3.1.3、将区块的资料贴上后的结果

透过上述的功能,你可以复制一个区块,并且是贴在某个『区块的范围』内,而不是以行为单位来处理你的整份文件喔!鸟哥个人是觉得这玩意儿非常的有帮助啦!至少在进行排列整齐的文字档案中复制/删除区块时,会是一个非常棒的功能!

多档案编辑

假设一个例子,你想要将刚刚我们的hosts 内的IP 复制到你的/etc/hosts 这个档案去, 那么该如何编辑?我们知道在vi 内可以使用:r filename 来读入某个档案的内容, 不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。我们可以使用vim 后面同时接好几个档案来同时开启喔!相关的按键有:

多档案编辑的按键

:n编辑下一个档案

:N编辑上一个档案

:f i l e s列出目前这个v i m的开启的所有档案

在过去,鸟哥想要将A 档案内的十条消息『移动』到B 档案去,通常要开两个vim 视窗来复制, 偏偏每个vim 都是独立的,因此并没有办法在A 档案下达『 nyy 』再跑到B 档案去『 p 』啦!在这种情况下最常用的方法就是透过滑鼠圈选, 复制后贴上。不过这样一来还是有问题,因为鸟哥超级喜欢使用[Tab] 按键进行编排对齐动作, 透过滑鼠却会将[Tab] 转成空白键,这样内容就不一样了!此时这个多档案编辑就派上用场了!

现在你可以做一下练习看看说!假设你要将刚刚鸟哥提供的hosts 内的前四行IP 资料复制到你

的/etc/hosts 档案内,那可以怎么进行呢?可以这样啊:

1. 透过『vim hosts /etc/hosts』指令来使用一个vim开启两个档案;

2. 在vim 中先使用『 :files 』察看一下编辑的档案资料有啥?结果如下所示。至于下图的最后一

行显示的是『按下任意键』就会回到vim 的一般模式中!

图3.2.1、多档案编辑示意图"

3. 在第一行输入『 4yy 』复制四行;

4. 在vim 的环境下输入『 :n 』会来到第二个编辑的档案,亦即/etc/hosts 内;

5. 在/etc/hosts 下按『 G 』到最后一行,再输入『 p 』贴上;

6. 按下多次的『 u 』来还原原本的档案资料;

7. 最终按下『 :q 』来离开vim 的多档案编辑吧!

看到了吧?利用多档案编辑的功能,可以让你很快速的就将需要的资料复制到正确的档案内。当然啰,这个功能也可以利用视窗介面来达到,那就是底下要提到的多视窗功能。

多视窗功能

在开始这个小节前,先来想像两个情况:

当我有一个档案非常的大,我查阅到后面的资料时,想要『对照』前面的资料, 是否需要使用[ctrl]+f 与[ctrl]+b (或pageup, pagedown 功能键) 来跑前跑后查阅?

我有两个需要对照着看的档案,不想使用前一小节提到的多档案编辑功能;

在一般视窗介面下的编辑软体大多有『分割视窗』或者是『冻结视窗』的功能来将一个档案分割成多个视窗的展现,那么vim能不能达到这个功能啊?可以啊!但是如何分割视窗并放入档案呢?很简单啊!在指令列模式输入『:sp {filename}』即可!那个filename可有可无, 如果想要在新视窗启动另一个档案,就加入档名,否则仅输入:sp时,出现的则是同一个档案在两个视窗间!

让我们来测试一下,你先使用『 vim /etc/man.config 』打开这个档案,然后『 1G 』去到第一行,之后输入『 :sp 』 再次的打开这个档案一次,然后再输入『 G 』,结果会变成底下这样喔:

图3.3.1、视窗分割的示意图

万一你再输入『 :sp /etc/hosts 』时,就会变成下图这样喔:

图3.3.2、视窗分割的示意图

怎样?帅吧!两个档案同时在一个萤幕上面显示,你还可以利用『[ctrl]+w+↑』及『[ctrl]+w+↓』在两个视窗之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单啰~ 分割视窗的相关指令功能有很多,不过你只要记得这几个就好了:

多视窗情况下的按键功能

:s p[f i l e n a m e]开启一个新视窗,如果有加f i l e n a m e, 表示在新视窗开启一个新档案,否则表示两个视窗为同一个档案内容(同步显示)。

[c t r l]+w+j [c t r l]+w+↓按键的按法是:先按下[c t r l]不放, 再按下w后放开所有的按键,然后再按下j(或向下方向键),则游标可移动到下方的视窗。

[c t r l]+w+k

[c t r l]+w+↑

同上,不过游标移动到上面的视窗。

[c t r l]+w+q 其实就是:q结束离开啦!举例来说,如果我想要结束下方的视窗,那么利用[c t r l]+w+↓ 移动到下方视窗后,按下:q即可离开, 也可以按下[c t r l]+w+q啊!

鸟哥第一次玩vim 的分割视窗时,真是很高兴啊!竟然有这种功能!太棒了!^_^

vim 环境设定与记录: ~/.vimrc, ~/.viminfo

有没有发现,如果我们以vim 软体来搜寻一个档案内部的某个字串时,这个字串会被反白, 而下次我们再次以vim 编辑这个档案时,该搜寻的字串反白情况还是存在呢!甚至于在编辑其他档案时,如果其他档案内也存在这个字串,哇!竟然还是主动反白耶!真神奇!另外,当我们重复编辑同一个档案时,当第二次进入该档案时, 游标竟然就在上次离开的那一行上头呢!真是好方便啊~但是,怎么会这样呢?

这是因为我们的vim会主动的将你曾经做过的行为登录下来,好让你下次可以轻松的作业啊!那个记录动作的档案就是: ~/.viminfo!如果你曾经使用过vim,那你的家目录应该会存在这个档案才对。这个档案是自动产生的,你不必自行建立。而你在vim里头所做过的动作,就可以在这个档案内部查询到啰~ ^_^

此外,每个distributions 对vim 的预设环境都不太相同,举例来说,某些版本在搜寻到关键字时并不会高亮度反白, 有些版本则会主动的帮你进行缩排的行为。但这些其实都可以自行设定的,那就是vim 的环境设定啰~ vim 的环境设定参数有很多,如果你想要知道目前的设定值,可以在一般模式时输入『 :set all 』 来查阅,不过.....设定项目实在太多了~所以,鸟哥在这里仅列出一些平时比较常用的一些简单的设定值, 提供给你参考啊。

Tips:

所谓的缩排,就是当你按下Enter编辑新的一行时,游标不会在行首,而是

在与上一行的第一个非空白字元处对齐!

v i m 的环境设定参数

:s e t n u

:s e t n o n u 就是设定与取消行号啊!

:s e t h l s e a r c h :s e t n o h l s e a r c h h l s e a r c h 就是h i g h l i g h t s e a r c h (高亮度搜寻)。这个就是

设定是否将搜寻的字串反白的设定值。预设值是h l s e a r c h

:s e t a u t o i n d e n t

:s e t n o a u t o i n d e n t 是否自动缩排?a u t o i n d e n t 就是自动缩排。

:s e t b a c k u p 是否自动储存备份档?一般是n o b a c k u p 的, 如果设定

b a

c k u p 的话,那么当你更动任何一个档案时,则原始档案会

被另存成一个档名为f i l e n a m e ~ 的档案。举例来说,我们编

辑h o s t s ,设定:s e t b a c k u p ,那么当更动h o s t s 时,在同

目录下,就会产生h o s t s ~ 档名的档案,记录原始的h o s t s 档

案内容

:s e t r u l e r 还记得我们提到的右下角的一些状态列说明吗?这个r u l e r

就是在显示或不显示该设定值的啦!

:s e t s h o w m o d e 这个则是,是否要显示--I N S E R T -- 之类的字眼在左下角的状

态列。

:s e t b a c k s p a c e =(012)一般来说, 如果我们按下i 进入编辑模式后,可以利用倒退

键(b a c k s p a c e ) 来删除任意字元的。但是,某些

d i s t r i b u t i o n 则不许如此。此时,我们就可以透过

b a

c k s p a c e 来设定啰~ 当b a c k s p a c e 为2 时,就是可以删除

任意值;0 或1 时,仅可删除刚刚输入的字元, 而无法删除

原本就已经存在的文字了!

:s e t a l l 显示目前所有的环境参数设定值。

:s e t 显示与系统预设值不同的设定参数, 一般来说就是你有自行

变动过的设定参数啦!

:s y n t a x o n :s y n t a x o f f 是否依据程式相关语法显示不同颜色?举例来说,在编辑一

个纯文字档时,如果开头是以# 开始,那么该行就会变成蓝

色。如果你懂得写程式,那么这个:s y n t a x o n 还会主动的帮

你除错呢!但是, 如果你仅是编写纯文字档案,要避免颜色

对你的萤幕产生的干扰,则可以取消这个设定。

:s e t b g =d a r k :s e t b g =l i g h t 可用以显示不同的颜色色调,预设是『 l i g h t 』。如果你常

常发现注解的字体深蓝色实在很不容易看, 那么这里可以设

定为d a r k 喔!试看看,会有不同的样式呢!

总之,这些设定值很有用处的啦!但是......我是否每次使用vim都要重新设定一次各个参数值?这不太合理吧?没错啊!所以,我们可以透过设定档来直接规定我们习惯的vim操作环境呢! 整体vim的设定值一般是放置在/etc/vimrc这个档案,不过,不建议你修改他!你可以修改~/.vimrc这个档案 (预设不存在,请你自行手动建立!),将你所希望的设定值写入!举例来说,可以是这样的一个档案:

[r o o t @w w w ~]# v i m ~/.v i m r c

"这个档案的双引号(")是注解

s e t h l s e a r c h "高亮度反白

s e t b a c k s p a c e =2 "可随时用倒退键删除

s e t a u t o i n d e n t "自动缩排

s e t r u l e r "可显示最后一行的状态

s e t s h o w m o d e "左下角那一行的状态

s e t n u "可以在每一行的最前面显示行号啦!

s e t b g =d a r k "显示不同的底色色调

s y n t a x o n "进行语法检验,颜色显示。

在这个档案中,使用『 set hlsearch 』或『 :set hlsearch 』,亦即最前面有没有冒号『 : 』效果都是一样的!至于双引号则是注解符号!不要用错注解符号,否则每次使用vim 时都会发生警告讯息

喔!建立好这个档案后,当你下次重新以vim 编辑某个档案时,该档案的预设环境设定就是上头写的啰~ 这样,是否很方便你的操作啊!多多利用vim 的环境设定功能呢!^_^

vim 常用指令示意图

为了方便大家查询在不同的模式下可以使用的vim 指令,鸟哥查询了一些vim 与Linux 教育训练手册, 发现底下这张图非常值得大家参考!可以更快速有效的查询到需要的功能喔!看看吧!

图3.5.1 、 vim 常用指令示意图

其他vim 使用注意事项

vim 其实不是那么好学,虽然他的功能确实非常强大!所以底下我们还有一些需要注意的地方要来跟大家分享喔!

中文编码的问题

很多朋友常常哀嚎,说他们的vim 里面怎么无法显示正常的中文啊?其实这很有可能是因为编码的问题!因为中文编码有big5 与utf8 两种,如果你的档案是使用big5 编码制作的,但在vim 的终端介面中你使用的是万国码(utf8), 由于编码的不同,你的中文档案内容当然就是一堆乱码了!怎么

办?这时你得要考虑许多东西啦!有这些:

1. 你的Linux 系统预设支援的语系资料:这与/etc/sysconfig/i18n 有关;

2. 你的终端介面(bash) 的语系: 这与LANG 这个变数有关;

3. 你的档案原本的编码;

4. 开启终端机的软体,例如在GNOME 底下的视窗介面。

事实上最重要的是上头的第三与第四点,只要这两点的编码一致,你就能够正确的看到与编辑你的中文档案。否则就会看到一堆乱码啦!

一般来说,中文编码使用big5 时,在写入某些资料库系统中,在『许、盖、功』这些字体上面会发生错误!所以近期以来大多希望大家能够使用万国码utf8 来进行中文编码!但是在Windows XP 上的软体常常预设使用big5 的编码, 包括鸟哥由于沿用以前的文件资料档案,也大多使用big5 的编

码。此时就得要注意上述的这些咚咚啰。

在Linux 本机前的tty1~tty6 原本预设就不支援中文编码,所以不用考虑这个问题!因为你一定会看到乱码!呵呵!现在鸟哥假设俺的文件档案内编码为big5 时,而且我的环境是使用Linux 的GNOME ,启动的终端介面为GNOME-terminal 软体, 那鸟哥通常是这样来修正语系编码的行为:

[r o o t@w w w~]#L A N G=z h_T W.b i g5

然后在终端介面工具列的『终端机』-->『设定字元编码』 -->『中文(正体) (BIG5)』项目点选一下,如果一切都没有问题了,再用vim去开启那个big5编码的档案,就没有问题了!以上!报告完毕!DOS 与Linux 的断行字元

我们在第七章里面谈到 cat这个指令时,曾经提到过DOS与Linux断行字元的不同。而我们也可以利用cat -A来观察以DOS (Windows系统)建立的档案的特殊格式,也可以发现在DOS使用的断行字元为^M$ ,我们称为CR与LF两个符号。而在Linux底下,则是仅有LF ($)这个断行符号。这个断行符号对于Linux的影响很大喔!为什么呢?

我们说过,在Linux 底下的指令在开始执行时,他的判断依据是『Enter』,而Linux 的Enter 为LF 符号, 不过,由于DOS 的断行符号是CRLF ,也就是多了一个^M 的符号出来, 在这样的情况下,如果是一个shell script 的程式档案,呵呵~将可能造成『程式无法执行』的状态~ 因为他会误判程式所下达的指令内容啊!这很伤脑筋吧!

那怎么办啊?很简单啊,将格式转换成为Linux 即可啊!『废话』,这当然大家都知道,但是, 要以vi 进入该档案,然后一个一个删除每一行的CR 吗?当然没有这么没人性啦!我们可以透过简单的指令来进行格式的转换啊!

[r o o t@w w w~]#d o s2u n i x[-k n]f i l e[n e w f i l e]

[r o o t@w w w~]#u n i x2d o s[-k n]f i l e[n e w f i l e]

选项与参数:

-k:保留该档案原本的m t i m e时间格式(不更新档案上次内容经过修订的时间)

-n:保留原本的旧档,将转换后的内容输出到新档案,如: d o s2u n i x-n o l d n e w

范例一:将刚刚上述练习的/t m p/v i t e s t/m a n.c o n f i g修改成为d o s断行

[r o o t@w w w~]#c d/t m p/v i t e s t

[r o o t@w w w v i t e s t]#c p-a/e t c/m a n.c o n f i g.

[r o o t@w w w v i t e s t]#l l m a n.c o n f i g

-r w-r--r--1r o o t r o o t4617J a n62007m a n.c o n f i g

[r o o t@w w w v i t e s t]#u n i x2d o s-k m a n.c o n f i g

u n i x2d o s:c o n v e r t i n g f i l e m a n.c o n f i g t o D O S f o r m a t...

#萤幕会显示上述的讯息,说明断行转为D O S格式了!

[r o o t@w w w v i t e s t]#l l m a n.c o n f i g

-r w-r--r--1r o o t r o o t4758J a n62007m a n.c o n f i g

#断行字元多了^M,所以容量增加了!

范例二:将上述的m a n.c o n f i g转成m a n.c o n f i g.l i n u x的L i n u x断行字元

[r o o t@w w w v i t e s t]#d o s2u n i x-k-n m a n.c o n f i g m a n.c o n f i g.l i n u x

d o s2u n i x:c o n v

e r t i n g

f i l e m a n.c o n f i

g t o f i l e m a n.c o n f i g.l i n u x i n U N I X f o r m a t...

[r o o t@w w w v i t e s t]#l l m a n.c o n f i g*

-r w-r--r--1r o o t r o o t4758J a n62007m a n.c o n f i g

-r w-------1r o o t r o o t4617J a n62007m a n.c o n f i g.l i n u x

因为断行字符以及DOS 与Linux 作业系统底下一些字符的定义不同,因此, 不建议你在Windows 系统当中将档案编辑好之后,才上传到Linux 系统,会容易发生错误问题。而且,如果你在不同的系统之间复制一些纯文字档案时,千万记得要使用unix2dos 或dos2unix 来转换一下断行格式啊!

语系编码转换

很多朋友都会有的问题,就是想要将语系编码进行转换啦!举例来说,想要将big5 编码转成utf8

。这个时候怎么办?难不成要每个档案打开会转存成utf8 吗?不需要这样做啦!使用iconv 这个指令即可!鸟哥将之前的vi 章节做成big5 编码的档案,你可以照底下的连结来下载先:https://www.doczj.com/doc/f514876516.html,/linux_basic/0310vi/vi.big5

在终端机的?环境下你可以使用『 wget 网址』来下载上述的档案喔!鸟哥将他下载在/tmp/vitest 目录下。接下来让我们来使用iconv 这个指令来玩一玩编码转换吧!

[r o o t@w w w~]#i c o n v--l i s t

[r o o t@w w w~]#i c o n v-f原本编码-t新编码f i l e n a m e[-o n e w f i l e]

选项与参数:

--l i s t:列出i c o n v支援的语?系资料

-f:f r o m,亦即来源之意,后接原本的编码格式;

-t:t o,亦即后来的新编码要是什么格式;

-o f i l e:如果要保留原本的档案,那么使用-o新档名,可以建立新编码档案。

范例一:将/t m p/v i t e s t/v i.b i g5转成u t f8编码吧!

[r o o t@w w w~]#c d/t m p/v i t e s t

[r o o t@w w w v i t e s t]#i c o n v-f b i g5-t u t f8v i.b i g5-o v i.u t f8

[r o o t@w w w v i t e s t]#f i l e v i*

v i.b i g5:I S O-8859t e x t,w i t h C R L F l i n e t e r m i n a t o r s

v i.u t f8:U T F-8U n i c o d e t e x t,w i t h C R L F l i n e t e r m i n a t o r s

#是吧!有明显的不同吧!^_^

这指令支援的语系非常之多,除了正体中文的big5, utf8 编码之外,也支援简体中文的gb2312 , 所以对岸的朋友可以简单的将鸟站的网页资料下载后,利用这个指令来转成简体,就能够轻松的读取文件资料啰!不过,不要将转成简体的档案又上传成为您自己的网页啊!这明明是鸟哥写的不是

吗?^_^

不过如果是要将正体中文的utf8 转成简体中文的utf8 编码时,那就得费些功夫了!举例来说,如果要将刚刚那个vi.utf8 转成简体的utf8 时,可以这样做:

[r o o t@w w w v i t e s t]#i c o n v-f u t f8-t b i g5v i.u t f8|\

>i c o n v-f b i g5-t g b2312|i c o n v-f g b2312-t u t f8-o v i.g b.u t f8重点回顾

Linux 底下的设定档多为文字档,故使用vim 即可进行设定编辑;

vim 可视为程式编辑器,可用以编辑shell script, 设定档等,避免打错字;

vi 为所有unix like 的作业系统都会存在的编辑器,且执行速度快速;

vi 有三种模式,一般模式可变换到编辑与指令列模式,但编辑模式与指令列模式不能互换;

常用的按键有i, [Esc], :wq 等;

vi 的画面大略可分为两部份,(1)上半部的本文与(2)最后一行的状态+指令列模式;

数字是有意义的,用来说明重复进行几次动作的意思,如5yy 为复制5 行之意;

游标的移动中,大写的G 经常使用,尤其是1G, G 移动到文章的头/尾功能!

vi 的取代功能也很棒!:n1,n2s/old/new/g 要特别注意学习起来;

小数点『 . 』为重复进行前一次动作,也是经常使用的按键功能!

进入编辑模式几乎只要记住: i, o, R 三个按钮即可!尤其是新增一行的o 与取代的 R

vim 会主动的建立swap 暂存档,所以不要随意断线!

如果在文章内有对齐的区块,可以使用[ctrl]-v 进行复制/贴上/删除的行为

使用:sp 功能可以分割视窗

vim 的环境设定可以写入在~/.vimrc 档案中;

可以使用iconv 进行档案语系编码的转换

使用dos2unix 及unix2dos 可以变更档案每一行的行尾断行字元。

本章练习

(要看答案请将滑鼠移动到『答:』底下的空白处,按下左键圈选空白处即可察看)

实作题部分:

在第八章的情境模拟题二的第五点,编写/etc/fstab 时,当时使用nano 这个指令, 请尝试使用vim

去编辑/etc/fstab ,并且将第八章新增的那一行的defatuls改成default ,会出现什么状态?离开前请

务必要修订成原本正确的资讯。此外,如果将该行注解(最前面加#),你会发现字体颜色也有变化喔!

尝试在你的系统中,你惯常使用的那个帐号的家目录下,将本章介绍的vimrc 内容进行一些常用

设定,包括:

设定搜寻高亮度反白

设定语法检验启动

设定预设启动行号显示

设定有两行状态列(一行状态+一行指令列) :set laststatus=2

简答题部分:

我用vi 开启某个档案后,要在第34 行向右移动15 个字元,应该在一般模式中下达什么指令?

(1)先按下34G 到第34 行;(2)再按下[ 15 + 向右键],或[ 15l ] 亦可!

在vi 开启的档案中,如何去到该档案的页首或页尾?

去页首按下1G 或gg ;去页尾按下G 即可

在vi 开启的档案中,如何在游标所在行中,移动到行头及行尾?

移动到行头,按0 ,移动到行尾按$ 即可!

vi 的一般模式情况下,按下『 r 』有什么功能?

取代游标所在的那个字元

在vi 的环境中,如何将目前正在编辑的档案另存新档名为newfilename?

:w newfilename

在linux 底下最常使用的文书编辑器为vi ,请问如何进入编辑模式?

在一般模式底下输入: i, I, a, A为在本行当中输入新字元;(出现–Insert- )

在一般模式当中输入: o, O为在一个新的一行输入新字元;

在一般模式当中输入: r, R为取代字元!(左下角出现–Replace-)

在vi 软体中,如何由编辑模式跳回一般模式?

可以按下[Esc]

在vi 环境中,若上下左右键无法使用时,请问如何在一般模式移动游标?

[h, j, k, l]分别代表[左、下、上、右]

在vi 的一般模式中,如何删除一行、n行;如何删除一个字元?

分别为dd, ndd, x 或X (dG 及d1G 分别表示删除到页首及页尾)

在vi 的一般模式中,如何复制一行、n行并加以贴上?

分别为yy, nyy, p 或 P

在vi 的一般模式中如何搜寻string 这个字串?

?string (往前搜寻)

/string (往后搜寻)

在vi 的一般模式中,如何取代word1 成为word2,而若需要使用者确认机制,又该如何?

:1,$s/word1/word2/g或

:1,$s/word1/word2/gc (需要使用者确认)

在vi 目前的编辑档案中,在一般模式下,如何读取一个档案filename 进来目前这个档案?

:r filename

在vi 的一般模式中,如何存档、离开、存档后离开、强制存档后离开?

:w; :q: :wq; :wq!

在vi 底下作了很多的编辑动作之后,却想还原成原来的档案内容,应该怎么进行?

直接按下:e! 即可恢复成档案的原始状态!

我在vi 这个程式当中,不想离开vi ,但是想执行ls /home 这个指令,vi 有什么额外的功能可以达

到这个目的:

事实上,可以使用[ :! ls /home ]不过,如果你学过后面的章节之后,你会发现,执行[ ctrl + z ]亦可暂时退出vi 让你在

指令列模式当中执行指令喔!

参考资料与延伸阅读

维基百科:ASCII的代码与图示对应表:https://www.doczj.com/doc/f514876516.html,/wiki/ASCII

注1:常见文书编辑器专案计画连结:

emacs: https://www.doczj.com/doc/f514876516.html,/software/emacs/

pico: http://www.ece.uwaterloo.ca/~ece250/Online/Unix/pico/

nano: https://www.doczj.com/doc/f514876516.html,/projects/nano/

joe: https://www.doczj.com/doc/f514876516.html,/projects/joe-editor/

vim: https://www.doczj.com/doc/f514876516.html,

常见文书编辑器比较:https://www.doczj.com/doc/f514876516.html,/List+of+text+editors

维基百科的文书编辑器比较:https://www.doczj.com/doc/f514876516.html,/wiki/Comparison_of_text_editors

关于vim是什么的『中文』说明:https://www.doczj.com/doc/f514876516.html,/6k/features.zh.txt。

李果正兄的:大家来学vim (https://www.doczj.com/doc/f514876516.html,/~edt1023/vim/)

麦克星球Linux Fedora心得笔记:

正体/简体中文的转换方法:https://www.doczj.com/doc/f514876516.html,/michaelr/linux/15650102

2002/04/05:第一次完成

2003/02/07:重新编排与加入FAQ

2003/02/25:新加入本章节与LPI的相关性说明!

2005/07/28:将旧文章移动到这里。

2005/08/01:加入果正兄文章的参考,还有查阅vim官方网站的资料!

2008/12/18:将原本针对FC4版本的文章移动到此处

2009/01/13:这么简单的一篇改写,竟改了一个月!原因只是期末考将近太忙了~

2009/08/20:加入实作题,编辑简答题,加入vim指令示意图等

2002/01/21以来统计人数

| 繁体主站 | 简体主站 | 基础篇 | 伺服器 | 企业应用 | 桌面应用 | 安全管理 | 讨论板 | 酷学园 | 书籍戡误 | 鸟哥我 | 昆山资传 | 本网页主要以firefox配合解析度1024x768作为设计依据https://www.doczj.com/doc/f514876516.html, is designed by VBird during 2001-2011. https://www.doczj.com/doc/f514876516.html,

2020-Linux文版-实验3-Vi编辑器的使用及C编程-学生实验报告模板-P

实验报告 课程名称: Linux操作系统 实验名称:实验3 Vi编辑器的使用及C编程 学生姓名:孙文浩班级计算机 141 学号 学院(系):信息数理学院指导教师:庄丽华 实验时间: 2016 年 9 月 30 日实验成绩: 实验3 Vi编辑器的使用及C编程 一、实验要求 (1)掌握Vi的三种运行模式及切换方法; (2)掌握使用Vi的各种操作命令进行文本文件的编辑; (3)用Vi编写Linux下C程序,掌握gcc编译。 二、实验内容和实验步骤 1、vi编辑器的使用 【操作要求1】首先用合法用户名登陆系统,不保存直接退出。 【操作步骤】 (1)在系统提示符下,输入vi,按回车键,进入vi的界面。 (2)输入:q!不保存直接退出。 【操作要求2】新建文件f1并编辑一段文字进行保存。 【操作步骤】 (1)在系统提示符下输入vi f1,按回车键。 (2)看到vi的界面,输入i,左下角会出现“插入”。 (3)输入一段文字。 10 Basic Linux Networking and Monitoring Commands You Should Know I have listed down 10 basic Linux networking and monitoring commands which each Linux user should know. These Linux basic networking and monitoring commands like hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool are used for viewing the IP address of the Linux server, managing Linux server network adapter configuration, making network connections among Linux servers over telnet and

鸟哥的linux私房菜:鸟哥的Linux私房菜目录 鸟哥的linux私房菜

鸟哥的linux私房菜:鸟哥的Linux私房菜目录鸟哥的 linux私房菜 鸟哥的linux私房菜:鸟哥的Linux私房 菜目录鸟哥的linux私房菜 话题:鸟哥的linux私房菜兴趣爱好什么是操作系统什么是磁盘阵列文件目录第一部分认识Linux及Linux主机规划安装第1章什么是Linux21.1 什么是Linux31.1.1 计算机:计算的辅助工具31.1.2 什么是操作系统31.1.3 Linux之前UNIX的历史51.1.4 关于GNU计划91.2 Torvalds的Linux开发 111.2.1 与Minix之间111.2.2 386硬件的多任务测试111.2.3 初次发布Linux 0.02121.2.4 Linux的开发:虚拟团队的产生131.2.5 Linux 版本141.3 Linux的特性151.3.1 Linux的特性161.3.2 Linux的优缺点161.3.3 其他相关信息171.4 习题181.5 参考资料19第2章如何学习Linux202.1 Linux的应用212.2 基础学习222.2.1 从头学习222.2.2 选择工具书232.2.3 实践再实践232.3 学习方法232.3.1 X Window还是命令行242.3.2 主机/网络数据查询242.3.3 向别人提问252.3.4 笔者的建议252.4 习题26第3章 Linux主机的规划273.1 认识主机硬 件 组件283.1.1 认识计算机的硬件配置283.1.2 选择适合Linux系统的主机配 置333.1.3 Linux中的硬件设备号353.2 安装Linux前的规划363.2.1 选择适当的版本363.2.2 主机服务规划与硬件的关系373.2.3 主机硬盘的主要规划 383.2.4 练习机的安装建议393.3 实际案例393.4 习题403.5 参考资料41第4 章安装FC4与多重启动技巧424.1 安装Linux的第一步:规划434.1.1 练习机的规划434.1.2 硬盘连接与硬盘号444.1.3 识别硬盘分区454.1.4 Linux安装模式中硬盘分区的选择(极重要)464.2 开始安装Fedora Core Release IV474.2.1

操作系统实验报告 LINUX基本命令使用和VI编辑器

实验报告模板 实验名称Linux基本命令使用和vi编辑器学院 姓名学号班级 实验地点实验日期评分 指导老师同组其他成员 一、实验目的 掌握Linux一般命令格式。 2.掌握有关文件和目录操作的常用命令。 3.掌握进程操作的常用命令。 4.熟练使用man命令。 5.学习使用vi编辑器建立、编辑、显示及加工处理文本文件。 二、实验环境 VMware,RedHat Linux 三、实验内容 正确地登录和退出系统(logout或exit)。 2.熟悉date,cal,who,clear命令。 3.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 4.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 5.利用man显示date等命令的手册页。 6.显示系统中的进程信息。 7.进入和退出vi。 8.利用文本插入方式建立一个文件。 9.在新建的文本文件上移动光标位置。 10.对该文件执行删除、复原、修改、替换等操作。 四、实验结果(含程序、数据记录及分析和实验总结等) 1.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。

Clear之后 2.浏览文件系统: (1)运行pwd命令,确定当前工作目录。 (2)运行ls–l命令,理解各字段含义。 第一部分“-rw-r--r--”表示该文件的权限,即所有者权限为读和写,组用户和其他用户的权限为只读。第二部分“l”表示该文件是符号链接,第三第四部分所 有者和所有者所在的用户组,第五部分的数字表示文件的大小(以字节为单位),剩下的依次是文件创建月日时间和文件名。

实验3:文本编辑器vi

实验三:文本编辑器vi 1实验目的 通过实验掌握Linux操作系统的文本编辑器vi。 2实验设备 硬件:PC机一台 软件:Windows98/XP/2000系统,VMware Workstation6.0,Red Hat Linux 3实验内容 (1)v i,vim的使用。 (2)修改/etc/inittab文件。 4实验预习要求 仔细阅读参考书: 【1】鸟哥的Linux私房菜基础学习篇第三版,人民邮电出版社,鸟哥【2】嵌入式Linux系统开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 【3】嵌入式Linux应用程序开发标准教程,人民邮电出版社,华清远见嵌入式培训中心 关于vi的部分。 5实验步骤 (1)通过vi新建文件。 (2)分别在一般模式,编辑模式和命令模式下测试vi的使用。 6实验重点:

(1)vim简介 系统管理员的重要工作就是修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的命令界面文本编辑器。在所有的Linux distributions 上都会有的一套文字编辑器就是vi,而且很多软件默认的也是使用vi 为他们编辑接口。 vim 是高级版本的vi ,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program 等程序的编辑功能。 为何要学vim ●所有的Unix Like 系统都会内建vi 文本编辑器,其他的文本编辑器则不 一定会存在; ●很多软件的编辑接口都会主动调用vi (例如crontab, visudo, edquota 等 指令); ●vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性, 方便程序设计; ●因为程序简单,编辑速度相当快速。 (2)vi的使用 基本上vi 共分为三种模式,分别是“一般模式”、“编辑模式”和“命令模式”。这三种模式的作用分别是: ●一般模式:以vi 打开一个文档就直接进入一般模式(这是默认的模式)。 在这个模式中,你可以使用“上下左右”键来移动光标,可以使用“删除字符”或“删除整行”来处理文档内容,也可以使用“复制、粘贴”

实验三Shell和Vi编辑器

实验二Shell和Vi编辑器 一.实验目的: 1.熟悉shell的各项功能; 2.掌握Linux系统终端方式使用的编辑器vi; 3.学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找 /替换等命令。 二.实验内容: 1.练习使用shell的各项功能; 2.熟练掌握vi编辑器的使用。 三.实验练习: 1.熟悉Shell环境,使用Shell的各种功能 1)命令补齐功能 ●用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补 齐命令的后半部分。 ●用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由于 以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。 ●再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。 ●在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这个 命令,然后输入需要的字母,再按tab键,让shell补齐剩下的命令。 ●最后输入要创建的目录名,按回车键执行命令。 ●多试几个命令利用tab键补齐。 2)命令别名功能 ●输入alias命令,显示目前已经设置好的命令的别名。 ●设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=‘ls -l’。 ●显示别名ls代表的命令,确认设置生效:#alias ls。 ●使用别名ls显示当前目录中的文件列表。 ●在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:#\ls。

●删除别名ls:#unalias ls。 ●显示别名ls,确认删除别名已经生效:#alias ls。 ●最后再用命令ls 显示当前目录中的文件列表。 ●写出定义别名cde为:cd /etc的命令()。 3)输入、输出重定向和管道 (1)输出重定向 ●用ls命令显示当前目录中的文件列表:#ls –l。 ●使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list 中:#ls –l > list。 ●查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这说明shell 是首先创建了一个空文件,然后再运行ls命令:#cat list。 ●再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。这次使用管道符号>>进行重定向:#ls –l >> list。 ●查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在文件的末尾,注意其中两行list文件的信息中文件大小的区别:cat list。 ●重复命令#ls –l > list。 ●再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别,完成课后第一题。 (2)输入重定向 ●使用输入重定向,把上面生成的文件list用mail命令发送给自己:#mail root < list。 ●查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。 (3)管道 ●利用管道和grep命令,在上面建立的文件list中查找字符串list:#cat list | grep list。 ●利用管道和wc命令,计算文件list中的行数、单词数和字符数:#cat list | wc。 4)查看和修改Shell变量 ●用echo命令查看环境变量PATH的值:#echo $PATH。

Linux操作系统Vi文本编辑器试验报告

Vi 文本编辑器 1.实验目的 文本编辑器的原理和操作。1.了解vi文本编辑器的相关命令。了解vi 2.2.实验原理和实验设备 1.操作系统inuxL. 3.实验步骤 1.什么是vi文本编辑器? Vi是一个全屏幕文本编辑器 优点: 具有文本编辑所需的所有功能.1 适用于各种版本的Unix/Linux2.适用于各种类型的终端.3使用灵活快捷.4缺点: 界面不太好看1.按键命令太多2.2. 如何调用vi 在系统提示符后输入vi和想要编辑(或建立)的文件名(如:vi [path]filename),便可进入vi。如果只输入vi,而不带有文件名,也可以进入vi。然后先创建文件的内容,时,只需在退出命令后输入文件名即可。vi在退出进入vi之后,首先进入的就是编辑模式,进入编辑模式后vi等待编辑命令输入而不是文本输入,也就是说,这时输入的字母都将作为编辑命令来解释。.进入编辑模式后光标停在屏幕的第一行首位上(用_表示),其余各行的行首均有一个“~”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件。如果输入vi带有文件名后,文件已在系统中存在的话,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名,行数和字符数。在编辑模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被vi当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式,按ESC键即可。在编辑模式下,用户按“:”键即可进入命令模式,此时vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完成后,vi自动回到编辑模式。如图3.1所示。若在命令模式下输入命令过程中改变了主意,可用退格键(backspace)将输入的命令全回到编辑模式。部删除之后,再按一下退格键,即可使vi3. vi 的三种基本工作模式: 。)编辑模式、插入模式和命令模式(末行模式 三种模式之间的转换示意图图3.1 vi文件的保存和退出;4. 键切换ESC要通过如果我们处于其它命令模式时,的默认模式,vim或vi模式是Command 过来。会在屏幕的最下方等待我们输入命令:号时,vi当我们按ESC键后,接着再输入:保存;:w ;filename另存为:w filename

【IT专家】【Linux】鸟哥的Linux私房菜基础学习篇整理(一)

本文由我司收集整编,推荐下载,如有疑问,请与我司联系【Linux】鸟哥的Linux私房菜基础学习篇整理(一)2014/07/28 265 最近,一直在写PPC的模拟器和汇编器,也在做设计。因此重新看了看《鸟哥的Linux私房菜》,还是有好多命令不太熟悉。就打算写几篇blog 记下来。1. nl [-bnw] filename:添加行号打印参数:-b:指定行号指定的方式,主要有两种:-b a:表示不论是否为空行,也同样列出行号(类似cat -n);-b t:如果有空行,空的那一行不要列出行号(默认值)。-n:列出行号表示的方法,主要有三种:-n ln:行号在屏幕的最左方显示;-n rn:行号在自己字段的最右方显示,且不加0;-n rz:行号在自己字段的最右方显示,且加0。-w:行号字段所占用的位数。2. more:一页一页翻动支持的按键:Space:代表向下翻一页;Enter:代表向下滚动一行;/字符串:代表在这个显示的内容中,向下查询“字符串”这个关键字;:f:立刻显示文件名以及目前显示的行数;q:代表立刻离开more,不再显示该文件内容;b或[ctrl]-b:代表向回翻页,不过仅对文件有用,对管道无用。3. less:一页一页翻动支持的按键:Space:向下翻动一页;[PageDown]:向下翻动一页;[PageUp]:向上翻动一页;/字符串:向下查询“字符串”这个关键字;?字符串:向上查询“字符串”这个关键字;n:重复前一个查询(与/或?有关);N:反向重复前一个查询(与/或?有关);q:退出。4. head [-n number] filename:取出前面几行参数:-n:后面接数字,代表要显示的行数;5. tail [-nf] filename:取出后面几行参数:-n:后面接数字,代表要显示的行数;-f:表示持续检测后面的文件,要等到按下[ctrl]-c 才会结束tail的检测。6. od [-t TYPE] filename:查阅非纯文本文件参数:-t:后面接各种类型的输出,例如:a:利用默认的字符来输出;c:使用ASCII字符来输出;d[size]:利用十进制来输出,每个整数占用size bytes;f[size]:利用浮点数来输出,每个整数占用size bytes;o[size]:利用八进制来输出,每个整数占用size bytes;x[size]:利用十六进制来输出,每个整数占用size bytes;7. touch [-acdmt] filename:修改文件时间或创建文件参数:-a:修改访问时间;-c:修改文件的时间,若文件不存在则不创建文件;-d:后面可以接欲修改的日期而不用目前的日期,也可以使用--date=“日期或时间”;-m:仅修改mtime;-t:后面接欲修改的时间

实验2 vi编辑器的使用-2014

实验二vi编辑器的使用 班级:计本112 姓名:邵绪宝 学号:201106080226 三、实验操作 1、创建文件 1)使用vi创建一个名为vitest的文件,文件的内容自己录入。需要输入多行来学习编 辑器的常用命令 ? $ cd ? $ pwd ? $ vi vitest 2)返回命令行格式,写入并且退出文件。注意,当你输入”:”的时候,它将出现在你 输入区域的最后一行。一旦这个缓冲区是空的并且文件被关闭了,你将看到一个包 含有该文件的行数和字符数的消息。 :wq or :x or ZZ 使用键来从输入模式进入命令行模式 用以下的命令之一可以保存文件并且关闭vi,:wq 或者:x 或者ZZ 2、编辑文件 3)打开vitest,注意屏幕的底端将会显示文件名和字符数,使用, , ,键, 练习在文件中进行光标移动 ? $ vi vitest ?j down one line向下一行 ?k up one line向上一行 ?h left one character向左一格 ?l right one character向右一格 4)显示行数,并且让光标停在第四行 ? 4G or :4 and ?:set number ?:set tabstop=4 5)删除单个字符,删除整行,删除多行 x 删除光标位置的一个字符 dd 删除光标所在行 ndd 删除光标所在行开始向下的n行 6)进行文字的复制、移动、粘贴操作 yy、Y 复制光标所在的行 nyy、nY 复制从光标开始的n行

p 粘贴在光标后 P 粘贴在光标前 w 光标右移到下一个单词的开头(以非字母的符号分隔)W 同上(以空格分隔) b 光标左移到前一个单词的开头(以非字母的符号分隔) 7)对文本内容进行修改 r 替换光标位置上的1个字符 nr 替换从光标位置开始的n个字符 R 替换从光标位置开始的连续字符(进入替换模式) nR 同上,当按Esc键时,重复n遍(进入替换模式) s 替换光标位置上的1个字符(进入输入模式) S 替换光标所在的1行(进入输入模式) 8)使用:r 、:w 、:e 命令同时编辑多个文档。

linux实验报告vi编辑器的使用

一、实验目的 学习使用vi编辑器建立、编辑、显示及加工处理文本 二、实验内容 1.进入和退出vi 2.利用文本插入方式建立一个文件 3.在新建的文本文件上移动光标位置 4.对文件执行删除、复原、修改、替换等操作 三、主要的实验步骤 (1)vim简介 系统管理员的重要工作就是修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的命令界面文本编辑器。在所有的Linux distributions 上都会有的一套文字编辑器就是vi,而且很多软件默认的也是使用vi 为他们编辑接口。 vim 是高级版本的vi ,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script, C program 等程序的编辑功能。(2)vi的使用 基本上vi 共分为三种模式,分别是“一般模式”、“编辑模式”和“命令模式”。这三种模式的作用分别是: 一般模式:以vi 打开一个文档就直接进入一般模式(这是默认的模式)。在这个模式中,你可以使用“上下左右”键来移 动光标,可以使用“删除字符”或“删除整行”来处理文档内 容,也可以使用“复制、粘贴”来处理文件数据。

●编辑模式:在一般模式中可以进行删除、复制、粘贴等操作, 但是却无法编辑文件内容!要按下“i, I, o, O, a, A, r, R”等任 何一个字母后才会进入编辑模式。通常在Linux 中,按下这 些按键时,在屏幕的左下方会出现“INSERT或REPLACE” 字样,此时才可以进行编辑。而如果要回到一般模式时,则必 须要按下“Esc”这个按键即可退出编辑模式。 ●命令模式:在一般模式当中,输入: / ?三个中的任何一个按 钮,就可以将光标移动到最底下那一行。在这个模式当中,可 以提供查找数据的操作。读取、保存、大量替换字符、离开vi 、显示行号等的操作是在此模式中完成的! (3)具体的操作步骤如下 1、进入vi 2、建立一个文件,如file.c 进入插入模式,输入一个C语言程序的各行内容,故意制造几处错误,最后,将文件存盘,回到shell状态下

Linux Vi编辑器的使用实验报告

北京林业大学 2012学年—2013学年第二学期 Linux应用实验任务书 专业名称:信息管理与信息系统班级: 姓名:学号: 实验题目:实验三 Vi编辑器的基本使用 实验环境: Red Hat Linux 9 实验目的: 1.通过Vi 操作练习,能够熟练使用Vi 中的常见操作,并且熟悉Vi 的3 种模式。 2.熟悉shell的各项功能。 实验步骤: 1.熟悉Shell环境,使用Shell的各种功能 1)命令补齐功能 用date命令查看系统当前时间,在输入da后,按tab键,让shell 自动补齐命令的后半部分。 按tab键自动补齐:

●用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab 键,由于以m开头的命令太多,shell会提示是否显示全部的可能命令,输入n。 ●再多输入一个字母k,按tab键,让shell列出以mk开头的所有命 令的列表。

●在列表中查找mkdir命令,看看还需要多输入几个字母才能确定 mkdir这个命令,然后输入需要的字母,再按tab键,让shell补齐 剩下的命令。 ●最后输入要创建的目录名,按回车键执行命令。 ●多试几个命令利用tab键补齐。 到a可以补齐 到p可以补齐 2)命令别名功能 ●输入alias命令,显示目前已经设置好的命令的别名。

●设置别名ls为ls –l,以长格形式显示文件列表: ●显示别名ls代表的命令,确认设置生效: ●使用别名ls显示当前目录中的文件列表。 ●删除别名ls:#unalias ls。 ●显示别名ls,确认删除别名已经生效: ●最后再用命令ls 显示当前目录中的文件列表。

实验三 Shell和Vi编辑器

实验三Shell和Vi编辑器 一. 实验目的: 1. 熟悉shell的各项功能; 2. 掌握Linux系统终端方式使用的编辑器vi; 3. 学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。 二. 实验内容: 1. 练习使用shell的各项功能; 2. 熟练掌握vi编辑器的使用。 三. 实验练习: 1. 熟悉Shell环境,使用Shell的各种功能 1) 命令补齐功能 用date命令查看系统当前时间,在输入da后,按tab键,让shell自动补齐命令的后半部分。 用mkdir命令创建新的目录。首先输入第一个字母m,然后按tab键,由于以m开头的命令太多, shell会提示是否显示全部的可能命令,输入n。 再多输入一个字母k,按tab键,让shell列出以mk开头的所有命令的列表。 在列表中查找mkdir命令,看看还需要多输入几个字母才能确定mkdir这个命令,然后输入需要的 字母,再按tab键,让shell补齐剩下的命令。 最后输入要创建的目录名,按回车键执行命令。 多试几个命令利用tab键补齐。 2) 命令别名功能 输入alias命令,显示目前已经设置好的命令的别名。 设置别名ls为ls –l,以长格形式显示文件列表:#alias ls=‘ls -l’。 显示别名ls代表的命令,确认设置生效:#alias ls。 使用别名ls显示当前目录中的文件列表。 在使定义的别名不失效的情况下,使用系统的ls命令显示当前目录中的命令列表:#\ls。 删除别名ls:#unalias ls。 显示别名ls,确认删除别名已经生效:#alias ls。 最后再用命令ls 显示当前目录中的文件列表。 写出定义别名cde为:cd /etc的命令()。 3) 输入、输出重定向和管道 (1) 输出重定向 用ls命令显示当前目录中的文件列表:#ls –l。 使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中:#ls –l > list。 查看文件list中的内容,注意在列表中会多出一个文件list,其长度为0。这说明shell是首先创建了 一个空文件,然后再运行ls命令:#cat list。 再次使用输出重定向,把ls命令在终端上显示的当前目录中的文件列表重定向到文件list中。这次 使用管道符号>>进行重定向:#ls –l >> list。 查看文件list的内容,可以看到用>>进行重定向是把新的输出内容附加在文件的末尾,注意其中两行 list文件的信息中文件大小的区别:cat list。 重复命令#ls –l > list。 再次查看文件list中的内容,和前两次的结果相比较,注意list文件大小和创建时间的区别,完成 课后第一题。 (2) 输入重定向 使用输入重定向,把上面生成的文件list用mail命令发送给自己:#mail root < list。 查看新邮件,看看收到的新邮件中其内容是否为list文件中的内容。

实验3 使用vi编辑器

实验三使用vi编辑器 一.实验目的 学习使用vi编辑器建立、编辑、显示以及加工处理文本文件。 二.实验内容 1.进入和退出vi。 2.利用文本插入方式建立一个文件。 3.在新建的文本文件上移动光标。 4.对文本文件执行删除、复原、修改、替换操作。 三.实验步骤 1.进入和退出vi <1>进入vi 在系统提示符($)下输入命令vi和想要编辑(建立)的文件名(如example),便可进入vi。 <2>退出vi 在命令方式下可有几种方法退出vi编辑器: :wq 把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到Linux shell 下。 :ZZ 仅当作过修改时才将缓冲区内容写到文件上。 :x 与:ZZ 相同。 :q! 强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。这样,先前对该文件所做的修改或输入都被抛弃。 2.新建文件 <1>在Linux提示符$之后,输入命令:vi myfile,然后按〈Enter〉键。 <2>输入插入命令i(屏幕上看不到字符i)。 <3>然后,输入以下文本行: To the only woman tht I, For mang year you have been my wife <4>发现这两行有错,进行改正:

按〈Esc〉键,从插入方式回到命令方式。 按光标上移键,使光标移到第一行。 按光标左移键,使光标移到“tht”的第二个“t”处。 输入i(这是插入命令),然后输入a。该行变成如下形式: To the only woman that I, 按光标右移键,使光标移到“I”上。 我们想在“I”之后输入一个空格和单词“love”。为此,输入附加命令“a”。结果屏幕显示为: To the only woman that aI, 这是怎麽回事儿?......原来是:我们先前使用了插入命令i,至今并未用〈Esc〉键返回命令方式。所以,输入的所有字符都作为输入文本予以显示。 <5>按〈Esc〉键,返回命令方式。 利用x命令删除错误字符。然后,进入插入方式,输入正确字符。 <6>最后输入如下所示的文本: To the only woman that I love, For many year you have been mywwife I live you wich my life and could not have picked much better. <7>将你编辑的文本文件存盘。(利用:wq 命令,或者:x 命令) <8>重新进入vi编辑程序,编辑上面的文件。(如:$ vi myfile) <9>在屏幕上见到myfile文件的内容。在屏幕底边一行显示出该文件的名称、行数和字符个数:“myfile”4 lines,130 characters 它仍然有错,需进一步修改。 <10>将光标移到第二行的year的r处。输入a命令,添加字符s。 <11>按〈Esc〉,回到命令方式。输入命令18〈Space〉(键盘输入“18”,屏幕上不会显示出来,接着再按一下空格,光标便移动了),光标移至何处? <12>利用取代命令r将mywwife改为my wife。 <13>将光标移至第三行。输入新行命令O(大写字母),屏幕上有什麽变化? (注意:输入命令时,vi应处于命令模式)

linux下使用vi编辑器编写并执行c程序实验报告

课程名称:操作系统原理 实验名称:“ helloworld ”程序 专业:计算机科学与技术 年级/班级: 学号: 实验地点: 实验日期: 姓名: 实验类型:验证性 指导教师: 实验目的: 熟悉linux基本命令;学会使用VI编辑器;掌握在linux系统下编译C程序的方法。 实验仪器及耗材: 1、机房电脑; 2、CentOS-6 系统。 实验原理: 通过CentOS-6系统中的终端编写命令并执行,从终端进入vi编辑器编写C程序代码保存后 退回终端利用命令执行程序输出HelloWorld !!!。 实验内容及步骤: 1.添加一个新用户(以自己的名字命名); 2.为新建用户设置口令; 3.用who 命令显示登录到系统上的用户; 4.pwd 显示当前工作目录 5.cd 要求:先转到/root 目录下;再转到根目录 6.列出根目录下的文件和目录的详细信息 7.在你的用户家目录下创建新目录“ os” 8.删除“ os”目录 9.建立一个实验文件file1.txt,要求:建在/home目录下;文件内容为:I love osl,…, I love os5

10.显示文件file1.txt 的权限 11.用文字设定法将file1.txt权限设置为rw-r —r-x 12.用数字设定法将file.txt权限设置为rwxrw-r — 13.用chown将file1.txt所属的组改为root用chown将file1.txt属主改为root 14.用cat 在/home 目录下再建文件file2.txt,内容为I love os6,…,I love os10 15.用cat显示file2.txt的内容 16.用cat将file1.txt和file2.txt的内容合并起来放到file3.txt中。 17.显示file3文件的后3行内容。 18.为file3.txt建立硬链接文件myfile1.txt。 19.file3.txt 建立软链接文件myfile2.txt。 20.删除file3.txt,比较两种链接的区别。 21.显示所有的作业及其进程号。 22.终止一个正在运行的进程。 23.使用VI编辑器创建一个名字为“后两位学号姓名hello.c”的文件,并且写入 言代码实现显示“hello姓名!” 24.对源程序进行编译链接。 25.执行程序。 注意事项: 1、执行命令时所处的用户及根目录; 2、C程序输入标点符号是所处的输入法。 实验数据(现象)记录及结果处理: [ztg@localhost 桌面]$ su root 密码: [root@localhost 桌面]# adduser ActorH adduser: user 'ActorH' already exists [root@localhost 桌面]# su ActorH [ActorH@localhost 桌面]# passwd 更改用户ActorH的密码。 新的密码: 无效的密码:它基于字典单词 无效的密码:过于简单 重新输入新的密码: passwd:所有的身份验证令牌已经成功更新。 [ActorH@localhost 桌面]$ ls -l 总用量88 -rwxrwxr-x. 1 ztg ztg 4709 10 月31 09:36 actor -rw-rw-r--. 1 ztg ztg 0 10 月25 09:36 新文件~ [ActorH@localhost 桌面]$ su root

鸟哥的Linux私房菜第二版答案整理

Linux常见问题整理 1.操作系统应该要控制硬件的哪些单元? 运算单元、控制单元、寄存器组、总线接口单元、输入/输出接口单元。 2.一个较为完整的操作系统应该包含哪些部分? 比较完整的操作系统应该包含两个组件,一个是核心与其提供的接口工具,另一个是利用核心提供的接口工具所开发的软件。 3.1GB硬盘空间等于多少KB? 1GB=1024MB=1024*1024KB. 4.在主机上安装了一张网卡,开机之后系统无法使用,确定网卡是好的,问题可能在哪里?该如何解决? 核心不能识别该网卡,也就无法控制这个网卡,需要安装对应的网卡驱动。 5.是否可以将Windows上的显卡驱动程序安装在Linux上? 不能,Linux的核心与Windows的核心是不同的。 6.在Windows上能玩的游戏,是否可以到Linux上去玩? 一般不能,Linux的核心与Windows的核心是不同的。 7.什么是软件的移植? 指将软件从一种计算机上转置到其它计算机上 8. Linux众多的版本之间有什么异同? Ubuntu是一个以桌面应用为主的Linux操作系统,Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作。 9. Unix是谁写出来的? Ritchie等人用C语言写出第一个正式的UNIX核心。 10. GNU计划是谁发起的? 史托曼在1984年发起GNU计划。 11. GNU的全名是什么? GNU是GNU is Not Unix的缩写。 12. GNU主要由哪个基金会支持? 理查德·斯托曼创立了自由软件基金会来为GNU计划提供技术、法律以及财政支持。 13. 如何获取Linux发行版的可安装光盘? 可以直接找软件发行商购买安装光盘,或者到他们的官方网站上去下载ISO文件,然后刻录成光盘。 14.简单说明GNU General Public License与开放源码的精神 GPL的核心思想是“版权制度是促进社会进步的手段,版权本身不是自然权利”,GPL与开放代码的精神更多的在

实验报告3_vi编辑器的使用

实验报告3_v i编辑器的使 用 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验三 VI编辑器的使用 信息学院班级:学号:姓名: 一、实验目的 1.掌握vi编辑器的启动和退出方法 2. 掌握vi编辑器中录入文件内容的方法 3. 掌握vi编辑器的各种编辑命令的使用 4.比对微软公司的Word编辑软件,了解vi的优缺点 二、实验环境 安装了Linux系统的计算机一台 三、【实验重点及难点】 重点:掌握VI编辑器的使用方法。 难点:VI编辑器内部命令的使用。 四、实验过程(实验步骤、记录、数据、分析、结果) 1、启动虚拟机 2、vi编辑器的启动和退出 首先启动shell终端,如下图 在shell提示符下输入vim或vi,将启动vi编辑器 若要退出Vi在末行命令模式下输入:wq或:q!即可 (1)使用键在编辑命令模式和末行命令模式和插入模式之间进行切换进入插入模式 a追加,i插入,o当前行后插入一空行,r、s替换。 注意其他三个对应命令:A I O R S (2)复制正文 yy 复制当前行, nyy复制n行. 退出到命令模式以后:3yy (3)删除正文 x删除一个字符, dd 删除当前行,ndd 删除n行, dw 删除一个单

词。删除内容均放在缓冲区。 x: → dd: → ndd: → dw: → (4)替换正文 p 将缓冲区的内容粘贴到当前光标处。rn用字符n替换当前字符。 → (5)练习教材5.6节的导航命令。 (6)文件操作:w 写盘,:wq写盘退出,:q!不存盘退出,:w filenam写文件名。 (7)使用vi编辑生成三个100行字符,名字分别为my1,my2和my3的文本文件 (8)在vi编辑my1状态下查看当前目录,使用搜索字符串、删除和粘贴功能,使用替换命令及存盘退出、存盘不退出和不存盘退出命令。 存盘退出:wq 存盘不退出:w 不存盘退出: q! (9)把my1,my2和my3合并为一个文本文件my,并用命令wc显示其行数、

鸟哥的Linux私房菜基础学习篇课后习题答案

私房菜--基础学习篇课后习题答案鸟哥的linux私房菜 Linux的规划与安装 第一篇:Linux 第一篇: 一、什么是Linux 1.一个完整的作业系统至少要能够完整的控制整个硬件,请问,作业系统应该要控制 硬件的哪些单元? 至少要能够控制:(1)input/output crontrol,(2)device control,(3)process management,(4)file management.等等! 2.核心的功能在于管控整个系统的硬件,这包括了CPU运算单元的管理,输入/输出 的管理,记忆体的管理等等。那么请问一个较为完整的作业系统,应该包含哪些部分? 应包含Kernel+Kernel Tools+Applications等等 3.一个GBytes的硬盘空间,等于几个KBytes? 1GBytes=1024MBytes*1024KBytes/MBytes=1048576KBytes 4.你在你的主机上面安装了一张网络卡,但是开机之后,系统却无法使用,您确定网 络卡是好的,那么可能的问题出在哪里?该如何解决? 因为所有的硬件都没有问题,所以,可能出问题的地方在于系统的核心(kernel)不支持这张网络卡。解决的方法,到网络卡的开发商网站,下载支援您主机作业系统的驱动程序,安装网络卡驱动程序后,就可以使用了。 5.我在一部主机上面安装Windows作业系统时,并且安装了显示卡的驱动程序,他是 没有问题的。但是安装Linux时,却无法完整的显示整个X Window。请问,我可不可以将Windows上面的显示卡驱动程序拿来安装在Linux上? 不行!因为核心不同,针对硬件所写的驱动程序也会不相同,编译器也不同,当然,驱动程序也无法在两个作业系统间相容。这也是为何开发商在他们的网站上面,都会同时提供许多不同作业系统的驱动程序之故。 6.我在Windows上面玩的游戏,可不可以拿到Linux去玩? 当然不行!跟上一题相似的,因为游戏也是一个应用程序(application),他必须要使用到核心所提供的工具来开发他的游戏,所以这个游戏是不可在不同的平台间运作的。除非这个游戏已经进行了移植。 7.什么是软件的移植? 程序是由程序码(通成为ASCII格式)经过编译器编译成为binary file之后,才能够在该作业系统上面执行。因此,您可以将您的程序的程序码修改成可以适应其他作业系统的环境,并且加以编译,使程序可以在其他平台上运作,这个修改的动作即为移植。 8.Linux本身仅是一个核心与相关的核心工具而已,不过,他已经可以驱动所有的硬 件,所以,可以算是一个很阳春的作业系统了。经过其他应用程序的开发之后,被整合成为Linux distribitions。请问众多的distributions之间,有何异同? 相同:利用同样的Linux kernel(https://www.doczj.com/doc/f514876516.html,),几乎相同的自由软件套件(例如GNU 里面的gcc/glibc/vi/apache/bind/sendmail...),几乎相同的操作接口(例如均使用bash/KDE/GNOME等等)。 不同:使用的kernel与各软件的版本可能会不同;各开发商加入的应用工具不同,使用的套件管理模式不同(debian与RPM)

实验二、Vi文本编辑器和GCC编译器的使用

实验二、Vi文本编辑器和GCC编译器的使用 一、实验目的: 1、掌握Linux系统终端方式使用的编辑器vi; 2、学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。 3、掌握GCC编译器的使用。 二、实验内容: 1、用Vi文本编辑器对你的计算机进行网络配置。网络配置文件有: 文件1:/etc/sysconfig/network; 文件2:/etc/sysconfig/network-scripts/ifcfg-eth0; 文件3:/etc/resolv.conf; 要求:在图形界面下配置,看相应配置文件有没有被修改;修改配置文件看图形界面是否被修改。 2、将显示器配置文件(自己查),复制到//home目录下(一定要复制,对副本进行操作,否则出现异常后果自负),并重命名为i.打开i文件,设置行标,将第89行至第96行的内容复制到第116行,并将第62行至第86行的Option替换为type.并将整篇文章中的Section替换成choose.将修改后的文件另存为j.并将j复制到/usr目录下,并重命名为k. 3、在vi中编写一个abc.c程序,对程序进行编译、连接、运行。具体如下: [student@enjoy abc]$ vi abc.c main() { int i,sum=0; for(i=0;i<=100;i++) { sum=sum+i; } printf("\n1+2+3+...+99+100=%d\n",sum);}

[student@enjoy abc]$ gcc -o abc abc.c [student@enjoy abc]$ ls abc abc.c [student@enjoy abc]$ ./abc 1+2+3+...+99+100=5050 [student@enjoy abc]$ [student@enjoy abc]$ 4、从如上内容的基础上总结vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。 5、编写一个程序解决“鸡兔同笼”问题。 参考程序: #include main() { int h,f; int x,y; printf("请输入头数和脚数:"); scanf("%d,%d",&h,&f); x=(4*h-f)/2; y=(f-2*h)/2; printf("鸡=%d 兔子=%d",x,y); } 运行结果: 请输入头数和脚数:18,48 鸡=12 兔子=6 注:以上实验结果抓图后,做成电子文档的实验报告发送到ftp://192.168.0.22上。

相关主题
文本预览
相关文档 最新文档