vi命令第四弹

全局替换
语法为 :[addr]s/源字符串/ 目的字符串 /[option]
全局替换命令为: :%s/源字符串/ 目的字符串 /g
[addr] 表示检索范围,省略时表示当前行。
如:“ 1,20 ” :表示从第 1行到20 行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s : 表示替换操作
[option] : 表示操作类型
如: g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示( Ctrl + L恢复屏幕);
省略 option时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用” \”转义

选项设置

all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位 (Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示 NO write信息
nomagic:允许在搜索模式中,使用前面不带“ \”的特殊字符
nowrapscan:禁止 vi在搜索到达文件两端时,又从另一端开始
mesg:允许 vi显示其他用户用write写到自己终端上的信息
状态命令 < Ctrl+G >
命令显示在 vi状态行上的vi状态信息,包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。
autoindent  设置该选项,则正文自动缩进
ignorecase  设置该选项,则忽略规则表达式中大小写字母的区别
number    设置该选项,则显示正文行号
ruler       设置该选项,则在屏幕底部显示光标所在行、列的位置
tabstop     设置按 Tab 键跳过的空格数。例如 :set tabstop=n,n 默认值为 8
mk        将选项保存在当前目录的 .exrc 文件中
环境的设定
==========
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
17. 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 的环境选项 , 以上均测试过
18.标记文本
mchar   用字母char标记当前光标的位置
`char   移至char 所标记处
‘char   移至char标记所在行的开头处
“     移至当前行上一次所在位置(在光标移动之后)――一个双引号
”    移至当前行上第一次所在位置的行的开头处 (在光标移动之后)――两个单引号
19.
同时 vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次 vi的文件和上次vi的文件之间切换。
但是我发现一个 BUG:在用CTRL-SHIFT-6 切换到上一个文件后,用 :args查看多文件vi状态时,
屏幕底部仍然显示目前 vi的是刚才的文件。
(在HP-UX,Solaris,AIX 上通过)
也可以使用 :
:e#
进行切换
未经允许不得转载:Cooders'S Blog » vi命令第四弹