vi技巧总结

vi三种模式
 
 命令行模式
 任何时候,不管用户处于何种模式,只要按一下<Esc>键,即可使Vi进入命令行模式;我们在shell环境(提示符为$)下输入启动Vi命令,进入编辑器时,也是处于该模式下。
 
 文本输入模式
 在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按<Esc>键即可。
 
 末行模式
 末行模式也称ex转义模式。
 Vi和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式
 
1  常用
 
  当编辑文件想取消本次所有编辑而不退出vi,则使用“:e!”即可
  如果想不退出vi而查看UNIX系统的有关信息,输入“:shell ”即可进入vi以前的shell环境,
  “exit”退回到vi编辑状态。
 
  :set number  设置行号
  shift+ZZ 保存后自动退出
    ctrl+G  显示当前行
 
2   光标移动
   
    8z16<回车> :将文件中的第8行作为屏幕显示的首行,并一共显示16行。
    15z . :将文件中的第15行作为屏幕显示的中间行,显示行数为整屏。
    15z 5_ :将文件中的第15行作为屏幕显示的最末行,显示行数为5行。
 
   
    shift+L  移动至行首
    shift+$  移动至行尾
    3+enter  光标下移3行至行首
    3J        光标下移3行
    3K        光标上移3行
    3L        光标后移3列
  
  GG 移至行首
    shift+G 移至行尾
    49gg      光标移至49行 但是gg之间须有小停顿
    shift+(  该命令将光标向前移至上一个句子的开头;
    shift+)  该命令将光标向前移至上一个句子的结尾;
    shift+{ 命令  该命令将光标向前移至上一个段的开头;
    shift } 命令  该命令将光标向后移至下一个段的开头。
 
3  文本插入
 
    i 或者  shift+i(移至行首插入)  
    a(当前)   shift+a(行尾) 
    o(插入下一行)
    shift+o(插入当前行)
    u (undo)  . (redo)
 
4   文本删除
 
    dd  删除当前行
    8dd 删除光标行及以下7行
    D或d$:两命令功能一样,都是删除从光标所在处开始到行尾的内容。
    d0:删除从光标前一个字符开始到行首的内容。
    dw:删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。
 
5  文本修改
 
  c7G  即把光标所在行至第7行(共2行)的内容删除,并进入文本输入模式,接着输入
  C 、可以修改从光标当前位置开始到该行末尾
  8C 从光标当前位置开始到下面8行末尾范围内的内容
  cc  可以修改从光标当前行起始位开始到该行末尾
 
6  文本替换
 
  s(小写):该命令表示用随后输入的文本替换当前光标所在的字符。
  S(大写):该命令表示用新打入的正文替换光标当前行(整行)(不管光标位于何列)。
  cw所替换的是一个狭义的字。输入这个命令后,Vi将把光标处的那个字删除,然后用户可输入任何文本内容。
 
  :%s#/usr/bin#/bin#g可以把文件中所有路径/usr/bin换成/bin。也可以使用命令:
 

7   文本行的合并
 
  J(大写字母)表示,其功能是把光标所在行与下面一行合并为一行
  nJ (大写字母)表示,其功能是把光标所在行与下面n行合并为一行
 
8   文本行的移动
 
   shift+>> 命令将限定正文行(屏幕的首行)向右移动,通常是8个空格
   我们可以利用下面的步骤完成文本行从一个地方移至另外一个地方。
 
  将光标移至待移动文本的首行;
  按ndd命令。其中n为待移动的行数。此时Vi将把待移动的文本行从文件中删除,并将其放入到1号删除寄存器中;
  将光标移动到目的行处;
  按 1p将待移动的文本行从删除寄存器中取出。 (np表示从第n个寄存器中取出东西)
 
  :5m3  把第5行内容移至第三行下
  :2,5 m 0 表示把文件中的第二行至第五行的内容移至文件头(第零行之下,这个零行使一个虚行)。
 
9   文本内容进行排序
 
  :.,+3!sort  对第二个字段(3-1)按照顺序排序后输出改变

 

 

posted @ 2011-04-11 15:05  Capricorn.python  阅读(625)  评论(0编辑  收藏  举报