文档库 最新最全的文档下载
当前位置:文档库 › vi 命令常见问题解答

vi 命令常见问题解答

vi 命令常见问题解答
vi 命令常见问题解答

vi 命令常见问题解答

作者:译者Elale

[vi-faq中文版]

0.0 - 引言 -- 我怎样用这个FAQ

这个文档分为了几个部分.首先,第0节和第1节介绍了什么是vi;第2节则收录了很多新

学者的问题,一些对vi没有很多经验的人也经常问这些问题.这里面包括诸如“命令模式和插入

模式之间的区别”,以及“我怎样拷贝和粘贴”之类的问题.第3节是面向vi的中级用户的,它从

问题“我如何查找和替换”开始,逐步深入,直到对vi里面的宏(Macro)的用法讨论为止.第3

节还包括了一个vi的快速参考,有一个规范的vi命令列表.再下面,是一个有关“:set”命令的

列表,包含了所有能定制vi环境的变量,这些变量也可以在.exrc文件中定义.

我们已经在一个运行SunOS和UCB版本vi的机器上验证了快速参考.除了SunOS 带的vi外,

每个命令都可以在系统V和UCB版本vi运行,但是我个人并没有验证这一点. 除非我们在文档中指明,缺省我们假定你处在命令模式下.

我们还尝试保留尽可能多的术语,因为在原始的vi文档中使用了这些术语,尽管我可能

忘了它的本来含义.

0.1 - 索引

第一个文件:

0.0 - 引言 -- 我怎样用这个FAQ?

0.1 - 索引

0.2 - 我可以散发这个FAQ吗?

0.3 - 你能为这个FAQ做什么?

1.0 - 什么是vi?

1.1 - 关于vi有什么重大的交易吗? 为什么大家都用它? 更进一步说,为什么我要用它?

1.2 - 噢! 这听起来不错! 有没有理由不用vi?

1.3 - vi能在多少不同的操作系统下面运行?

1.4 - 好吧, 你说服了我. 我决定开始使用vi. 我该从哪儿开始?

1.5 - vi有其他一些可用的变种吗?

2.0 - vi入门

2.1 - 有什么游戏帮助我们学习vi吗?

2.2 - 命令模式和插入模式有什么区别?

2.3 - 等等,我的键盘没有键,我该怎么办?

2.4 - 那些~s是什么东西?

2.5 - 我无法习惯用 hjkl, 你有什么建议吗?

2.6 - 我如何才能不存盘就退出?

2.7 - 我怎样插入一个文件?

2.8 - 我怎样查找文本?

2.9 - 我怎样搜索一个控制序列?

2.10 - 我怎样重新格式化文本?

2.11 - 我怎样复制文本?

2.12 - 啊! 我刚才敲了一个dG,然后我的论文就没有了! 我该怎么办?

(或者,我刚才犯了个错误,我该怎么办?)

2.13 - 我正在写我的论文,被告知我必须将每一节都放在不同的文件里,我该怎么办?

2.14 - 所有的:命令都是怎样处理的?

3.0 - 怎样查找和替换?

3.1 - 我怎样在vi中运行一个程序?

3.2 - 啊! 我正在写我的论文, 系统崩溃了! 怎么办?

3.3 - 有没有使vi对程序员更友好的窍门?

3.4 - 宏 -- 我怎样写宏?

3.5 - 我怎样将一个功能键定义成一个宏?

3.6 - 有没有办法缩写文本?

3.7 - 我怎样在当前文档中做拼写检查?

3.8 - 我手头有一个硬拷贝的终端, 我还能用vi吗?

3.9 - 好了,是不是处在开放模式下的原因呀?! 但是我现在没有用硬拷贝终端,它还是在

开放模式呀?

第二个文件:

4.0 - vi档案的在线帮助在哪儿?

5.0 - 好玩的vi诀窍,无聊的宏

5.1 - 好玩的vi诀窍

5.2 - 好玩的宏

6.0 - 依字母顺序的vi快速参考

6.1 - 命令模式的输入选项(:命令)

6.2 - 设置选项(set)

7.0 - 建立 .exrc文件

7.1 - .exrc文件的样本

8.0 - vi的漏洞

9.0 - 术语表

10.0 - 关于vi的参考书目

0.2 - 我可以散发这个FAQ吗?

可以!只要你没有对它做任何修改,或者用它来赚钱.

0.3 - 你能为这个FAQ做什么?

首先, 把你发现的错误告诉我. 如果你有什么建议我们也很欢迎. 你认为还不清楚的地方

告诉我们,我们同样欢迎.

还有, 使用vi! (Spread the word) 我很抱歉我无法将所有对这个FAQ有贡献的人都列出

来, 因为许许多多的人都给过我建议和帮助,如果我将他们都列出来的话,那么恐怕这张贡献

者的清单将和这个文档本身一样长了.

1.0 - 什么是vi?

vi是个可视化的编辑器(vi就意味着可视化--VIsual). 那么,什么是可视化的编辑器呢?

(相对于非可视化的编辑器来说)?可视化的编辑器就是可以让你在编辑文本的时候看到它们.

今天,这听起来似乎非常普通,反之,非可视化的编辑器似乎很奇怪. 非可视化的编辑器的例子

可以举出不少:如ed, sed和edlin(直到相当近的一段时间内,它是DOS自带的最后一个编辑器)

等.

vi是威廉.侨伊写的,作为BSD UNIX的一部分. 后来AT&T也开始用vi, 于是标准UNIX也开始

用vi了.

1.1 - 关于vi有什么重大的交易吗? 为什么大家都用它? 更进一步说,为什么我要用它?

vi是UNIX下面的缺省编辑器, 因此几乎近来所有的UNIX都捆绑了vi(近来是指1984年左右).

这意味着无论何时你跨平台使用某种UNIX,你都知道在你指尖下面有一个强力的编辑器.为什么

不是别的呢? vi是个强大的编辑器.同样,一旦你了解了vi,你就能很快的编辑你的文件,因为它

非常能节省你的敲键次数. 由于它在插入和命令两种情况下使用不同的模式,它比大多数的不

基于这种模式的编辑器要快. 而且,vi非常小(我机器上面的版本只有200K).还

有,vi几乎能做

任何事,只要你知道如何使它做你想做的事.

1.2 - 噢! 这听起来不错! 有没有理由不用vi?

有. 有一个非常好的理由: vi稍微有些难学, 如果你开始学的话,vi又慢又让人痛苦,

当然,一旦你学会了, vi就快多了. 但是学习的过程很慢. 有人曾经问我, 如果

vi是个比较

易学的编辑器, 它是否直观(intuitive)呢? 我一般这样回答:"是的,我们有些

人是这样认为.

但是大多数人认为我们疯了."

1.3 - vi能在多少不同的操作系统下面运行?

UNIX. 就是它. 尽管如此,还是有很多vi的变种运行在不同的操作系统上. 我

就在以下一些

操作系统上用过vi: UNIX, DOS, OS/2, MAC SYSTEM 7.(后面有一个有关细节的列表)

1.4 - 好吧, 你说服了我. 我决定开始使用vi. 我该从哪儿开始?

好吧, 狡猾的家伙. 关于vi有很多很好的书:大多数讲UNIX的书至少有一章给了vi,而且

有不少是专门讲vi的书.我没有什么偏爱. 所以你最好是问问你们那儿的vi高手们他们是从

哪儿学来的. 还有,到处试. 用vi打开一个不重要的文档(你的论文不象是个学

vi的好实验品),

然后再到处试. 我无法想象有人学习vi却不花相当多的时间去到处试试. 记住:如果你有些

地方不明白了, 只要敲两次键,你就又回到命令模式下了.

我要提到的一点是,我想在这里提比较合适,就是如果要成为系统管理员或者其

他对UNIX配置

做什么修改的话,最好是学学ed或者ex,因为有些版本的UNIX没有把vi放在根分区里面,这样你

就可能无计可施了. ed是个不错的选择.

1.5 - vi有其他一些可用的变种吗?

只能列出一部分:STvi (STevie), elvis, vile, vim, 和nvi, xvi.

elvis适用于:Amiga, DOS, OS/2, Unix, VMS, Atari.

STevie适用于: Atari ST, DOS, Unix, Mac System 7.

Mac System 7可以在很多info-mac的镜象站点获取,在/info-mac/text下. (例如https://www.wendangku.net/doc/bd9695483.html,)

nvi是将和BSD 4.4捆绑在一起的vi.

vim适用于: Amiga, DOS, Mac System 7, Unix.

Amiga, DOS,和源码可以在以下站点换取:ftp.fu-berlin.de /misc/editors/vim Mac System 7可以在很多info-mac的镜象站点获取,在/info-mac/text下.

(例如https://www.wendangku.net/doc/bd9695483.html,)

vile适用于: DOS, OS/2, Unix, VMS.

xvi适用于: DOS, Unix.

vi的变种之间很有很多差异.很多都改进了vi,大多数都可以使用在这个文档种列出的命令,但是有一些不同的地方.更进一步的细节,你可以参考这些变种附带的相应的文档.

2.0 - vi入门

对vi的初学者来说,有些基本的提示.第一,任何时候,手头都要有一份命令摘要.

我们将在后面给出一个快速参考/命令摘要. 第二, 找一本vi方面的比较好的书.

这个文档不是学vi的最佳途径(最起码现在还不是),我不敢保证这个文档能教会一个

对vi一无所知的人, 而很多书已经做到了这一点. 但是,我们这里还是给出了不少

提示. 对选择书籍来说,有一个标准的原则:买之前一定要仔细阅读. 要了解这本书

对你是否有意义.确信它能在你练习vi的时候有用. 和其他的书做个比较 -- 不管怎样,

vi可能让你感到非常莫名其妙, 而且你要确信这么一点:是书让你糊涂,而不是你低估了学vi的难度.

还有, 找一些诸如"学vi"(vilearn),"vi向导"(vitutor)之类的软件来帮助你掌握

vi的基本知识.

2.1 - 有什么游戏帮助我们学习vi吗?

这似乎很无聊, 但是事实上UNIX系统里面有不少游戏可以帮助你学习使用vi.这些帮助

主要是一些基本知识. 虽然我还不知道有哪个游戏可以帮你学习vi的所有命令, 但我

确实知道有一些可以帮助你学习使用 hjkl来移动光标. NetHack,一个类Rogue 的游戏,

就对这非常有帮助. 而且它是一个很大的游戏,能玩很长一段时间. 我没有贬低其他游戏

的意思,这些游戏是: rogue, moria, omega, worm, snake.

2.2 - 命令模式和插入模式有什么区别?

vi将命令模式和插入模式区分开来,这经常被认为是vi的一个大问题,但往往这也被认为是

vi的优势所在. 理解其中的区别是掌握vi的关键.vi启动时,开始处于命令模式;在这种模式

下,我们可以在文件中到处移动,改变文本的某个特定区域, 剪切, 复制和粘贴文本,还有更

多. 插入模式是指用户可以真正插入文本.换句话说,命令模式是用来在文件中

移动,而插入

模式是用来在文件中键入文本.

有些命令,例如: a, i, c, C, O, o和其他一些可以从命令模式切换到插入模式. 键或者^C(CRTL+C)可以脱离插入模式而返回到命令模式.

你要适应这种差别. 它使得vi区别于其他的编辑器. 它也使你能在你的手不离开标准

键盘做很多事情.

2.3 - 等等,我的键盘没有键,我该怎么办?

试试敲 ^[(CTRL+[). 如果你的键盘有一个键,再试试它.如果还不行,再

试试^3.

2.4 - 那些~s是什么东西?

它们仅仅是用来让你知道你的文档末尾在哪儿.实际上它们并不在你的文档里面,所以

你用不着担心它们.

2.5 - 我无法习惯用 hjkl, 你有什么建议吗?

首先,如果你的终端设置正确而且你连接的也没有问题的话,你可以使用箭头键.但是,

如果你认为你要经常使用vi,那么最好是习惯使用 hjkl,因为它们敲起来更快. 而且,

有时候连接出问题了,使得ESC序列都可能丢失了.(这样你可能就无法使用箭头键了--译注)

2.6 - 我如何才能不存盘就退出?

:q!可以做到这一点. 如果vi看起来冻住了,确信你没有错敲了个 ^S. 敲^Q可

以解开^S.

2.7 - 我怎样插入一个文件?

:r <文件名>

例如,要插入文件/etc/motd, 可以敲 :r /etc/motd.

这将把文件插入到光标处.如果你在r前面指定了一个数字,那么这条命令将把

文件插入

到那个位置.

2.8 - 我怎样查找文本?

/<文本>将向前查找, ?<文本>将向后查找. ??或者//将重复上次查找. 在UNIX 下,这已经

是个可爱的标准用法了. 而且, 在vi中, n将查找文本下一次的出现位置. N

重复上次查找,

不过逆转了查找的方向. 在查找中可以使用规范式.

2.9 - 我怎样搜索一个控制序列?

/^V^<序列>

^V会告诉vi照字面理解下一个字符,不要把它看作是一条命令.

2.10 - 我怎样重新格式化文本?

如果你的计算机有一个名叫fmt的程序, 你要做的仅仅是在命令模式下面

敲!}fmt(记住,

不要在前面加. 这可以重新格式化你的文件,从光标所在的位置一直到当前段落的结尾.

如果你的机器里面没有fmt这个程序, 你就得去找个类似的软件了(我记得在公共域里面有

不少这样的程序,但是我对此了解不多)

2.11 - 我怎样复制文本?

这有点复杂.把这节拿出来,多看几遍;还有,一定要多做实验.

"<字母>yy可以把一行文本拷贝到寄存器中(这里的寄存器是vi的术语,指可以存放剪切和

拷贝下来的东西的地方), <字母>里面的字母必须是a到z之间的一个. "<字母>dd可以把一行

剪切下来放到寄存器里面. 你可以在yy或者dd前面用数字指明要拷贝或者剪切的行数.如果

<字母>中的字母是大写的话,意味着把文本插入到寄存器中已有的文本之前. "<字母>p把文本插入到光标之后,"<字母>P把文本插入到光标之前.如果寄存器中含有某

一行的开头或结尾,这一行将会被放到另一合适的行上. Y是yy的快捷方式. 还有, y$, yH,

yM,等等,都是可以用的.d命令也是一样的.如果要快速的剪切和粘贴, 你就无须指定寄存器

了.如果这样的话,你就不能往寄存器里面添加文本了.而且只要有一个删除命令的话,寄存器

中的东西就没有了(包括x命令).

举例来说,如果要移动上一段的话,你可以把光标移到段落的开头,敲"a13dd,再把光标移到

你想要放文本的地方,敲"ap,就可以把那段文本放到光标所在的行后面.

现在,大概你想要剪切和粘贴文本到不是行末尾的区域去.我们来看如何做到这一点:我们

可以使用 m<字母> 命令来标记一个区域,这个字母可以和剪切/粘贴寄存器的字母相同,因为

它们是保存在内存中的不同位置. 然后,敲"<寄存器>`<字母>[yy或者dd], 这里的寄存器就是

要保存文本的那个寄存器,<字母>是用来标记的,yy和dd是你的操作.

2.12 - 啊! 我刚才敲了一个dG,然后我的论文就没有了! 我该怎么办?

(或者,我刚才犯了个错误,我该怎么办?)

u可以撤消你刚才的操作.U可以撤消你对当前行的修改(当然,一行对于一篇论文来说当然

很不够了). :e!可以不保存修改而重新把你的文件调进来. 还有,你删除的文本都保存在从

0到9编号的寄存器里.所以,"p就可以把上第n次的删除文本粘贴出来.你可以按如下的

方法迅速地查看所有删除的文本. 先试一个,不对的话,敲u,再试下一个.(为加速这个过程,

这时vi中的.命令和通常的用法不一样了.它不是重复上次操作,而是试下一个寄存器,这样

你要做的无非就是: "1p u . u .,直到你撤消了你想撤消的删除操作)

2.13 - 我正在写我的论文,被告知我必须将每一节都放在不同的文件里,我该怎么办?

:[m],[n]w <文件名>可以将从第m行到第n行之间的文本保存到<文件名>所指定的文件中.

这种行序号方法几乎在所有的:命令下都可以使用. 如果你用命令:[m],[n]

w >><文件名>,

这些文本将添加到文件的后面.

2.14 - 所有的:命令都是怎样处理的?

:后面的命令都是从ex编辑器里面过来的. 这就给vi加入了很多灵活性,也使vi功能更强

大. 例如, 有很多的方法可以用来查找和替换,它们有很多的类似地方(事实上,它们在某种

意义上说都是一样的)

3.0 - 怎样查找和替换?

有很多方法. 最简单的是:

:s/old/new/g, 但是,这仅对当前行起作用..., 所以,我们用

:%s/old/new/g, 更一般的,我们还可以用

:[范围]s/old/new/[cg],这里,[范围]是任意的行范围,包括行号,$(文件末尾),.(当前行),

%(当前文件),或者两个行号之间加个破折号(或者可以这样: .,+5,这表示下面5行).[cgi]是

c,g,i中间的一个或者什么也没有.c告诉vi每次替换的时候要给提示,g是说对所有一行中出现

的地方都做替换.i则是指在查找时不区分大小写.如果最后一个斜杠(/)后面没有东西的话,那

么vi只替换在行中第一次匹配的地方.

我比较喜欢这样做:

:g/foobar/s/bar/baz/g, 这个命令首先搜寻foobar,然后把它变成foobaz. 它没有改变

jailbars, 而其他的一些命令可能会改变jailbars. 这是我的方法,但是可能

比较难记.

当然,你还可以在查找的的时候使用正规式,以及在替换文本的时候使用其他一

些命令.如果

你在正规式里用(和)来剥离一个序列的话,你会发现你可以做很多好玩的事情. 例如:

:g/(foo)(bar)/s/2/1baz/g 将foobar替换成foobaz

还有一些特殊的序列:

& 所有查找时匹配到的东西

[1-9] 1到9号用(和)括起来的东西

u 下一个字符将被变成大写.

U 以后的字符都变成大写,直到遇到e或E

l 下一个字符将被变成小写.

L 以后的字符都变成大写,直到遇到e或E

[Ee] 更改大小写的选择区域的终点

3.1 - 我怎样在vi中运行一个程序?

:!命令可以在vi中运行程序. :sh会启动一个交互式的外壳(SHELL).在这个外壳

里面, 如果你愿意,你还可以再次运行vi. 当你在编辑Makefiles和配置文件来编译

某个程序的时候,这可能比较有用. 这比:e优越之处在于它无须保存文件,而且

如果

你退出外壳的时候,vi还回到原来的地方.(当然,我还是建议你先保存一下文

件)

3.2 - 啊! 我正在写我的论文, 系统崩溃了! 怎么办?

不要怕! 你会收到一封电子邮件,里面就是你的论文.敲入vi -r <文件名>

(这个文件名就是系统崩溃时你正在编辑的文件)你就可以恢复出你的论文来.只敲

vi -r将把所有可能恢复的文件都列出来.

3.3 - 有没有使vi对程序员更友好的窍门?

:set ai可以让vi自动对齐.

:set sw=#,#是移动的宽度(shiftwidth),或者说TAB键的宽度(tabwidth);你可以

用<<或者>>命令来左移或右移某一行. 还有, 你可以使用 <%或>%来将{,(或[等符号

括起来的文本都左移或右移;这时候,你必须把光标放在这些符号({,(或[)上面. :set sm会在你敲},]或)显示出对应匹配的{,[或(来.

:set lisp会对lisp编程有些帮助. ()被移到s表达式(s-expressions)外面,

如果

原子(atoms)没有停止则{}将被移走.

3.4 - 宏 -- 我怎样写宏?

:map , 其中最多10个字符,最多100个字符. 以后,如果

你敲了,vi就会用来取代它.所有的宏都是在命令模式下开始的,但是可以

在你想在的模式下终止. 记住,在你想用的控制字符前面加上^V.

:unmap 将删除这个宏. :map! 使得插入到文档中去.

3.5 - 我怎样将一个功能键定义成一个宏?

如果是#n,n是0-9之间的一个数,那么这个宏就映射成某一个功能键

了.(你

可以试一下F1-F10之间的键--译者)

3.6 - 有没有办法缩写文本?

当然了. 这可是vi呀,它能做任何事情!

:ab email ellidz@https://www.wendangku.net/doc/bd9695483.html,此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。可以在你敲完email后,把那个没有缩写

的文本插入到文件中. :una email取消缩写.

3.7 - 我怎样在当前文档中做拼写检查?

这儿有一个宏可以做到这一点. 这些应该放在你的.exrc文件中(后面我们将对.exrc

进一步讨论). 它是一个相当简单的宏. 它仅仅是调用ispell来处理当前文件.当然,你

的系统里面一定得有ispell这个程序. 使用它的时候,只需要敲个V键就行了(因为vi并

没有用V,所以V是一个比较合适的键)

map V :w^M:!ispell % ^M:e!^M^M

第二个^M使你在拼写检查完之后无须敲回车就可以到vi中.

(译注, 在我的系统里,没有ispell,只有spell,我用它替换了ispell,工作的不错;还有,

^M不是两个字符,而是一个字符,通过^V^M敲进去的;另外,我个人认为第二个^M 还是不要

的好,因为直接回到vi后你就无法看到拼写检查的结果了)

3.8 - 我手头有一个硬拷贝的终端, 我还能用vi吗?

好了,好了. 我并认为有人会真的问这个问题.这个问题太偏了,我们大可不必理它.(而且,它回答了一个非常普通的问题)

vi启动的时候处于一种特殊的模式下面,叫做"开放模式"; 在这种状态下,事情或多或少

的有些不同. 删除的字符在你面前显示成一些',vi会认为你的终端窗口只有一

行. ^r

可以把当前行重新输出. z则把当前行周围的窗口重画一遍.

3.9 - 好了,是不是处在开放模式下的原因呀?! 但是我现在没有用硬拷贝终端,它还是在开放

模式呀?

这儿的问题就是vi没有认出你用的终端的类型. 于是它假定你有的是个最烂的终端,

所以它决定依然处在开放模式下.这似乎没什么用处.因为没有多少人喜欢开放模式,但是开放

模式还是需要知道你的终端的一些最起码的信息的.

现在,我们来看如何解决这个问题.我们有可能把它分成几种特殊的情形,但是,一般情况下,

这并没有用处. 如果你直到你的终端的类型, 你可以在UNIX提示符下面设置终端类型(在CSH

及其变种下面,使用命令setenv TERM <终端类型>;在SH及其变种下面,使用命令TERM=<终端类型>;

export TERM)

最好你能把上面的命令写在.profile文件或者.cshrc文件里面,这样你一登录它就自动地给

你设置好了.(当然,你应该知道如何使用ed,或者你能在UNIX提示符下面设置好终端类型以便能

使用vi, 这样你才有可能去编辑这些文件)

如果你确实不知道你地终端类型,试一试vt100.现在大多数地终端或者终端仿真器都能仿真

vt100. 如果这还不能生效的话,你只好去找个高手来帮你了.

4.0 - vi档案的在线帮助在哪儿?

有一个vi的FAQ,其中列出了vi档案的所有在线文件. 同时它还列出了这些文档

的镜象站点. 最主要的一个地址是alf.uib.no,但是这些文档在很多很多地地方

都保存着. vi-archive faq把它们都给列出来了.你在下载这些文件之前一定要核对一下这个FAQ.因为很有可能有一个站点比去挪威的站点更近更快些.

一个镜象站点是https://www.wendangku.net/doc/bd9695483.html,/pub/vi, 另一个是

https://www.wendangku.net/doc/bd9695483.html,.au/pub/Vi,

这些站点上有很多有关vi的文件,还有一些vi的变种版本;当然,UCB版本的vi 是

肯定有的, 还有许多的宏.

5.0 - 好玩的vi诀窍,好玩的宏

这一节主要讲述一些无聊的诀窍和一些无聊的宏.事实上,任何vi的诀窍和宏我们

都欢迎,只要它们不是过分冗长. 如果有人向我建议而我也认为确实值得加的

话,

我会考虑加进去的.

5.1 - 好玩的vi诀窍

xp 删除光标下的字符,再把粘贴到后面去.换句话说,它交换了当前两个字符

的位置.

ddp 和xp类似,不过是交换两行的位置.

uu 撤消和重复上次所做的修改.(这可以使你不改变什么东西就可以到你上次所做的修改处)

5.2 - 好玩的宏

和垂直上方的字符交换位置

map * kxjphxkP

折行

map g $80|F r

(译注,我对这条宏表示疑问!)

改变大多数单词的大小写

map v ywmno:s/./~/g

(译注,这条好象也不大对!)

在当前的单词周围加上`和'

map *` i`'

在当前的单词周围加上'和'

map *' i''

在当前的单词周围加上"和"

map *" i""

(这几条也太无聊了吧--译注)

在当前的单词周围加上``和``

map! `` `'

(咦,好象又有问题?--译注)

从光标处把当前行分开,在下一行开头加上一个>号(例如,引用USENET).如果加上了单词的折行

功能那么最后一个单词可能被折在第一行.

map g may0O`ay$:s/./ /g

(不对吧--译注)

插入一个字符

map g i$^[r

6.0 - 依字母顺序的vi快速参考

... 是指有些东西需要在命令之前或之后指明.这通常是说光标的移动键

(h,j,k,l,w,b等等)或者是指行号.

# (这里#代表一个数字) 执行n次后面的命令...

: 进入ex模式

) 下一句

( 上一句

} 下一段

{ 上一段

]] 下一节

[[ 上一节

0 行的开头

$ 行的末尾

^ 行的第一个非空白字符

+ 下一行的开头

- 上一行的开头

(空格) 下一个字符

(回车) 下一行

/ 向前搜索

? 向后搜索

% 查找当前小(中,大)括号的匹配字符

, 逆向重复上一个f,F,t或T操作

; 重复上一个f,F,t或T操作

. 重复上一个操作

` 转到标记处

' 转到标记所在行的开头

`` 查找前回到上一个做标记的地方

'' 查找前回到上一个做标记所在行的开头

~ 切换字符的大小写

" 保存到寄存器中

!! 重复上一次SHELL命令

! 把后面的文本送给命令, 取代输出(例如, !}fmt把当前的段落送给命令fmt处理,然后用fmt返回的东西替换输出.)

>> 右移当前段落一个移动宽度(shiftwidth)

<< 左移当前段落一个移动宽度(shiftwidth)

>% 从当前到匹配小(中,大)括号之间的文本右移

<% 从当前到匹配小(中,大)括号之间的文本左移

(似乎漏了一个符号|, 移动到某一列----译注)

a 在当前位置之后添加

A 在当前行的末尾添加

^a 没有使用

b 上一个单词的开头

B 上一个单词的开头,忽略标点符号

^b 上移一屏

c 覆盖...

C 覆盖到行末尾

^c 终止插入模式,在命令模式没有用

d 删除...

D 删除到行末尾

^d 下移半屏,如果在插入模式下则移到上一个移动宽度(ShiftTab)处e 单词的末尾

E 单词的末尾,忽略标点符号

^e 屏幕下卷一行

f 查找...

F 向后查找...

^f 下移一屏

g 未用

G ...跳至[缺省是到文件末尾]

^g 显示状态栏

h 左移

H 屏幕上的第一行

^h 在插入模式下是退格,命令模式下是左移

i 在当前的位置前面插入

I 在本行的第一个非空白字符前面插入

^i 插入模式下是制表键,命令模式下未用

j 下移

J 把下一行合并到本行

^j 命令模式下是下移,插入模式下是建一个新行

k 上移

K 未用

^k 未用

l 右移

L 屏幕中的最后一行

^l 重绘屏幕

m 把当前位置标记到寄存器中

M 屏幕的中间行

^m 回车

n 重复上次查找

N 逆向重复上次查找

^n 命令模式下是下移

o 在当前行的下面建一个新行

O 在当前行的上面建一个新行

^o 未用

p 在当前行的下面粘贴

(译注--应为在当前位置的后面粘贴)

P 在当前行的上面粘贴

(译注--应为在当前位置的前面粘贴)

^p 命令模式下是上移

q 未用

Q 退出并且启动ex

^q 未用

r 覆盖当前的字符

R 在插入模式下一直覆盖字符

^r 在命令模式下面重绘屏幕

s 替换

S 替换整行

t 到...

T 向后到...

^t 移到下一个移动宽度(shifttab)处

u 撤消上一次操作

U 撤消对本行的所有修改

^u 上移半屏

v 未用

V 未用

^v 未用

w 下一个单词的开头

W 下一个单词的开头,忽略标点符号

^w 命令模式下未用,在插入模式下是到上一个单词的开头处

x 删除当前字符

X 删除前一个字符

^x 未用

y 复制...

Y 复制整行

^y 屏幕上卷一行

z 重新配置当前行周围的屏幕

ZZ 保存之后退出

^z 未用

(译注--在命令模式下,^z执行了UNIX暂停操作)

6.1 - 命令模式的输入选项(:命令)

(注: 这不是一个规范的列表,, 我只是列出了一些最重要的命令)

:r <文件> 把<文件>读入到当前文档

:r !<命令> 把<命令>的输出插入到当前文本中

:nr <文件> 把<文件>插入到第n行

:!<命令> 运行<命令>,然后返回

:sh 转到SHELL

:so <文件> 读取<文件>,再执行文件里面的命令

(译注--文件中的命令应该都是一些ex命令)

保存之后退出

:wq 保存之后退出

:l1,l2w <文件>把第l1和第l2行之间的文本写到<文件>中去,如果没有指定<文件>,

vi就假定是当前文件,如果没有指定l1,l2,就假定是整个文件(就成了:w) :w >> <文件> 添加到<文件>末尾. 也可以使用行号

:w! 覆盖当前文件

:q 退出

:q! 不存盘就退出

:e <文件> 不离开vi编辑<文件>

:e! 重新编辑当前文件,忽略所有的修改

:n 编辑下一个文件

:e +n <文件> 从第n行开始编辑<文件>,如果超过了末尾,就从末尾开始编辑:e# 编辑替换文件(如果使用了命令:e<文件>,替换文件就指的是原始文件) :args 显示所有要编辑的文件

:rew 重新回到第一个编辑的文档

:map m n 创建一个宏(使 m 做 n)

:map! m n 创建一个插入模式的宏(使 m 做 n)

:unmap m 删除宏m

:unmap! m 删除插入模式的宏m

:ab <1> <2> 缩写,敲<1>的时候用<2>取代

:unab <1> 取消缩写<1>

:set <选项> 设置<选项>...

6.2 - 设置选项(set)

可以使用括号中的缩写形式. 语法:

:set <选项> <参数> (如果需要参数的话)

也可以在一行中指定多个选项

:set <选项>? 显示出当前这个选项的参数值

:set all 则显示所有的选项值

对那些无须参数的选项来说,使用:set no<选项>就可以把它给关了

选项: 缺省值: 含义:

autoindent (ai) noai 使新行自动缩进,和上(下)行的位置对齐

autoprint (ap) ap 每条命令之后都显示出修改之处

autowrite (aw) noaw 在:n,:!命令之前都自动保存文件

beautify (bf) nobf 在输入的时候忽略所有的控制字符

(除了制表键(tab),换行(newline),进纸(formfeed))

directory= (dir=) /tmp 存放缓冲区的目录名

edcompatible noedcompatible 在替换的时候使用类ed的用法

errorbells (eb) errorbells 出错的时候响铃

exrc (ex) noexrc 允许在主目录(home)外面之外放.exrc文件

hardtabs= (ht=) 8 设置硬制表的边界

ignore case (ic) noic 正规式里忽略大小写

lisp nolisp 打开lisp模式

list nolist 显示所有的制表键和行的结尾

magic magic 可以使用更多的正规表达式

mesg mesg 允许向终端发送消息

number (nu) nonumber 显示行号

open open 允许开放和可视化

optimize (opt) optimize 优化吞吐量,打印时不发回车

paragraphs= (para=) IPLPPPQPPLIbp 设置{ & }的分界符

prompt prompt 命令模式下的输入给出:的提示符

readonly (ro) noro 除非用!号否则不准保存文件

redraw noredraw 当编辑的时候重绘屏幕

remap remap 允许宏指向其他的宏

report= 5 如果影响的行数>这个数的话就报告

scroll 1/2 window 下卷屏幕时滚动屏幕的数目,

同样这也是z命令输出的行数(z 输出2倍滚屏的大小)

sections= SHNHH HU 定义节的末尾(当使用命令[[ 和 ]] 时)

shell= (sh=) /bin/sh 缺省的SHELL,如果设置了环境变量SHELL的话,就使用变量

shiftwidth= (sw=) 8 当使用移动(shift)命令时移动的字符数

showmatch (sm) nosm 显示{, }, (, ), [, 或者 ] 的匹配情况

showmode noshowmode 显示你处在什么模式下面

slowopen (slow) 插入之后不要立刻更新显示

tabstop= (ts=) 8 设置制表停止位(tabstop)的长度

taglength= (tl=) 0 重要标记的字符个数(0表示所有的字符)

tags= tag, /usr/lib/tags 定义包含标记的文件路径

term= 设置终端类型

terse noterse 显示简短的错误信息

timeout (to) timeout 一秒钟后键盘映射超时

ttytype= 设置终端类型

warn warn 显示"No write since last change"信息

window= (w=) 可视模式下窗口的行数

wrapmargin= (wm=) 0 右边距,大于0的话最右边的单词将折行,留出n个空白位置

wrapscan (ws) ws 查找到文件尾后再重头开始

writeany (wa) nowa 可以保存到任意一个文件去

(译注--这些选项在各种vi版本中都基本上大同小异,以SunOS带的vi为例,它没有这里列出来的open选项,

scroll的参数值也不同,还多出来一些选项,如

flash,modelines,novice,tagstack等等)

7.0 - 建立 .exrc文件

所有命令输入模式下的命令(即 :命令)都可以在.exrc文件中使用,在.exrc中的命令在启动vi的时候自动

加载.尤其是源命令(so),缩写(ab)和宏定义都可以用.在.exrc中不允许有空行.以"开头的一行vi将把它当成

注释.

7.1 - .exrc文件的样本

以下的.exrc文件是一个实际的例子, 我自己的. 因此,它就没有有些人想象的

那样设置很多的选项.即便

如此,它还是给出一些基本的概念,而且它也相当易懂.

首先,记住你无须在命令前面加:号,因为它是缺省就添加了的.

"译注--以下是.exrc文件中的内容,为真实起见,而且事实上也相当浅显,我没

有翻译其中的注释

" set wordwrap 9 characters from the right

set wm=9

" show matching parenthesis. When },), or ] is hit, show the opening " {,(, or [ that matches it.

set sm

" set the shell to be /usr/local/bin/tcsh

set sh=/usr/local/bin/tcsh

" a few abbreviations

" this makes -l automatically become -Larry, and zidlle to be my

" name and email address.

ab zidlle E. Larry Lidz - ellidz@https://www.wendangku.net/doc/bd9695483.html,此邮件地址受spam bots保护,需要使用 Javascript 功能来查阅。

ab -l -Larry

" uppercase V will run ispell -x (-x tells it not to save backups) on current

" file

map V :w

" K will center the line... (this doesn't work on SunOS -- ??)

map K :s/^[ ]*//

" v will reformat the current paragraph

map v {0!}fmt

" q runs a program to lock my terminal

map q :!lock2

" Splits a line in two at current cursor location, puts a > at the "beginning of the line - useful for Usenet/email

map g may0O`ay$:s/./ /g

8.0 - vi的bug

我很想说vi中没有bug,但很不幸,它不是这样的. 这些bug都是初始版本vi中的,

它其他的一些变种就不一定有.

例如 _宏有时就运行的有问题.

9.0 - 术语表

如果有人提议说某个术语他不明白,我们将更新这个术语表.如果你有什么建议, 请一定要告诉我.

命令模式 command mode

命令模式是说我们在此模式下面可以向vi发命令(包括光标移动,编辑命令等等)

ed

UNIX里面一个非可视化的编辑器

escape键. 键盘上标记为escape(ESC)的一个键.有时候^[可以起到相同的作用.

如果没有escape键,你可以试试Meta键

ex

UNIX下的一个编辑器.所有vi中的:命令都是送给它处理的

插入模式 insert mode

插入模式是指我们可以在此模式下面键入文本.

宏 macro

宏是一些键的组合起来的快捷方式.例如,某个宏允许我们只敲一个键就可以执行

好几个不同的命令.

开放模式 open mode

开始模式是说vi启动的时候不能确定你的终端类型,或者它肯定你的是一个硬的或

电子管的终端

正规表达式 regular expressions (RegEx)

正规表达式,通常缩写为"RegEx",是一些关键字的集合,它允许用户在查找的时候有更大的

控制力度. RegEx是在UNIX下面用的,但是在很多程序中也用到了它.

sed

流-行式的编辑器.它没有界面,所有命令都是通过命令行的形式给出的.

vi命令列表

一般模式:移动光标 h 或向左方向键光标向左移动一个字符 j 或向下方向键光标向下移动一个字符 k 或向上方向键光标向上移动一个字符 l 或向右方向键光标向右移动一个字符 [Ctrl] + [f] 屏幕『向前』移动一页(常用) [Ctrl] + [b] 屏幕『向后』移动一页(常用) [Ctrl] + [d] 屏幕『向前』移动半页 [Ctrl] + [u] 屏幕『向后』移动半页 + 光标移动到非空格符的下一列 - 光标移动到非空格符的上一列 n 按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。 0 这是数字『 0 』:移动到这一行的最前面字符处(常用) $ 移动到这一行的最后面字符处(常用)H 光标移动到这个屏幕的最上方那一行M 光标移动到这个屏幕的中央那一行 L 光标移动到这个屏幕的最下方那一行G 移动到这个档案的最后一行(常用) nG 移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的 20 行(可配合 :set nu) n 光标向下移动 n 行(常用)

一般模式:搜寻与取代 /word 向光标之后寻找一个字符串名称为 word 的字符串。(常用) word 向光标之前寻找一个字符串名称为 word 的字符串。 :n1,n2s/word1/word2/g 在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !(常用) :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) :1,$s/word1/word2/gc 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给使用者确认(confirm)是否需要取代!(常用)

vi 操作指令

vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个和pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符

vi命令的使用

vi编辑器使用方法 1、vi的基本概念 基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode) 1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode 下,或者到 last line mode。 2) 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按[ESC]键可回到命令行模式。 3) 底行模式(last line mode) 将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 一般把vi简化成两个模式,即将底行模式(last line mode)也算入命令行模式command mode)。 2、vi的基本操作 2.1、三种模式的转换 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 进入vi之后,是处于[命令行模式(command mode)],要切换到[插入模式(Insert mode)]才能够输入文字。 b) 切换至插入模式(Insert mode)编辑文件 在[命令行模式(command mode)]下键入对应字母就可以进入[插入模式(Insert mode)],此时可以开始输入文字了。 c) Insert 的切换 处于[插入模式(Insert mode)],就只能一直输入文字。若发现输错了字!要按[ESC]键转到[命令行模式(command mode)]再删除文字。 d) 退出vi及保存文件 在[命令行模式(command mode)]下,按一下[:]冒号键进入[Last line mode],例如: : w filename (输入 [w filename]将文章以指定的文件名filename保存): wq (输入[wq],存盘并退出vi) : q! (输入q!,不存盘强制退出vi) 2.2、命令行模式(command mode)功能键 1). 插入模式 按切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;

vi操作命令大全完整版

v i操作命令大全 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

一vi的操作模式 vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。 在输入模式下,按Esc键切换到指令模式下。 在指令模式下,按输入指令(i、a、o等)进入输入模式。 二进入vi $ vi filename 直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。 如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。 $ view filename 以只读方式打开文件filename 三指令模式 3.1进入输入模式 a 在当前游标之后输入 A 在当前行之末输入 i 在当前游标之前输入

I 在当前行之首输入 o 在当前行之下新增一行,并在新增行输入 O 在当前行之上新增一行,并在新增行输入 输入结束后,按Esc键退出输入模式。 3.2游标移动 h 向左移动一个字元 l 向右移动一个字元 j 向下移动一个字元 k 向上移动一个字元 b 左移一个单词,至词首 w 右移一个单词,至词尾 0 移到当前行行首 $ 移到当前行行尾 + 移至下一行的行首 - 移至上一行的行首 H 移至视窗的第一行 M 移至视窗的中间一行 L 移至视窗的最后一行 G 移至该文件的最后一行 nG 移至该文档的第n行 n+ 下移n行 n- 上移n 行 3.3视窗移动 * + f 视窗下卷一页 * + b 视窗上卷一页 + d 视窗下卷半页 + u 视窗上卷半页 * + e 视窗下卷一行 * + y 视窗上卷一行 3.4删除操作 x 删除游标所在字元 X 删除游标前一字元 dw 从游标当前位置开始向后删除一个单词 db 从游标当前位置开始向前删除一个单词 d0 从行首删除至当前游标位置 d$ 从游标当前位置删除至行尾 dd 删除游标所在行 D 同d$

vi下的一些常用命令

vi 是visual edit 的缩写 文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,论坛里好像这方面的总结不多,以下稍做总结,以资共享!渴望更正和补充! 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾

H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令

vi命令手册

一、Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括ex,edit,ed和 vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别 是某些终端用户的需要。 值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象 DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个 不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这 只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。 虽然Vi采用了状态切换的方法,但电脑的硬件及操作系统多种多样,某些电脑的键盘上没有特定的几个功 能键!那麽不就有某些功能不能用了?这个问题在Unix系统上也一样,几乎各大电脑厂商都有自己的 Unix系统,而vi的操作方法也会随之有点出入。这里我们采用PC的键盘来说明vi的操作,但在具体 的环境中还要参考相应的资料,这一点是值得注意的。 二、Vi入门 (一)、进入vi 在系统提示字符(如¥、#)下敲入vi<档案名称>,vi可以自动帮你载入所要编辑的文件或是开启一个新 文件(如果该文件不存在或缺少文件名)。进入vi后萤幕左方会出现波浪符号,凡是列首有该符号就代

表此列目前是空的。 (二)、两种模式 如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入 a,vi即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令 模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在 输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表 示已处于指令模式下了。 付:有指令模式进入输入模式的指令: 新增(append) a:从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 A:从光标所在列最後面的地方开始新增资料。 插入(insert) i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 I:从光标所在列的第一个非空白字元前面开始插入资料。 开始(open) o:在光标所在列下新增一列并进入输入模式。 O:在光标所在列上方新增一列并进入输入模式。 (三)、退出vi 在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,

linux下vi命令大全

linux下vi命令大全 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前

I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write信息nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始mesg:允许vi显示其他用户用write写到自己终端上的信息 最后行方式命令 :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

linux下vi命令修改文件及保存等使用方法整理

vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来,以后在UNIX世界里必将畅行无阻、 游刃有余,因为其他几种文本处理器并非UNIX标准配备。说不定别人的Linux机器没安装joe或pico,如果您不会vi,那您可能就没辄了。 vi的基本概念 基本上vi可分为三种操作状态,分别是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode), 各模式的功能区分如下: 1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。 2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。 3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。 不过可以把vi简化成两个模式,即是将Last line mode也算入Command mode,把vi分成Command 和Insert mode。 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾

VI命令集精编

V I命令集精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符 S:删除指定数目的行,并以所输入文本代替之

ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 /pattern:从光标开始处向文件尾搜索pattern pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代:g/p1/s//p2/g:将文件中所有p1均用p2替换 选项设置 all:列出所有选项设置情况 term:设置终端类型 ignorance:在搜索中忽略大小写 list:显示制表位(Ctrl+I)和行尾标志($) number:显示行号 report:显示由面向行的命令修改过的数目 terse:显示简短的警告信息 warn:在转到别的文件时若没保存当前文件则显示NO write 信息 nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符 nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开

Vi常用命令

进入vi的命令 (1) 移动光标类命令 (1) 屏幕翻滚类命令 (2) 编辑插入文本类命令 (3) 删除命令 (5) 搜索及替换命令 (6) 选项设置 (8) 组合命令 (10) 最后行方式命令 (14) 寄存器操作 (15) 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行

n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 ^ 光标移到行首 f 光标移到当前光标位置后面的第一个指定的字符下 F 光标移到当前光标位置前面的第一个指定的字符下 t 光标移到当前光标位置后面的第一个指定的字符前 T 光标移到当前光标位置前面的第一个指定的字符前 % 光标移动到与当前括号匹配的括号处 :n 光标移动到指定行 按数字:0:移到文章的开头。 按G:移动到文章的最后。 按w:光标跳到下个字的开头 按e:光标跳到下个字的字尾 按b:光标回到上个字的开头 按:#l:光标移到该行的第#个位置,如:5l,56l。 跳至指定的行 Ctrl + g列出光标所在行的行号。 #G:例如,15G,表示移动光标至文章的第15行行首 14.光标控制 k:上移nk 上移n行 j:下移nj 下移n行 将光标移到第n行,按下mk 将光标移到第m行,按下"ay'k 即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏 Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏

VIM常用命令

VIM常用命令 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次编辑 移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字j至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L :光标移至屏幕最后行 0:(注意是数字零)光标移至当前行首 $:光标移至当前行尾 屏幕翻滚类命令 Ctrl+u:向文件首翻半屏

Ctrl+d:向文件尾翻半屏 Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏 nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 插入文本类命令 i :在光标前 I :在当前行首 a:光标后 A:在当前行尾 o:在当前行之下新开一行 O:在当前行之上新开一行 r:替换当前字符 R:替换当前字符及其后的字符,直至按ESC键 s:从当前光标位置处开始,以输入的文本替代指定数目的字符S:删除指定数目的行,并以所输入文本代替之 ncw或nCW:修改指定数目的字 nCC:修改指定数目的行 删除命令 ndw或ndW:删除光标处开始及其后的n-1个字 do:删至行首 d$:删至行尾 ndd:删除当前行及其后n-1行 x或X:删除一个字符,x删除光标后的,而X删除光标前的 Ctrl+u:删除输入方式下所输入的文本 搜索及替换命令 : https://www.wendangku.net/doc/bd9695483.html,/jh/4/119327.html /pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索pattern n:在同一方向重复上一次搜索命令 N:在反方向上重复上一次搜索命令 :s/p1/p2/g:将当前行中所有p1均用p2替代 :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代 :g/p1/s//p2/g:将文件中所有p1均用p2替换

Vi基本操作

Vi基本操作 首先看一下vi的三种模式的转换图: 需要先按Esc进入普通模式,这按“:”即进入了命令模式。再命令模式下想进入编辑模式, 则需要先按Esc键,然后再按“ i,a,o,O,s,S ”等进入编辑模式。 三种模式的简单说明: 1普通模式: 使用Vi打开一个文件后,默认是普通模式,即不能进行输入,仅可以执行一些操作命令; 2、编辑模式: 在此模式下可以进行常规的输入操作,可以在左下角看到插入的标记“--插入--”或“-- INSERT -- ”; 3、命令模式:在命令模式下,主要是执行保存、退出、搜索、替换等操作,则左下角可以看到“:",并有光标闪烁等待输入命令。

普通模式: 普通模式转为编辑模式 0:在光标所在行的上一行新增一行 o:在光标所在行的下一行新增一行 a:从当前光标所在的位置的下一个字符开始输入 i :在光标所在的位置插入新输入的字符 s:删除光标后的一个字符,然后进入插入模式; S:删除光标所在的行,然后进入插入模式; 移动 h:将光标向左移动一格 I :将光标向右移动一格j :将光标向下移动一格k:将光标向上移动一格 $:将光标移到当前行的最后面 数字0:将光标移到当前行的最前面 G :将光标移到最后一行的开头gg:将光标移到首行开头w或W将光标移到下一个字若输入“ w”,则标点符号如“ .”,“,”,“/ ”等字符都被当成一个字e或E:将光标移到本单字的最后一个字符;如果光标所在位置为本单子的最后一个字符,则跳到下一个单字的最后一个字符。 b:将光标移到本单词的第一个字符;如果光标所在位置为本单词的第一个字符,则跳到上一个单字的第一个字符。 翻页 ctrl+b :将页面向前卷动一页 ctrl+f :将页面向后卷动一页 ctrl+u :将光标向前移动半页 ctrl+d :将光标向右移动半页 ctrl+e :屏幕向下卷动一行,也可以说文章和光标向上卷动一行 ctrl+y :屏幕向上卷动一行,也可以说文章和光标向下卷动一行 复制文字 yy :可将光标目前所在位置的正行复制,复制时不会将文字反白显示 nyy :其中n为数字键,表示要复制的行数,若按3yy,则连同光标所在的位置的一行,与下 面2行一起复制 yw:可复制光标所在位置到整个单词结束的字符 nyw:n表示要复制的单词数目,若按3yw,则会将目前光标所在位置到单词结束,以及后面 的2个字一起复制 P:可将复制的文字粘贴到当前光标所在的位置。若复制的是整行文字,则会将整行内容粘贴在光标所在位置的下一行 shift+P 在光标之前粘帖

CentOS之VI编辑器的常用命令

CentOS之VI编辑器的常用命令 一.vi的模式 命令模式:vi启动默认进入的模式,可进入输入模"i",或末行模式(:),除了可以完成命令的功能外,也是后两种模式的转换点 输入模式:即文本辑辑状态,最后一行显示"-- INSERT --"提示,按ESC返回到命令模式 末行模式:可完成一些复杂操作,以":"开始,执行完一个末行命令后自动返回命令模式 二.基本使用 1.vi 编辑器的启动与退出: (1).使用命令"vi"直接进入编辑环境 (2).在命令模式下输入":q!",可以强行退出编辑环境,对文件修改不进行保存 (3).以文件名作为"vi"命令的参数时,若存在此文件,则vi可对内容进行编辑,若不存在,打开以参数名命名的空文件 2.文件操作: (1).打开新文件:在末行模式下":e filename"关闭当前文件并打开新文件,":e! filename 强制关闭当前文件并打开新文件" (2).读取文件内容到当前文件:":r filename",读取的文件内容粘贴到当前文件光标所在行的下面 (3)保存文件:命令为":w [filename]",如果文件已经命名,可直接使用":w"命令的参数,如果没有命名,第一次保存时需指定文件名作为参数 (4).另存为文件:命令为":w filename",只保存到新文件,而不更新原来文件的内容 (5).退出vi编辑器:退出格式为":q",保存并退出为":wq",强行退出为":q!" 3.光标的移动操作(命令模式下) (1).光标方向移动:"h"左、"l"右、"k"上、"j"下

(2).翻页移动:"ctrl+f"前一页、"ctrl+b"后一页、"ctrl+u"前半页、"ctrl+d"后半页 (3).行内快速跳转:"^"本行首字符、"$"本行尾字符、"w"后一单词首字母、"b"前一单词首字母、"e"后一单词尾字母;可添加数字组合使用,例如:"3w"后三个单词首字母、"4b"前4个单词首字母、"5e"后5个单词尾字母 (4).文件内行间跳转:显示行号":set nu",取消显示行号":set nonu","1G"跳转到首行,"G"跳转到末尾行,"#G"跳转到第#行 4.编辑操作 (1).进行输入模式:"i"当前光标处,"a"当前光标后,"A"当前行末,"o"当前行下插入新行,"O"当前行上插入新行,"cw"删除当前光标到所在尾部字符,"c$"删除当前光标到行尾的字符,"c^"删除当前光标(不包括)之前到行首的字符;以上记忆如有困难,可只记"i"从命令模式进入输入模式,完成编辑后"Esc"退回到命令模式 (2).输入模式的操作:上下左右方向进行光标移动,"Home/End"定位光标到行首行尾,"Page Up /Down"上下翻页,"Backspace"左侧字符的删除,"Delete"删除光标位置的字符 (3).删除操作:在命令模式下,可用以下命令完成删除操作,"x"光标处单个字符,"dd"光标所在行,"dw"当前字符到单词尾(含空格),"de"当前字符到单词尾(不含空格), "d$"当前字符到行尾,"d^"当前字符到行首,"J"合并当前行与下一行的内容,可添加数字配合使用,例如"3x"当前光标向右3个字符,"2dd"从当前行开始向下两行文本, "3dw"当前光标向右3个单词,"2de"当前光标向右两个单词(保留一个空格),"5J"合并5行文本 (4).撤销操作:在命令模式下,"u"取消最近一次操作,可重复使用,"U"取消对当前行进行的所有操作,"Ctrl+R"对"u"产生的撤消进行恢复 (5).复制操作:"yy"整行,"yw"光标到单词尾,"y$"光标到行尾,"y^"光标到行首;与数字组合使用,"5yy"当前及后续共5行,"3yw"当前光标开始的3个单词; 末行命令":m,ny"m行到n行之间的文本,例如:":100,200y"100行到200的内容 (6).粘贴操作:在命令模式下,使用"p"将缓冲区中的内容粘贴到当前文档

VI命令大全

/根目录下的文件夹 输入”/”,回车 里面有很多文件夹,如:etc,home,lib,mnt等等 etc:存放用户名和密码 home:每个用户有个文件夹,存放在这里 lib:操作系统文件等 mnt:挂扣用的 opt:java工具 bea:web编程的一些东西 sbin,bin,usr:这三个文件夹都是存放unix的命令的 tmp:临时文件夹 常用的操作: 查看当前目录:pwd 修改密码:passwd 更换模式:csh,bash 远程登陆:telnet 服务器ip 回到上级目录:cd .. 查看该目录下的文件夹:ls 打开文件:vi /文件夹/文件 文件显示的格式:root:x:0:root…:/root;/bin/bash 用户名,加密,序号,组,默认路径 退出:esc shift+: q! quit exit 清空:clear 显示当前目录所有文件:ls –a 显示当前目录所有文件和详细信息:ls –al 新建文件:vi 文件名 文件的权限:chmod g –(+)r w x u g o s 新建文件(不能编辑)更新文件的访问时间,如果存在文件,更新,不存在,建立:touch 文件名创建目录:mkdir 目录名/目录名 创建多个目录:mkdir 目录名目录名….. 在主目录创建下目录:mkdir ~/目录名 创建多级目录:mkdir –p 目录名/目录名 在覆盖文件前做个提示:cp –I 文件和文件内容间的拷贝:cp 复制目录:cp –r 目录目录 复制文件:cp 文件文件 移动文件:mv 要移动的文件要移动到的目录 移动目录:mv -fi要移动的目录要移动到的目录 修改文件或目录的名字:mv 文件名字 删除文件:rm rm –I提示 删除目录中的所有内容包括目录:rm –r 要删除的文件夹 连接:软连接:相当于创建快捷方式,作用:修改linux内核会用到他in 硬连接:如果删除源文件,被连接的文件内容还存在 帮助:man 命令

实验一 Linux下常用命令和Vi的使用

实验一Linux下常用命令和Vi的使用 实验学时:2学时 实验类型:验证型 一、实验目的 了解UNIX/LINUX运行环境,熟悉UNIX/LINUX的常用基本命令,熟悉和掌握 UNIX/LINUX下c语言程序的编写、编译、调试和运行方法。 二、实验内容 ●熟悉LINUX的常用基本命令如ls、who、pwd、ps等。 ●练习LINUX的文本行编辑器vi的使用方法 ●联机帮助命令-man的使用。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验步骤: 1.用pwd显示当前工作目录名:pwd;如果当前目录不是root,需改变到root目录: cd/root。 2.用mkdir建立四个目录:mkdir /root/test1;mkdir /root/test2;mkdir /root/test2/abcd;mkdir /mypro。 3.用cd命令从root开始依次进入test1、test2、abcd、mypro目录,并用 pwd验 证。 cd test1; pwd cd ../test2;pwd cd abcd;pwd cd ../../mypro;pwd 4.用cd 命令从mypro目录返回到根目录,并用pwd命令验证。 cd / pwd 5.用rmdir命令删除子目录 abcd。 Rmdir /root/test2/abcd 6.分别用ls ls –a 和ls-l查看root目录的内容。 ls ls –a ls -l 7.man 命令: (按PageUp键向上翻页PageDown向下翻页,按q退出) man ls 查看ls的帮助信息。 man cp 查看cp的帮助信息。 man mkdir 查看mkdir的帮助信息。 man rm>rm_help 用重定向生成帮助文档

linux环境下vi命令编辑器详解(fedoraubuntu)

Linux环境下vi命令编辑器详解(FedoraUbuntu...) Linux环境下vi命令编辑器详解(Fedora/Ubuntu/.../) 2008-12-19 16:43 一、Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件。Unix及其相似的ix 操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑器,包括ex, edit,ed 和vi.其中ex,edit,ed都是行编辑器,现在已很少有人使用,Unix提供他们的原因是考虑到满足各种用户特别是某些终端用户的需要。值得庆幸的是,Unix提供了全屏幕的Vi编辑器,这使我们的工作轻松不少。不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用,这是因为Vi考虑到各种用户的需要,没有使用某些通用的编辑键(在各个不同的终端机上他们的定义是不同的,在某些终端机上甚至没有这些键)。而是采用状态切换的方法,但这只是习惯的问题,一旦你熟练的使用上了vi你就会觉得它其实也很好用。 虽然Vi采用了状态切换的方法,但电脑的硬件及操

作系统多种多样,某些电脑的键盘上没有特定的几个功能键!那麽不就有某些功能不能用了?这个问题在Unix 系统上也一样,几乎各大电脑厂商都有自己的Unix 系统,而vi 的操作方法也会随之有点出入。这里我们采用PC 的键盘来说明vi 的操作,但在具体的环境中还要参考相应的资料,这一点是值得注意的。二、Vi入门(一)、进入vi 在系统提示字符(如$、#)下敲入vi <档案名称>,vi 可以自动帮你载入所要编辑的文件或是开启一个新文件(如果该文件不存在或缺少文件名)。进入vi 后萤幕左方会出现波浪符号,凡是列首有该符号就代表此列目前是空的。(二)、两种模式 如上所述,vi存在两种模式:指令模式和输入模式。在指令模式下输入的按键将做为指令来处理:如输入a,vi 即认为是在当前位置插入字符。而在输入模式下,vi则把输入的按键当作插入的字符来处理。指令模式切换到输入模式只需键入相应的输入命令即可(如a,A),而要从输入模式切换到指令模式,则需在输入模式下键入ESC键,如果不晓得现在是处於什麽模式,可以多按几次[ESC],系统如发出哔哔声就表示已处于指令模式下了。

vi命令大全

vi命令大全 进入vi vi filename 打开或新建文件,并将光标置于第一行首 vi +n filename 打开文件,并将光标置于第n行首 vi + filename 打开文件,并将光标置于最后一行首 vi +/pattern filename 打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename 在上次正用vi编辑时发生系统崩溃,恢复filename vi filename ……filename 打开多个文件,一次进行编辑 保存退出 w 保存当前文件 w /tmp1 另存为/tmp1 20,59w /tmp1 仅将20-59行之间的内存另存为/tmp1 x或wq 保存退出 q 退出vi q!退出不保存 !command 执行shell命令command n1,n2 w!command 将文件中n1行至n2行的内容最为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入

r!command 将命令command的输出结果放到当前行w!sudo tee % 保存没权限时,可获得权限再保存 光标移动 h 光标左移一个字符 l 光标右移一个字符 space 光标右移一个字符 backspace 光标左移一个字符 k 或Ctrl+p 光标上移一行 j 或Ctrl+n 光标下移一行 Enter 光标下移一行 w 或W 光标右移一个字至字首 b 或B 光标左移一个字至字首 e 或E 光标右移一个字至字尾 )光标移至句尾 (光标移至句首 } 光标移至段落开头 { 光标移至段落结尾 nG 光标移至第n行首 n+ 光标下移n行 n- 光标上移n行

shell&vi_命令大全

Shell 系统设置: 1.tty 显示当前的终端号 2.stty 显示和设置终端参数 stty –a 附加显示参数 stty [command] ‘[key]’设置键值 3.date 显示日期 date –u MMddhhmm 修改时间到MM月dd日hh时mm分 4.time 显示时间 5.cal 显示日历 cal [month] [year] 显示X年X月日历,参数只有1个数字默认为年份 6.who 按字母顺序列出当前注册到计算机上的用户 who am i 打印当前用户的信息 who –T 附加显示用户终端状态 who –r 显示系统的运行级 7.w 显示目前在线用户以及这些用户当前工作 8.cu 连接另一台unix主机 cu –s [speed] [num] 按照传输速度连接另一台unix主机 cu –l [port] 按照制定得通讯线路连接另一台unix主机 9.finger 显示用户信息 finger –T (与who类似) 10.news 显示/usr/news目录中文件找到的系统新闻 news –a 显示所有项 news –n 只显示你没有看到的当前文件的名字 11.man [title] 查看联机手册 man [–M path] [[section]title] path为所需手册数据库的路径,section为一个数字表示的 手册分类,1代表可执行命令,2代表系统呼叫,3代表标 准函数等等 man –k [keyword] 用来将含有keyword的title列出来 12.clear 清楚终端屏幕 13.lock 给终端加锁 lock [-time] 给终端加锁多长时间 14.passwd 修改当前用户口令 15.write [username] 向其他用户发送消息,不允许应答,*以return结束 16.hello [username] unix系统普通用户使用与write相同,超级用户输入 的内 容立即出现在对方屏幕上 17.mesg [-y/-n] 控制终端是否可写 18.mail [username] 发送,阅读电子邮件,quit或exit退出

相关文档