LUPA首页 | 资讯 | 教程 | 下载 | 求职 | 方案 | 博客 | 交易 | 英文版
LUPA论坛


 
标题: 简单介绍vi的使用方法[译文]
wutong
关注开源
Rank: 2



UID 141651
精华 0
积分 123
帖子 6
LUPA币 120 点
阅读权限 20
注册 2008-2-24
发表于 2008-4-27 16:15  资料 短消息 
简单介绍vi的使用方法[译文]

此文译自"Running Linux (4th edition)",如有错误,敬请指正。

[1] 运行vi
  让我们启动vi并编辑一个文件。启动vi的命令是:
vi filename
  例如:
eggplant$ vi test
  这个命令将打开并编辑文件test,如果这个文件不存在,就会新建它。(eggplant是登入用户。)
你的屏幕看起来可能是这样的:

  ~
  ~
  ~
  "test" [New File]

  其中的~字符列说明当前光标位于文件的末尾,~字符并不属于这个文件。

[2] 插入文本和移动光标
  使用vi的时候,vi都处于两种操作模式之一,或者说三种,取决于你怎么看。这些模式为:命令
模式(command mode),编辑模式(edit mode),扩展模式(ex mode)。
  启动vi之后,它处于命令模式。我们很快会看到,这个模式允许你使用很多命令(通常是单个字母)
来修改文本。文本通常是在编辑模式下插入或者修改的。按一下字母i,vi就进入了编辑模式,这样就
可以打字插入文本了。
  在插入文本的时候,你想要输入多少行就输入多少行,当然换行需要键入Enter键,并且可以使用
Backsapce键改正错误。按一下Escape键,就可以结束编辑模式,回到命令模式。
  在命令模式下,你可以使用方向键在文件里面移动。你也可以使用hjkl这四个键,分别向左下上右移动
光标,特别是方向键不能工作的情况下。
  除了按i键,还有几种方法进入编辑模式以插入文本。命令a在光标位置之后插入文本。命令o在当前行
之后开始新的一行并插入文本。
  记住,任意时刻,vi可能处在命令模式(此时i a 或o命令是有效的),或者编辑模式(此时可以插入
文本,按Escape后回到命令模式)。如果不确定处于什么模式,就按一下Escape。这使得处于编辑模式
时退出之,若是处于命令模式则什么也不做,除了一声鸣叫。

[3] 删除文本和取消改动
  在命令模式下,x命令删除光标下的字符。你可以用dd命令(按d两次)删除一整行。
  刚刚删除的文本可以用p命令重新插入文件。按p可以将上次删除的内容插入到当前行之后。按P(大写)
可以将之插入到当前行之前。默认地,p和P会从"undo buffer"(回退缓存)取得文本;你可以从其他缓存
抽取文本,这个后面我们会看到。
  命令u取消最近的改动。命令dd之后,按u等同于按p。如果用了i命令进入编辑模式并输入了大块文本,回到
命令模式立即按u会取消刚才的输入。
  命令dw可以删除一个单词光标之后的字母。

[4] 修改文本
  你可以用R命令改写文本,这将改写从光标处的文本。
  你可以用r命令改写光标下的一个字符。这个命令不会使你处于插入状态,所以没必要用Escape来回到命令
模式。
  命令~将改变光标下的字母的大小写,从大写到小写,或反之。
  另一个有用的改变单词的命令是cw命令,这个命令(按下Escape之后)去除原词光标后的任何东西,并且可以
直接开始输入新词。假如新词比原词要长,那么空间会自动按需扩展。

[5] 移动命令
  你已经知道怎样利用方向键在文档里面移动。此外,w命令把光标移动到下一个单词的开始,b命令当前单词
的开始。命令0(零)把光标移动到当前行的开始,命令$把它移动到行末。
  编辑大文件时,你可能想要整个屏幕地向前或者向后移动。命令Ctrl-F向前移动一个屏幕,命令Ctrl-B向后
移动一个屏幕。
  命令G可以把光标移动到文件的末尾。你也可以移动到任意一行:命令10G把光标移动到第10行。如要移动到
文件的开头,可用1G。
  键入/和文本模式(pattern),在按回车Enter,会让你跳到光标之后第一次出现这个文本模式的地方。例如,
键入/burg并按回车,会把光标向前移动到后面第一次出现burg的地方。用?替代/将向后(反向)搜索文件。
  跟随/和?之后的文本模式,实际上是一种正则表达式。正则表达式是一种为搜索和替换操作定义模式的强大
的方法,它用于许多Unix工具。利用正则表达式,举例来说,你若要搜索下一个大写字母,可以用这样的命令:
  /[A-Z]
  因此,如果用于搜索的文本模式不是静态的字符串,就可以使用正则表达式来定义你所想要的。
  你可以把移动命令和其他命令配合起来使用,比如删除命令。例如,命令d$将删除从光标到行末的所有的字
符;命令dG将删除从光标到文件末尾的所有东西。

[6] 保存文件和退出vi
  在vi中大多数处理文件的命令是在扩展模式(ex mode)下调用的。键入:(冒号),你就可以从命令模式进入
扩展模式。这时,光标将处于窗口的最后一行,让你可以输入多种扩展命令。
  例如,保存写入被编辑的文件,可用命令:w。键入冒号使vi进入扩展模式,随后键入w和回车完成命令输入。
命令:wq将保存写入文件并退出vi。(命令ZZ,在命令模式下,没有冒号,是和:wq相似的,但它首先会检查文件
是否被修改,如被修改才会写入。)
  要退出vi而不保存对文件的改动,可用命令:q!。单单使用:q将退出vi,但仅仅适用于改动已被保存或无改动
的情况。其中的!表示你确实要退出vi。

[7] 编辑别的文件
  要编辑别的文件,可用:e命令。例如,当前正在编辑test文件,接着要改为编辑foo文件,可用这样的命令:
:e foo
  如果你修改文件而没有保存时使用:e命令,你将得到出错信息:
No write since last change (:edit! overrides)
  此时,你可以先用:w保存原来的文件,接着使用:e命令,或者使用这样的命令:e! foo,这个命令告诉vi不保存
原来的文件而编辑新的文件。当你编辑一个文件而意识到弄坏了它时,这个将会有用。这时你可以用:e!命令;当
没有指定文件时,vi将丢弃修改并重新编辑当前文件。

[8] 导入其他文件
  使用命令:r,你可以将其他文件的内容复制到vi缓存。例如,这个命令:
:r foo.txt
可以将foo.txt文件中的内容插入到当前行之后。

[9] 运行Shell命令
  命令:!允许你输入一个Shell命令的名字,这个命令将在vi内被执行。例如,这个命令:
:!ls -F
执行ls命令并在屏幕上显示结果。
  命令:r!和:!类似,但是把所执行命令的标准输出包含到vi缓存中,即插入到当前行之后。
  假如你所用的Shell支持作业控制(job control),比如tcsh和bash,当你需要执行一系列Shell命令时,使用暂停
键通常会变得更容易。

[10] 全局搜索和替换
  vi的功能比这里所涉及到的多得多;大多数功能是以我们已学到的简单功能的组合方式实现的。这里有一两个
其他的功能,大多数vi使用者会觉得有用。
  命令
:[x,y]s/pattern/replacement/flags
在x到y行之间搜索pattern,并且用文本replacement替换出现的pattern。pattern是一种正则表达式;replacement
是文本,但也可包含一些特殊字符用以代表原始pattern中的元素。下面的命令把1到10行之间各行第一次出现的
weeble替换为wobble:
:1,10s/weeble/wobble
相对于给出指定行号,你也可以使用%来代表整个文件。其他的特殊符号也可用于x和y的位置。$代表文件的最后
一行。而让x或y留为空白,代表当前行。
  至于flag,你可以使用g,使得每一行出现的所有pattern都被替换,或者使用c,使得在每次替换之前要求确认。
多数情况下,你会使用g,除非你只想替换每一行第一次出现的pattern。
  你也可以用记号(mark)来表示行。记号不过是单字母的名字,它是给文档内光标的位置起的名字。移动光标
到文件内的某个位置并按下ma,就会在那个位置设置记号a。(记号名字可以是字母a-z或A-Z。)用命令`a(后引号
backquote),可以直接移动光标到记号a处。用普通单引号('a),将把光标移动到记号a所在行的开头。
  记号允许你“记住”代表文本区域的光标位置。例如,如果要对一块文本进行搜索替换,你可移动光标到文本
的开始处,设置一个记号,比如a,接着移动光标到文本的末尾,执行这样的命令:
:'a,.s/weeble/wobble/
其中'a代表包含记号a的行,.代表当前行。

[11] ...
顶部
[广告] 推荐个超酷的web2.0相册
mathbox
开源大师
Rank: 4


UID 31649
精华 0
积分 6580
帖子 464
LUPA币 6348 点
阅读权限 50
注册 2007-2-28
发表于 2008-4-28 09:12  资料 主页 个人空间 短消息 
实用详细 貌似还没写完 希望LZ补全




开源:人之所需,时之所趋,共进之模式!
http://mathbox.lupaworld.com
顶部
[广告] 推荐个超酷的web2.0相册
chinasky
关注开源
Rank: 2



UID 191166
精华 0
积分 51
帖子 2
LUPA币 50 点
阅读权限 20
注册 2008-4-28
发表于 2008-4-28 11:08  资料 短消息 
VI跟dos里面的edit一样,是一个不错的linux文本编辑程序。
顶部
[广告] 推荐个超酷的web2.0相册
mathbox
开源大师
Rank: 4


UID 31649
精华 0
积分 6580
帖子 464
LUPA币 6348 点
阅读权限 50
注册 2007-2-28
发表于 2008-4-28 13:50  资料 主页 个人空间 短消息 
是的 但对于初学者来说 稍微难了点 不过有点耐心的话 也还可以的 呵呵




开源:人之所需,时之所趋,共进之模式!
http://mathbox.lupaworld.com
顶部
wutong
关注开源
Rank: 2



UID 141651
精华 0
积分 123
帖子 6
LUPA币 120 点
阅读权限 20
注册 2008-2-24
发表于 2008-5-2 08:20  资料 短消息 
第11节是关于寄存器和复制文本的,已译出,见附件(全文)。

另外,总结出了最有用的10个命令:
1 按一下Escape键回到命令模式;
2 i从命令模式切换到编辑模式;
3 :q!不保存修改退出vi;
4 :w保存文件(:wq保存并退出);
5 u取消最近的改动(按多次取消最近的多次改动);
6 :%s/pattern/replacement/g全文搜索替换文本(/pattern向前搜索文本);
7 ma设置记号a代表光标位置;
8 d`a删除从记号a到当前光标的文本;
9 p粘贴文本到光标之后;
10 y`a复制从记号a到当前光标的文本到剪切板。


附件: [vi的使用方法] vi_introduction.txt.gz (2008-5-2 08:20, 4.88 K)
该附件被下载次数 48
顶部
 


当前时区 GMT+8, 现在时间是 2008-7-6 06:06
浙ICP备06002895号

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.050309 second(s), 7 queries , Gzip enabled

清除 Cookies - 联系我们 - LUPA开源社区 - Archiver - WAP