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中使用这些命令时,必须在该
命令前加上一个冒号( :) 。
命令状态:
2007-06-05  15:37命令状态:
j,k,h,l:上下左右
0: 行首
$: 行尾
i,I :插入命令,i 在当前光标处插入 I 行首插入
a,A:追加命令,a 在当前光标后追加,A 在行末追加
o,O:打开命令,o 在当前行下打开一行,O在当前行上插入一行
r,R :替换命令,r 替换当前光标处字符,R从光标处开始替换
数字s: 替换指定数量字符
x: 删除光标处字符
dd: 删除当前行
d0: 删除光标前半行
d$: 删除光标后半行
ctrl+f :后翻页
ctrl+b:前翻页
G : 文档尾
数字G: 数字所指定行
/string 查找字符串
n 继续查找
N 反向继续查找
% 查找对应括号
u 取消上次操作
ex命令状态
:set number 显示行号
:set smd 显示显示状态
:0 文档首
:1,5 copy 7 块拷贝
:1,5 del 块删除
:1,5 move 7 块移动
:1,$s/string1/string2/g 全文档查找string1并替换为string2
:wq! 存盘退出


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lyd518/archive/2008/12/31/3669726.aspx

猜你喜欢

转载自jenniferok.iteye.com/blog/753054
今日推荐