当前位置:操作系统 > Unix/Linux >>

Linux下的编辑器――vi大全

xp

  交换两个字符位置

  ddp

  上下两行调换

  J

  上下两行合并

  dG

  删除所有行

  d$

  从当前位置删除到行尾

  y$

  从当前位置复制到行尾, 如果要粘贴到其他地方 p 就可以了

  :ab string strings

  例如 ":ab usa United States of America" ,

  当你在文见里插入 usa 时

  United States of America 就蹦出来了

  :g/^/m0

  把文件内容反转

  :map keys new_seq

  定义你当前键盘命令

  :set [all]

  vi or ex 的编辑状态

  如显示每行 :set nu

  :X

  然后系统会提示输入密码, 输入密码后存盘退出, 保存后就加密了

  下次编辑时使用vi -x filename, 系统会提示你输入密码

  在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,粘贴下来在光标处。

  我常用到的单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S

  :%s/old_word/new_word/g

  这个指令是于在整个文件中替换特定字符串

  将光标移到第n行,按下 mk

  将光标移到第m行,按下 "ay'k

  即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等

  不好意思,补充一下,想粘贴到某处,直接将光标移到某地,按下 ‘ap 即可

  删除命令操作

  d l 删除当前字符(与x命令功能相同)

  d 0 删除到某一行的开始位置

  d ^ 删除到某一行的第一个字符位置(不包括空格或TA B字符)

  d w 删除到某个单词的结尾位置

  d 3 w 删除到第三个单词的结尾位置

  d b 删除到某个单词的开始位置

  d W 删除到某个以空格作为分隔符的单词的结尾位置

  d B 删除到某个以空格作为分隔符的单词的开始位置

  删除命令操作

  d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置

  d)删除到某个语句的结尾位置

  d 4)删除到第四个语句的结尾位置

  d(删除到某个语句的开始位置

  d } 删除到某个段落的结尾位置

  d { 删除到某个段落的开始位置

  d 7 { 删除到当前段落起始位置之前的第7个段落位置

  d d 删除当前行

  d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的

  位置(但不包括该字样)之间的内容

  

  d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括

  该字符)之间的内容

  d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容

  D 删除到某一行的结尾

  d $ 删除到某一行的结尾

  5 d d 删除从当前行所开始的5行内容

  d L 删除直到屏幕上最后一行的内容

  d H 删除直到屏幕上第一行的内容

  d G 删除直到工作缓存区结尾的内容

  d 1 G 删除直到工作缓存区开始的内容

  修改命令操作

  c l 更改当前字符

  c w 修改到某个单词的结尾位置

  c 3 w 修改到第三个单词的结尾位置

  c b 修改到某个单词的开始位置

  c W 修改到某个以空格作为分隔符的单词的结尾位置

  c B 修改到某个以空格作为分隔符的单词的开始位置

  c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置

  c 0 修改到某行的结尾位置

  c)修改到某个语句的结尾位置

  c 4)修改到第四个语句的结尾位置

  c(修改到某个语句的开始位置

  c } 修改到某个段落的结尾位置

  c { 修改到某个段落的开始位置

  c 7 { 修改到当前段落起始位置之前的第7个段落位置

  c tc 修改当前行直到下一个字符c所出现位置之间的内容

  C 修改到某一行的结尾

  c c 修改当前行

  5 c c 修改从当前行所开始的5行内容

  替换命令操作

  s 将当前字符替换为一个或多个字符

  S 将当前行替换为一个或多个字符

  5 s 将从当前字符开始的5个字符替换为一个或多个字符

  下载

  vi替换使用规则:

  :g/s1/s/s2/s3/g

  第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换

  s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串

  fx

  往右移动到 x 字符上

  Fx

  往左移动到 x 字符上

  tx

  往右移动到 x 字符前

  Tx

  往左移动到 x 字符后

  (注意:以上四个命令中,其中x是键入的字符)

  ;

  分号,配合 f 和 t 使用,重复一次

  ,

  逗号,配合 f 和 t 使用,反方向重复一次

  建议谁把 :set all 出来的参数及其用法说明一下。注意注明UNIX平台,我发现几个平台下有些差异。

  加密码我在8 上(bsh)实验成功所以大家最好还是加上环境!!

  

  vi 环境选项 Solaris ksh

  noautoindent nomodelines noshowmode

  autoprint nonumber noslowopen

  noautowrite nonovice tabstop=8

  nobeautify nooptimize taglength=0

  directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags

  noedcompatible prompt tagstack

  noerrorbells noreadonly term=vt100

  noexrc redraw noterse

  flash remap timeout

  hardtabs=8 report=5 ttytype=vt100

  noignorecase scroll=11 warn

  nolisp sections=NHSHH HUuhsh+c window=23

  nolist shell=/bin/ksh wrapscan

  magic shiftwidth=8 wrapmargin=0

  mesg noshowmatch nowriteany

  For C-Shell:

  setenv EXINIT "set nu"

  For Bourne or Korn Shell:

  EXINIT="set nu"; export EXINIT

  For Korn Shell Only (alternate method):

  typeset -x EXINIT="set nu"

  在 .profile 里设置 vi 的环境选项 , 以上均测试过

  怎么没有介绍标记的,做标记对那种大的程序文件阅读十分有帮助。

  建议大家使用。

  标记文本

  mchar

  用字母char标记当前光标的位置

  `char

  移至char所标记处

  'char

  移至char标记所在行的开头处

  "

  移至当前行上一次所在位置(在光标移动之后)??一个双引号

  ''

  移至当前行上第一次所在位置的行的开头处(在光标移动之后)??两个单引号

  .重复上一次修改!

  大家都说了这么多了,我也来说两句

  在当前屏幕中

  H 跳到第一行

  M 跳到中间一行

  L 跳到最后一行

  同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。其实就是一些文档写的 ^^

  但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,屏幕底部仍然显示目前vi的是刚才的文件。

  (在HP-UX,Solaris,AIX上通过)

  还是使用

  :e#

  切换比较好,呵呵

  %s/^/要加的内容/g 要在文本后同样的字符加

  %s/$/要加的内容/g vi的使用确实太多,大家多多总结交流!!!

  追加到缓冲区

  对于已经有内容的缓冲区,可以继续追加内容在其后面,例如:

  "Ad4w 删除光标后4个字,并附加到缓冲区a

  

  "Ay) 取样从光标到文件尾的内容,并附加到缓冲区a

  "K3yy 取样从光标所在行起的3行内容,并附加到缓冲区k

  注意:在追加缓冲区的命令中,原缓冲区的名字一定要大写,才能将内容追加进去,否则是覆盖原缓冲区的内容。追加内容在原缓冲区末尾另起一行。

  清理掉DOS文本中的^M可以在:1,$s/^M//g,其中^M是CTRL+V, CTRL+M。

  删除从当前行开始到最后一行的所有内容

  :.,$d

  在:命令行模式下,首先可以确定命令的范围

  .
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,