全局替换
语法为 :[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 >
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 取消自动内缩。
==========
: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#
进行切换