`

vi命令详解

阅读更多

 

vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原来文件的内容。 vi命令详解

vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原 

来文件的内容。 

 

  注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后保存的文件版本将被保留。 

 

下面是vi命令使用的一些选项及含义:          

 

  -c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command . 

 

  -r filename 恢复指定的文件filename .          

 

  -R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改。 

 

  -y number 将编辑窗口的大小设为number行。          

 

  下面是vi编辑所处的三种模式:          

 

  .命令模式 进入vi时所处的模式。在此模式下用户可输入各种子命令对进行*作,如删除行、粘贴行、移向下一个字、移向不同行等。 

 

  .文本输入模式 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或c键可进入文本输入模式,按Escape键可返回命令模式。 

 

  .命令项模式 在此模式下,可以通过子命令输入更多的参数。如:w子命令要求输入一文件名,"/"子命令要求输入一个查找项。用户使用Escape键返回命令模式。 

 

 

下面是自命令模式下执行的,在同一行上移动的自命令:          

 

  h 将光标左移一格。          

 

  l 将光标右移一格。          

 

  j 将光标下移一格。          

 

  k 将光标上移一格。          

 

  w 将光标移到下一个小字的前面。          

 

  W 将光标移到下一个大字的前面。          

 

  b 将光标移到前一个小字的前面。          

 

  B 将光标移到前一个大字的前面。          

 

  e 将光标移到下一个小字的后面。          

 

  E 将光标移到前一个大字的后面。          

 

  fc 把光标移到同一行的下一个c字符处。          

 

  Fc 把光标移到同一行的前一个c字符处。          

 

  tc 把光标移到同一行的下一个字符c的前一格。          

 

  Tc 把光标移到同一行的前一个字符c的后一格。          

 

  number| 把光标移到递number列上。          

 

下面是命令模式下在行间移动的子命令:          

 

  +或Enter 把光标移至下一行第一个非空白字符。          

 

  - 把光标移至上一行第一个非空白字符。          

 

  0 把光标移到当前行的第一个字符处。          

 

  $ 把光标移到当前行的最后一个字符处。          

 

  H 把光标移到屏幕最顶端一行。          

 

  L 把光标移到屏幕最底端一行。          

 

  M 把光标移到屏幕中间。          

 

下面是命令模式下改变屏幕显示的子命令:          

 

  z- 把当前行作为屏幕的最后一行,并重新显示屏幕。          

 

  z. 把当前行作为屏幕的中间一行,并重新显示屏幕。          

 

  Ctrl+l 重新显示屏幕当前内容。          

 

  /pattern/z- 寻找pattern的下一个位置,并把所在行设为屏幕的最后一行。 

 

下面是在命令模式下用来显示页面的子命令:          

 

  Ctrl + f向后滚一页。          

 

  Ctrl + d向后滚半页。          

 

  Ctrl + b向前滚一页。          

 

  Ctrl + u向前滚半页。          

 

  Ctrl + e屏幕向下滚一行。          

 

  Ctrl + y屏幕项上滚一行。          

 

下面是在命令模式下用来查找字符串所使用的子命令:          

 

  /pattern 向后寻找指定的pattern ,若遇到文件尾,则从头再开始。 

 

  ?pattern 向前寻找指定的pattern ,若遇到文件头,则从尾再开始。 

 

  n 在上次指定的方向上,再次执行上次定义的查找。          

 

  N 在上次指定的方向的相反方向上,再次执行上次定义的查找。          

 

  /pattern/+number 将光标停在包含pattern的行后面第number行上。 

 

  /pattern/-number 将光标停在包含pattern的行前面第number行上。 

 

  % 移到匹配的"()"或"{}"上。          

 

下面是在文本输入模式下用来输入文本的子命令(用户可在任何时候按Escape返回到命令模式): 

 

  a 在光标之后开始输入文本。          

 

  A在行尾开始输入文本。          

 

  i在光标之前开始输入文本。          

 

  I在行首第一个非空白字符前输入文本。          

 

  o在光标所在行后插入一空行。          

 

  O在光标所在行前插入一空行。          

 

下面是在命令模式下改变文本所使用的子命令(用户可在任何的时候按Escape键返回到命令模式): 

 

  cc或S 删除一整行。          

 

  C 改变一行光标位置以后的部分。          

 

  cw 改变光标所在单词。          

 

  dd删除当前行。          

 

  D 删除光标所在行光标后面的内容。          

 

  dw删除光标所在的单词。          

 

  J 把下一行内容加到本行行尾。          

 

  rc把光符所在字符替换成c .          

 

  R 覆盖本行内容。          

 

  u恢复上一次的修改。          

 

  x删除光标所在的字符。          

 

  ~ 改变光标所在出字符的大小写。          

 

  . 重复上一个*作。          

 

  <<把当前行移到左边。          

 

  >>把当前行移到右边。          

 

下面是用于文件中拷贝文本的字命令:          

 

  p 将缓冲区内容取到光标所在行的下面一行。          

 

  P 将缓冲区内容取到光标所在行的上面一行。          

 

  "bd 将文本删除至有名缓冲区b .          

 

  "bp 张贴有名缓冲区b中内容。          

 

  yy把当前行放入缓冲区。          

 

  Y 把当前行放入缓冲区。          

 

  Yw把光标所在的单词放入缓冲区。          

 

下面是用于保存文件的子命令:          

 

  :w 回写修改后的文件。          

 

  :w filename 当filename不存在时,把修改后的文件存为文件filename ,当文件filename 

存在时,报错。 

 

  !w filename 如果文件filename存在时,把修改后的文件保存为文件filename . 

 

下面列出了在vi编辑的多个文件之间切换所用的子命令:          

 

  :n开始编辑vi激活的文件列表中的下一个文件。          

 

  :n filenames 指定将被编辑的新的文件列表。          

 

下面列出了用于在当前文件和另外一个文件间切换的子命令:          

 

  :e filename 使用filename激活vi (在vi中装入另一个文件filename)。 

 

  e!重新装入当前文件,若当前文件有改动,则丢弃以前的改动。          

 

  :e+filename 使用filename激活vi ,并从文件尾部开始编辑。 

 

  :e+number filename 使用filename激活vi ,并在第number行开始编辑。 

 

  :e# 开始编辑另外一个文件。          

 

下面是在本文件中加入其他文件代码所使用的子命令:          

 

  :r filename读取filename文件,并将其内容加到当前文件后。   

 

  :r ! command执行command文件,并将其输出加到当前文件后。   

 

下面是vi中其他的子命令:          

 

  ctrl+g 取得正在编辑文件的有关信息。          

 

  :sh启动sh ,从sh中返回可用exit或ctrl+d .          

 

  :! Command 执行命令command .          

 

  !!重新执行上次的:! Command子命令。          

 

  :q退出vi ,若用户对编辑的文件有所修改,系统不会让用户使用q命令退出。   

 

  :q!退出vi而不管是否对文件有改动。          

 

  ZZ或:wq 保存对文件的修改并退出vi .          

 

  用户可在一个特殊的文件.exrc中定义特殊的vi命令。在vi中使用这些命令时,必须在该 

命令前加上一个冒号( :) 。  

 

 

===============================================================================

 

Solaris vi用法2008-05-04 13:43出处:

 

输入命令 

 

Quote 

 

a 在光标右侧输入文本

A 在光标所在行的末尾输入文本

i 在光标左侧输入文本

I 在光标所在行的开头输入文本

o 在光标所在行的下一行开始新行

O 在光标所在行的上一行开始新行

 

定位命令 

 

Quote 

 

h,左箭头,退格键 光标左移一个空格

j,下箭头 光标下移一行

k,上箭头 光标上移一行

l,右箭头 空格键光标右移一个空格

w 光标右移,到下一个字开头

b 光标左移,到前一个字开头

e 光标右移,到下一个字末尾

$ 光标右移到行结尾

0,^ 光标左移到行开头

enter 光标移到下一行开头

ctrl-f 下翻一屏

ctrl-d 下滚半屏

ctrl-b 上翻一屏

ctrl-u 上滚半屏

ctrl-L 刷新屏幕

 

编辑命令 

 

Quote 

 

x 删除光标所在处的一个字符

dw 删除字(或者删除字的一部分,从光标所在处到字结尾)

dd 删除光标所在行

D 删除光标光标所在处之右的行

:5,10d 删除5-10行

:3dw 删除光标所在处开始的三个字

:3dd 删除光标所在行开始的3行

 

撤销、重复、修改文本命令 

 

Quote 

 

cw 修改字(部分字,从光标所在处开始到一个字的结尾)

R 从当前光标所在处位置开始替换字符(注:vi将进入编辑模式)

C 从光标坐在处开始修改,到行末尾结束

s 用字符替换字符串

r 替换当前光标所在的字符

J 合并当前行以及下面行

Xp 转置光标所在处字符与另一字符

~ 更改光标所在处字符大小写

u 放弃最近的修改

U 放弃对当前行所作的修改

:u 放弃上一个最后行命令(用于最后行模式)

:r filename 在当前光标所在处读入文件文本

 

查找和替换文本 

 

Quote 

 

/string 向下查找字符串string

?string 向上查找字符串string

n 查找字符串string的下一个出现

N 查找字符串string的上一个出现

:%s/old/new/g 全局查找和替换

 

拷贝和粘贴文本 

 

Quote 

 

yy 复制一行文本,并将他们放入到临时缓冲区

p 将临时缓冲区中的内容放置到光标后面的位置

P 将临时缓冲区中的内容放置到光标前面的位置

:l,3 co 5 拷贝1-3行的文本,并把它放置在第5行后面

:4,6 m 8移动4-6行到第8行,第6行称为第8行,第5行称为第7行,第4行称为第6行

 

保存和退出文件 

 

Quote 

 

:w 保存文件,不退出vi

:w new_filename保存到文件new_filename中

:wq 保存修改退出vi

:x 保存修改并退出vi

ZZ 保存修改且退出vi

:q! 不保存修改,退出vi

:wq! 保存修改,退出vi

 

定制vi会话 

 

Quote 

 

:set nu显示行号

:set nonu隐藏行号

:set ic设置搜索时忽略大小写

:set noic搜索时对大小写敏感

:set list显示不可视字符

:set nolist不显示不可视字符

:set showmode显示当前操作模式

:set shownomode不显示当前操作模式

:set显示所有的vi环境变量设置

:set all显示所有的vi环境变量可能取值及其当前设置值

 

你也可以把这些操作放在home目录下你创建的文件.exec中,set操作放在该文件中,不用带前面的:,一行一个命令,一旦该文件存在时,每次你开启一个vi会话时系统将取读取该文件来设置对应的vi环境变量。

 

定位命令 

 

Quote 

 

G 到文件最后一行

1G 到文件的一行

:21到第21行

21G到第21行

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics