学习vi和vim编辑器第七版.docx
- 文档编号:30668137
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:42
- 大小:42.19KB
学习vi和vim编辑器第七版.docx
《学习vi和vim编辑器第七版.docx》由会员分享,可在线阅读,更多相关《学习vi和vim编辑器第七版.docx(42页珍藏版)》请在冰豆网上搜索。
学习vi和vim编辑器第七版
前言
文本编辑是电脑系统最普通的操作任务之一,而vi编辑器是系统上最有效的标准文本编辑器之一。
通过vi编辑器你可以创建新的文件或是编辑任何已有的纯文本文件。
Vi编辑器如同很多在Unix早期阶段开发的应用程序一样,有着不易使用的名声。
BramMolenaar的克隆加强版,vim(ViImproved)已经走了很长的一段路来消除这样的印象。
Vim包含了很多的便利功能,如直观的指示、帮助页面等。
它可能已经成为一种最流行的vi编辑器版本,所以本书的第七版为此专门在第二部分辟出七个新单元,并命名为vim。
当然,还有很多其它有价值的vi克隆版本同样存在,我们在第三部分选取了它们中的三个,并命名为otherviinclones。
本书的范围
本书包括的18个单元和4个附录被分成了四个部分。
第一部分,vi的基础与进阶,是为了让你快速入手vi,并且后面的高级技巧会让你vi用的更加得心应手。
最初的两个单元,单元1,vi文本编辑器,和单元2,简单的编辑,介绍了一些你可以入门的简单vi命令。
你应当不断练习直到这些命令成为你的第二天性。
你可以在第2单元后停止阅读,在已经学习了一些基础的编辑工具后。
但是vi意味着干很多又不仅仅是和基本词汇有关的过程;各种各样的命令和选项能使你应对很多编辑的苦差事时更加简便。
第3单元,MovingAroundinaHurry,和第4单元beyondthebasis,专注于用更简单的方法去完成目标。
在你第1次阅读期间,你至少会了解到vi能做什么和你可以利用什么命令来完成你特定的需求。
后来,你可以回过来再看这些单元做更深一步的学习。
第5单元,介绍ex编辑器,第6单元,全局替换,和第7单元高级编辑,提供工具帮助你转移更多的编辑重担到电脑上。
这几单元向你介绍基于vi的exline编辑器,这几单元还向你展示了如何分配ex命令通过vi。
第8单元,vi克隆版本的介绍,
材料如何体现
我们的基本思想是给你们一些我们觉得对新用户有用的vi知识的概述。
学习一个新的编辑器,尤其是
Vi命令的讨论
一个键盘按钮的图片。
约定
第一部分
Vi编辑器的基础与进阶
第1部分是
第一单元
Vi文本编辑器
Unix有很多可以改进文本内容的编辑器
一个简洁的历史观点
在钻研vi的来龙去脉之前,它会帮助你理解你工作平台上的vi的理念。
尤其,这会帮助你搞很多清楚vi各样更多的隐蔽的错误信息,同样可以体会vi的克隆版在原始vi基础上如何进步。
Vi的数据会回来当用户在终端上工作通过串行线连接到中央微型计算机。
在全世界有成百上千不同类型的终端存在并被使用。
每一种都做着相同的事情(清屏,移动光标等等),但是那些被用来让它们执行的命令却是不同的。
另外,unix系统让你自己选择字符用作退格,产生一个中断信号,或是其它有用的命令在串行终端上,例如暂停和恢复输出。
这些设备以前是(现在仍然是)管理着设备终端。
原始的通用字符缓冲器版本的vi摘录终端控制信息
打开和关闭文件
你可以用vi编辑任何文本文件。
Vi复制需要编辑的文件到缓冲区中(一个在储存器中临时储存数据的地方),显示缓冲区的内容(虽然你同时只能看到一屏幕的东西),然后让你增加,删除,和更改文本。
当你储存你编辑好的东西,vi复制编辑好的缓存区的内容回到外存贮器,覆盖相同名字的旧文件。
要记住你一直在复制了你的文件的缓冲区上工作,你的编辑将不会影响你的原始文件直到你储存缓冲区。
储存你的编辑文件也叫做“写入缓冲区”,或更普通“写入你的文件”。
打开文件
Vi是用来启动vi编辑器来打开一个已存在的文件或是一个全新的文件的unix命令。
Vi命令的语法是:
$vi【文件名】
括号在如上的命令行中显示出文件名是可选择的。
括号不可以被打出来。
$符号是unix的提示。
如果文件名被忽略,vi编辑器将打开一个没有名字的缓冲区。
你可以指定名字当将缓冲区写入文件。
就现在,不过,还是让我们坚持在命令行给文件起名。
文件名在它的目录下必须是独一无二的。
一个文件名可以包括任何8-bit的字符除了斜线号(/),这个符号是保留用来在路径名中分离文件名和目录名的,空字符,零bit的字符。
你甚至可以在文件名中包括空格通过打反斜杠号在空格之前。
实际上,不过,文件名通常包含各种组合的大小写字母,数字,点号(.),和下划线(_)。
记住unix系统是区分大小写:
小写字母和大写字母是区分的。
也要记住你必须按ENTER去告诉unix你已经输入完你的命令。
当你在目录下想打开一个新文件是,在文件名前加上vi命令。
例如,如果你想打开一个新文件叫practice在当前目录下,你需要输入:
$vipractice
既然这是一个新文件,缓冲区是空的,屏幕显示如下:
~
~
~
"practice"[newfile]
波浪线(~)递降排列在屏幕左边显示出在文件中没有内容,甚至不空行。
在底部的提示行(也叫状态行)显示文件名和文件状态。
你也能编辑在目录下任何存在的文本文件只要通过指定文件名。
如果有unix文件有这样的路径/home/john/letter。
如果你已经在/home/john目录下,用相对路径。
例如:
$viletter
将文件letter副本复制到屏幕。
如果你在另一个目录,要给出完全路径才能开始编辑:
$vi/home/john/letter
打开文件的问题
·当你调用vi是,信息[openmode]出现。
你的终端类型可能没有被正确的识别。
快速退出编辑模式通过输入:
q。
检查环境变量$TERM。
它应当符合你的终端名。
或者去告诉你的系统管理员提供准确的终端类型设置。
·你看见如下信息之一:
Visualneedsaddressablecursororuplinecapability
Badtermcapentry
Termcapentrytoolong
Terminal:
Unknownterminaltype
Blockdevicerequired
Notatypewriter
你的终端类型要么没有定义,要么terminfo和termcap进入方面可能有一些问题。
输入:
q退出。
检查你的$TERM环境变量,或者告诉你的系统管理员为你的环境选择一个终端类型。
·[newfile]信息出现当你觉得这个文件早已存在。
检查一下你在文件名是否用对了大小写(unix的文件名是区分大小写的)。
如果你没有错,你可能在错误的目录下。
输入:
q退出。
然后检查文件是否在正确的目录下(在unix提示下输入pwd)。
如果你在正确的目录下,检查在这目录下的文件列表(通过ls)是否有存在文件名相近的名字。
·你调用vi,但是你却得到冒号提示(显示你在ex行编辑模式)。
你可能在输入了什么东西在vi刷屏前。
进入vi通过输入vi在ex提示(:
)下。
·如下之一的信息出现:
[Readonly]
Fileisreadonly
Permissiondenied
“Readonly”表明你只能查看文件;你不能保存你的修改。
你可能调用了vi的查看模式(按了view或是vi-R),或者你对此文件没有权限。
看一下在第10页标题为“保存文件的问题”的内容。
·如下之一的信息出现:
Badfilenumber
Blockspecialfile
Characterspecialfile
Directory
Executable
Non-asciifile
Filenon-ASCII
你要打开编辑的文件不是一个正常的文本文件。
输入:
q!
退出,然后检查你想编辑的文件,可能有文件命令。
·当你输入:
q因为前面提到的任一困难出现时,出现如下信息:
Nowritesincelastchange(:
quit!
Overrides)
你已经不小心修改了文件。
通过输入:
q!
退出vi。
你在对话期间的修改将不会保存在文件中。
做法
正如先前提到的,现在的“模式”的概念是非常重要的对于vi的工作来说。
有两种模式,命令模式和插入模式,你起始于命令模式,你的任何键盘敲击都将被看做是命令。
在插入模式,你输入的任何东西都将变成你文件中的文本。
有时,你可能不小心进入插入模式,或是相反的,离开插入模式一不小心。
不论发生何种情况,你输入的东西将会影响你的文件时是你所不期望。
按ESC键去强制vi进入命令模式。
如果你早已进入命令模式,vi编辑器会嘟嘟响提示当你按ESC键时。
(因此命令模式此时有时又叫做“嘟嘟响模式”)
一旦你安全的再命令模式中,你就可以动手修复任何突发性的变化,然后继续编辑你的文本。
保存和退出一个文件
你可以退出编辑文件任何时候,保存你的编辑,然后退出到unix的提示界面。
Vi编辑器的退出并保存的命令是ZZ。
ZZ是大写的。
让我们假定你创建了一个文件叫practice来练习vi命令,你打了六行的内容。
为了保存文件,首先检查你在命令模式通过按ESC键,然后按ZZ。
按的键结果
ZZ结束编辑和保存命令,ZZ。
你的文件被保存为正常的unix文件。
Ls
你同样可以用ex命令保存你的编辑。
输入:
w保存你的文件但是不会退出vi;输入:
q退出如果你没有做任何编辑;输入:
wq同时保存你的文件和退出。
(:
wq和ZZ相等。
)我们会在第5章详尽解释如何用ex命令;暂时,你只需要记住一些关于编辑和保存的命令。
退出并不保存编辑
当你第一次学习vi编辑器,尤其如果你是一个无谓的实验者,有两个其它的ex命令可以容易的解除你创造的任何混乱。
如果你想清除所有你在对话框内的编辑然后回到原始文件怎么办?
如下命令:
:
e!
ENTER
你就退回到你上一次保存的文件内容,你现在可以重新开始了。
如果,你想清除你的编辑内容并只是退出vi怎们办?
如下命令:
:
q!
ENTER
你就退出了编辑而且回到了unix的提示符。
这两个命令,你将失去自从你上一次保存到现在所有你编辑在缓冲区的东西。
Vi一般不会让你知道扔掉了你的编辑。
感叹号加到:
e和:
q命令后面让vi忽略这个禁止,继续操作即使缓冲区已经被修改。
保存文件的问题
·你尝试写入文件,但是得到如下之一的信息:
Fileexists
Filefileexists-usew!
[Existingfile]
Fileisreadonly
输入:
w!
file覆盖已存在的文件,或是输入:
wnewfile保存已编辑的文件到新的文件。
·你想写入文件,但是你没有写入这个文件的权限。
你得到信息“Permissondenied”
用:
wnewfile将缓冲区的内容写出到新的文件,如果你在这个目录下有写入的权限,你可以用mv取代原来版本通过复制这个文件。
如果你没有这个目录下写入的权限,输入:
wpathname/file将缓冲区的内容保存到你有权限写入的目录下去(例如你的主目录或是/tmp).
·你尝试写入你的文件,但是你得到信息告诉你文件系统已满。
输入:
!
rmjunkfile去删除(很大)没用的文件释放一些空间。
(通过一个感叹号开始ex命令让你使用unix。
)
或是输入:
!
df看一下在其它的文件系统里是否有空间。
如果有,在文件系统上选择一个目录,写入你的文件到那目录下:
wpathname。
(df是unix命令检查一个磁盘上的空闲空间。
)
·系统让你处在打开状态然后告诉你文件系统已满。
Vi在磁盘上的临时文件已被存满。
输入:
!
ls/tmp看一下是否有其它文件你可以移走已得到一些磁盘空间。
#如果有,建立一个临时的unixshell以移除文件或建立其它的unix命令。
你可以建立一个Shell通过输入:
sh;输入CTRL-D或exit终止shell回到vi。
(在现在的unix系统上,当使用一个作业控制shell,你可以简单的输入CTRL-Z暂停vi回到unix提示符;输入fg回到vi。
)一旦你已经释放一些空间,写入你的文件用:
w!
。
·你尝试写入你的文件,但是你得到一个信息说你的磁盘配额已经达标。
尝试强行系统保存你缓冲区的内容通过ex命令:
pre(:
preserve的缩写)。
如果没用,找一些文件移除。
用:
sh(或CTRL-Z如果你正在用作业控制系统)搬离vi和移除文件。
用CTRL-D(或fg)回到vi当你已经做完。
然后写入你的文件用:
w!
。
练习
学习vi的唯一方法就是练习。
你现在知道了足够的知识去创建新的文件和回到unix提示符。
创建一个文件叫practice,插入一些文本,然后保存并退出文件。
打开一个叫practice的文件在当前目录下:
vipractice
插入文本:
iamtextyoulike
回到命令模式:
ESC
退出vi,保存编辑:
ZZ
#你的vi可能保持它的临时文件在/usr/tmp,/var/tmp或你现在的目录;你可能要到处闲逛明确找到是哪里空间用完了。
Vim一般保持它的临时文件在你编辑文件的目录下。
第二单元
简单编辑
这一章将介绍用vi编辑,本章是用来当自学教程的。
本章我们将学习如何移动光标和如何做一些简单的编辑。
如果你从没有用vi工作过,你应该阅读全章。
稍后本章将向你展示如何长进你的技术以更快更好的编辑。
对于精于vi的用户来说一个最大的好处就是有很多的选项可供选择。
(对于新手来说一个最大的坏处就是vi有太多的复杂编辑命令。
)
你不可能学习vi通过学习没一个vi命令。
起步通过学习本章介绍的基础命令。
记录下常见的命令使用时的图像。
当你学习vi,注意让更多的任务你是可以交给编辑器的,然后找到命令完成它。
在接下来的一章你会学到更多vi高级的特征,但是在你掌握高级的之前,你必须先掌握简单的。
这一章包括:
·移动光标
·加入和改变文本
·删除,移动,和复制文本
·更多的方法进入插入模式
Vi命令
Vi有两个模式:
命令模式和插入模式。
你一进入文件,你就进入命令模式,编辑器就一直等你输入命令。
命令能让你移动到文件的任何地方,去编辑,或是进入插入模式和加入新的文本。
命令同样可以被用来退出文件(保存或忽视你的编辑)以回到unix的提示符。
你可以理解为不同的模式代表了两种不同的键盘。
在插入模式,你的键盘功能相当于一个打字机。
在命令模式,每一个键有一个新的意义或初始一些指令。
有好几种方法告诉vi你想进入插入模式。
最常用的方法之一就是按i。
i不会出现在屏幕上,但是之后你按的无论你按什么都将会出现在屏幕上也将会存入缓冲区。
光标标记现在插入点。
*想告诉vi你想停止插入文本,按ESC。
按ESC就移动光标回到一个地方(所以那是你最后输入的字符)回到vi的命令模式。
例如,假如你已经打开一个新文件想插入单词“introduction。
”如果你输入了iintroduction,在屏幕上显示的是
introduction
当你打开一个新的文件,vi开始于命令模式只要第一个按(i)就打断进入插入模式。
之后所有的键盘输入都将被认为是文本输入直到你按ESC。
如果你需要修正一个错误然而你却在插入模式,退格并修正错误。
基于你在使用的终端类型,退格可能会清除你先前已经输入的或可能只是回退了。
在其它的事情中,所有你回退的都将被删除。
记住你不能用退格键回退到你进入插入模式的点的前面。
(如果你已经禁用了vi的兼容性,vim允许你用退格回退到你进入到插入模式的点的之前。
)
Vi有一个选择让你定义一个正确的页边白和提供自动回车当你到达它的时候。
就目前,当你正在插入文本,按ENTER换行。
有时你自己不知道是在插入模式还是在命令模式。
无论什么时候vi不会回应如你所期望的,按ESC一两次以检查你在什么模式下。
当你听到蜂鸣声,你就在命令模式。
移动光标
你可能用只用一小会的时间在编辑会话加入新的文本在插入模式;很多时候你会很多时间编辑以退出文本。
在插入模式你可以定位光标到文件的任何地方。
既然你开始所有基础编辑(改变,删除和复制文本)通过定位光标到你想改变的地方,你想能移动光标到目的地越快越好。
*一些版本在状态行显示你在(inputmode)插入模式
有以下vi命令来移动光标:
·上,下,做和右——每一次移动一个字母
·向前或向后一个文本块如一个单词,一个句子,一个段落。
·向前或向后翻过一个文件,一屏幕一次。
在图2-1,一个下划线表示出现在光标的位置。
圈圈显示了光标从它现在的位置移动到通过不同的vi命令到的位置。
图2-1,简单的移动命令。
简单的移动
键h,j,k和l,权利在你指尖,将移动光标。
h
左,一个空格
j
下,一行
k
上,一行
l
右,一个空格
你同样可以用光标箭头键(←,↓,↑,→),用+和-上升和下降,或用ENTER和BACKSPACE,但它们不常用。
一开始,似乎用字母键替代箭头键移动光标有点麻烦。
过了一段时间,然而,你就会发现这将是你最喜欢vi的一点之——你可以移动光标甚至不用将你的手指离开中心键盘区域。
在你移动光标之前,按ESC以确认你已经在命令模式下。
用h,j,k和l在文件中从光标现在的位置前后的移动。
当你在一个位置已经移动到极限时,你会听一记嘟声然后光标停止了。
例如,一旦你在一行的开始或者结尾处,你就不能用h或l回到前一行或下一行;你必须用j或k。
+简单说来,就是你不能移动光标超过代表空行的波浪线(~),你也不能移动光标到第一行文本之上。
数值参数
你可以先于移动命令前加入数字。
图2-2显示出4l命令如何光标向左移动四个字符,就好像你已经输入l四遍了(llll)。
图2-2,和数字的复合命令
能输入复合命令给你更多的选择和每一个你学的命令更强的功能。
把这个记住就如你被介绍了额外的命令。
当你保存文件practice时,vi显示一个信息告诉你有在那个文件里有多少行。
行不一定如出现在屏幕上的轮廓线一样有相同长度(一般限制在80个字符)。
一行就是任何文本被插入在新行之间(新的一行将被插入进文件当你在插入模式中按ENTER键。
)如果你在按ENTER键之前输入了200个字符,vi认为这200个字符就是一行(即使这些200个字符在屏幕上明显的被分成了好几行)。
正如我们在第一章中提到的,vi有一个选项允许你设置到右边白的距离然后vi会自动换行。
这个选项是wrapmargin(它的缩写是wm)。
你可以设置一个wrapmargin10个字符:
:
setwm=10
这个命令不会影响你已经输入的行。
我们会谈论更多的设置选项在第7章。
(这个真的不能等!
)
如果你不用vi的自动wrapmargin选项,你应该换行用回车键以保持可控制的行的长度。
+vim,有nocompatible(兼容模式)设置,允许你“跳过空白”行的尾部到下一个用l或空格。
两个在一行中移动的有用的命令:
0(数字零)
移动到行首。
$
移动到行尾。
在如下的例子中,行号被显示出来。
(行号可以在vi中被显示出来通过用数字选项,通过在命令模式下输入:
setnu开启这个功能。
这个操作将在第七章介绍。
)
逻辑上的第(3)行并不符合你在屏幕上所看见的第(5)行。
如果光标现在在单词word的d上,然后你按$,光标会移动到这一周期最后的单词word。
如果你输入0,光标会移回到单词move中的m,第2行的开头。
文本块的移动
你同样可以在文本块间移动光标:
单词,句子,段落,等等。
w命令光标每一次向前移动一个单词,计数符号和标点符号相当于单词。
如下的一行显示出用w命令的光标的移动:
Cursor,delete,lines,insertcharacters,
你同样可以移动光标通过一个单词,而不包括计数符号和标点符号,用W命令。
(你可以把它看做一个“大的”或“大写”的Word。
)
光标的移动用W就是这样:
Cursor,delete,lines,insertcharacters,
一个单词的向后移动,就用b命令。
大写的B允许你回移一个单词,不包括计数符号。
正如先前所提到的,移动命令采取数值参数;所以,用无论是w或b命令以可以用数字增加移动。
2w向前移动两个单词;5B向后移动5个单词,不包括计数符号。
为了移动到专门的一行,你可以用G命令。
单个G移动到文件末尾,1G到文件的开头,还有42G则到第42行。
这个将会有更多的细节描述在接下来的第43页的一章“G(GOTO)命令”。
图2-3校对编辑
我们将讨论句子和段落的移动在第3章。
现在呢,练习使用你所知道的光标移动命令,将它们结合数字乘数。
简单的编辑
当你进入你文件的文本时,它很少是完美的。
你找到打字错误或是想改进短语;有时你的程序有一个错误。
一旦你进入文本,你就能去改变它,删除它,移动它,或复制它。
图2-3显示出你对于这个文件想编辑成的样子。
编辑被校对符号标示出来。
在vi编辑器中你可以实现这些编辑通过一些简单的基础的按键:
i是插入(你早已经看到过了);a是附加;c是改变;和d是删除。
要移动或复制文件你用了很多组命令。
你移动文本用d为了“删除”,然后用p为了“放置”;你复制文本用y为了“移出”,然后p为了“放置”。
每一种编辑在本节中都会被描述。
图2-4显示出你所用的vi命令编辑在图2-3中所做的标记。
插入新的文本
你已经看到在插入模式下向文件中输入新的文本。
你同样可以在插入模式下当编辑存在的文本增加遗失的字母,单词和句子。
在文件practice,如果你有以下句子:
Youcanscroll
Thepage,movethecursor,delete
Line,andinsertcharacters.
图2-4用vi命令编辑
正如光标标示出来的位置。
要插入Withascreeneditor在句子的开头,输入如下:
按键结果
2k用k命令移动光标向上两个,移动到你想要插入的地方
iwitha按i进入插入模式开始编辑文本
屏幕编辑器
ESC完成编辑文本,按ESC结束插入模式回到命令模式
附加文本
你可以附加文本在你文件的任何地方只要用附加命令,a。
这个工作几乎和i是一个样的,除了文本被插入在光标后而不是光标前。
你可能已经意识到当你按i进入插入模式,光标不会移动直到你输入了一些文本之后。
相反,当你按a进入插入模式,光标向右移动一个空格。
当你输入文本,它出现原始光标位置的后面。
改变文本
你可以替换你文件中的任何文本用修改命令,c。
要告诉c多少文本要修改,你可以符合c和移动命令。
这种方式,一个移动命令充当成文本对象让c命令去影响。
例如,c可以被用来从光标改变文本:
cw
到单词的末尾
c2b
回到前两个单词
c$
到行的末尾
cO
到行的开头
发表一个修改命令之后,你可以用选中的文本替换任何多的新文本,一个字母没有,一个字母,或成百上千行也行。
C,就像i和a一样,让你进入插入模式直到你按ESC键。
当修改只在本行起效时,vi在文本的末尾用$标记要被修改的东东,所以你可以看到行的什么部分被影响。
(再看cw的例子。
)
单词
去修改一个单词,结合c命令(修改)与w对付单词。
你可以用一个长一点的或短一点的单词(或任何文本)替换一个单词(cw)。
cw可以被认为是“标示删除单词和插入新的文本直到ESC被按。
”
假如你有如下一行文本在你的文件practice中:
Withaneditoryoucanscrollthepage,
你想修改an成ascreen。
你只需要修改一个单词:
按键结果
w用w移动到你想开始编辑的地方
cw敲修改单词的命令。
文本的末尾将会被标示一个$(英镑符号)
Ascreen输入替换的文本,然后按ESC回到命令模式。
cw同样可以用在一个单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 vi vim 编辑器 第七