📄 165.html
字号:
<br>
删除命令操作 <br>
d 7 B 删除到前面7个以空格作为分隔符的单词的开始位置 <br>
d) 删除到某个语句的结尾位置 <br>
d 4) 删除到第四个语句的结尾位置 <br>
d( 删除到某个语句的开始位置 <br>
d } 删除到某个段落的结尾位置 <br>
d { 删除到某个段落的开始位置 <br>
d 7 { 删除到当前段落起始位置之前的第7个段落位置 <br>
d d 删除当前行 <br>
d /t e x t 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的 <br>
位置(但不包括该字样)之间的内容 <br>
d fc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括 <br>
该字符)之间的内容 <br>
d tc 删除当前行直到下一个字符“ c”所出现位置之间的内容 <br>
D 删除到某一行的结尾 <br>
d $ 删除到某一行的结尾 <br>
5 d d 删除从当前行所开始的5行内容 <br>
d L 删除直到屏幕上最后一行的内容 <br>
d H 删除直到屏幕上第一行的内容 <br>
d G 删除直到工作缓存区结尾的内容 <br>
d 1 G 删除直到工作缓存区开始的内容 <br>
<br>
修改命令操作 <br>
c l 更改当前字符 <br>
c w 修改到某个单词的结尾位置 <br>
c 3 w 修改到第三个单词的结尾位置 <br>
c b 修改到某个单词的开始位置 <br>
c W 修改到某个以空格作为分隔符的单词的结尾位置 <br>
c B 修改到某个以空格作为分隔符的单词的开始位置 <br>
c 7 B 修改到前面7个以空格作为分隔符的单词的开始位置 <br>
c 0 修改到某行的结尾位置 <br>
c) 修改到某个语句的结尾位置 <br>
c 4) 修改到第四个语句的结尾位置 <br>
c( 修改到某个语句的开始位置 <br>
c } 修改到某个段落的结尾位置 <br>
c { 修改到某个段落的开始位置 <br>
c 7 { 修改到当前段落起始位置之前的第7个段落位置 <br>
c tc 修改当前行直到下一个字符c所出现位置之间的内容 <br>
C 修改到某一行的结尾 <br>
c c 修改当前行 <br>
5 c c 修改从当前行所开始的5行内容 <br>
<br>
替换命令操作 <br>
s 将当前字符替换为一个或多个字符 <br>
S 将当前行替换为一个或多个字符 <br>
5 s 将从当前字符开始的5个字符替换为一个或多个字符 <br>
下载 <br>
<br>
vi替换使用规则: <br>
:g/s1/s/s2/s3/g <br>
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换 <br>
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串 <br>
<br>
fx <br>
往右移动到 x 字符上 <br>
Fx <br>
往左移动到 x 字符上 <br>
tx <br>
往右移动到 x 字符前 <br>
Tx <br>
往左移动到 x 字符后 <br>
(注意:以上四个命令中,其中x是键入的字符) <br>
; <br>
分号,配合 f 和 t 使用,重复一次 <br>
, <br>
逗号,配合 f 和 t 使用,反方向重复一次 <br>
<br>
建议谁把 :set all 出来的参数及其用法说明一下。注意注明UNIX平台,我发现几个平台下有些差异。 <br>
<br>
加密码我在8 上(bsh) 实验成功 所以大家最好还是加上 环境!! <br>
<br>
vi 环境选项 Solaris ksh <br>
noautoindent nomodelines noshowmode <br>
autoprint nonumber noslowopen <br>
noautowrite nonovice tabstop=8 <br>
nobeautify nooptimize taglength=0 <br>
directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags <br>
noedcompatible prompt tagstack <br>
noerrorbells noreadonly term=vt100 <br>
noexrc redraw noterse <br>
flash remap timeout <br>
hardtabs=8 report=5 ttytype=vt100 <br>
noignorecase scroll=11 warn <br>
nolisp sections=NHSHH HUuhsh+c window=23 <br>
nolist shell=/bin/ksh wrapscan <br>
magic shiftwidth=8 wrapmargin=0 <br>
mesg noshowmatch nowriteany <br>
<br>
For C-Shell: <br>
setenv EXINIT "set nu" <br>
For Bourne or Korn Shell: <br>
EXINIT="set nu"; export EXINIT <br>
For Korn Shell Only (alternate method): <br>
typeset -x EXINIT="set nu" <br>
<br>
在 .profile 里设置 vi 的环境选项 , 以上均测试过 <br>
<br>
怎么没有介绍标记的,做标记对那种大的程序文件阅读十分有帮助。 <br>
建议大家使用。 <br>
<br>
标记文本 <br>
mchar 用字母char标记当前光标的位置 <br>
`char 移至char所标记处 <br>
'char 移至char标记所在行的开头处 <br>
" 移至当前行上一次所在位置(在光标移动之后)――一个双引号 <br>
'' 移至当前行上第一次所在位置的行的开头处(在光标移动之后)――两个单引号 <br>
<br>
.重复上一次修改! <br>
<br>
大家都说了这么多了,我也来说两句 <br>
在当前屏幕中 <br>
H 跳到第一行 <br>
M 跳到中间一行 <br>
L 跳到最后一行 <br>
<br>
同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。其实就是一些文档写的 ^^ <br>
但是我发现一个BUG:在用CTRL-SHIFT-6切换到上一个文件后,用:args查看多文件vi状态时,屏幕底部仍然显示目前vi的是刚才的文件。 <br>
(在HP-UX,Solaris,AIX上通过) <br>
<br>
还是使用 <br>
:e# <br>
切换比较好,呵呵 <br>
<br>
%s/^/要加的内容/g 要在文本后同样的字符加 <br>
%s/$/要加的内容/g vi的使用确实太多,大家多多总结交流!!! <br>
<br>
追加到缓冲区 <br>
对于已经有内容的缓冲区,可以继续追加内容在其后面,例如: <br>
"Ad4w 删除光标后4个字,并附加到缓冲区a <br>
"Ay) 取样从光标到文件尾的内容,并附加到缓冲区a <br>
"K3yy 取样从光标所在行起的3行内容,并附加到缓冲区k <br>
<br>
注意:在追加缓冲区的命令中,原缓冲区的名字一定要大写,才能将内容追加进去,否则是覆盖原缓冲区的内容。追加内容在原缓冲区末尾另起一行。 <br>
<br>
清理掉DOS文本中的^M可以在:1,$s/^M//g,其中^M是CTRL+V, CTRL+M。 <br>
<br>
<br>
删除从当前行开始到最后一行的所有内容 <br>
:.,$d <br>
在:命令行模式下,首先可以确定命令的范围 <br>
.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行 <br>
范围用,分隔 <br>
然后用命令 <br>
d表示删除,y表示复制......大家都知道的 <br>
<br>
最后说一句,%表示全文 <br>
:%d <br>
是删除全文 <br>
<br>
给“南非蜘蛛”补充一下,hehe <br>
在:命令行模式下,首先可以确定命令的范围 <br>
.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行 <br>
范围用,分隔 <br>
... <br>
<br>
<br>
慎用:$d <br>
<br>
:$d 只是删除最后一行嘛,用错了还不算最坏的结果,呵呵 <br>
<br>
请教aix,ksh下: <br>
一行>=2048个字符时,无法显示,怎么办? <br>
<br>
<br>
在vi中好像应该没有什么办法了,这是vi的Program Limits中的Maximum Line Length限制。试一试用UltraEdit读读看吧 <br>
<br>
有的环境不能用uedit <br>
可以折行吗? <br>
<br>
折行 <br>
:set wrapmargin=4 <br>
<br>
下面引用由bjchenxu在 2002/09/05 09:07am 发表的内容: <br>
折行 <br>
:set wrapmargin=4 <br>
<br>
<br>
怎么解释?结果如何? <br>
<br>
不行呀 <br>
A line cannot be longer than 2048 characters. <br>
<br>
我的只能解决显示问题,如果说vi里不能存放这么多字符,就比较麻烦了 <br>
另外问一句,2048个字符已经够长了,为什么要放更多的,没准我们可以从源头上解决问题 <br>
<br>
老外的程序的log文件,有些行就这么长,以至于影响了后面行的显示; <br>
more,pg等可以折行 <br>
<br>
我还是不会用:X加密,能不能说的详细一点,:X后,提示输入key:然后呢?mark what 后输入什么呢,下次如何在打开呢?more 可以正常看吗? <br>
xiexie! <br>
<br>
你使用的什么平台的UNIX呢?我从来没有见到mark what出现过啊 <br>
more是不能正常看的,用vi -x filename,然后输入密码就可以了 <br>
<br>
好像再另存不了不加密的了 <br>
<br>
用 :wq 或者 :wq! 另存 <br>
<br>
请高手指点迷精:vi中如何在每行的倒数第二个字符处插入一个字符?? <br>
<br>
把Tab全部换成回车,应该怎么作啊? <br>
:1,$ s/ //g <br>
不行 <br>
<br>
^M (Ctrl+V+M)就是回车。 <br>
<br>
vi加密不同的unix可能不同. <br>
俺在HP-UX下,用X加密的文件只输key(密钥). <br>
vi -C 文件名,便会要求输入密钥,如正确,便打开了. <br>
<br>
littletiger的意思是不是这样: <br>
以HP-UX为例 <br>
1、加密 <br>
vi file <br>
:X <br>
(Are you sure?(y/n)[n]:)回答y <br>
输入密码回车以后再保存,就加密成功了 <br>
2、解密 <br>
vi -C file 或者 vi -x file <br>
在 Key: 后面输入密码进入file <br>
:X <br>
(Are you sure?(y/n)[n]:)回答y <br>
直接回车以后再用 wq 或者 wq! 保存,就把file解密成功了 <br>
<br>
:set number <br>
显示行号 <br>
<br>
:g/$/s// ABC/g <br>
:g/^/s//def /g <br>
在文本每行的头和尾添加字符串. <br>
<br>
用vi进行coding时的使用技巧: <br>
用ctags命令对当前目录下的c源程序扫描,生成tags文件 <br>
$ ctags *.c <br>
这样,在vi里通过命令 <br>
:ta fun_name <br>
就可以直接打开函数fun_name所在的文件,并将光标置于函数开头 <br>
<br>
<br>
:n,n1 d <br>
n和n1都是行数, d是删除这些行 .表示当前的行。 <br>
: n <br>
n是行数,直接转到n行。 <br>
: r 文件名 <br>
把文件添加到当前的文件中 <br>
:n,n1 w 文件名 <br>
把从n行到n1行写道另外一个文件中 <br>
<br>
<br>
查找: <br>
在一个单词上用*,就向下查找此单词,#是向上 <br>
用/查找hello,就不会查找到hello_world(用此替换也很好用) <br>
<br>
替换: <br>
如有一文件,内容为: <br>
aa <br>
bb <br>
cc <br>
dd <br>
用:%s/.*/printf("& is :%d",&)/ <br>
文件内容为变为: <br>
printf("aa is :%d",aa) <br>
printf("bb is :%d",bb) <br>
printf("cc is :%d",cc) <br>
printf("dd is :%d",dd) <br>
&为查找到的内容 <br>
用:~为重复上一次替换 <br>
<br>
用系统命令编辑: <br>
如有一文件,内容为: <br>
333 <br>
222 <br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -