`
wangminshe89
  • 浏览: 668724 次
文章分类
社区版块
存档分类
最新评论

VI命令绵集

 
阅读更多
替换光标所在行的VI命令 :s/^M// (注意此文件中^M 是怎样打出来的 ctrl+v+m)替换文件中所有出现^M的地方的VI命令:%s/^M//g

ex命令状态
:set number 显示行号
:set smd 显示显示状态
:0 文件首
:1,5 copy 7 块拷贝(从行号为1的位置向下复制5行粘贴到行号为7的后面)
:1,5 del 块删除
:1,5 move 7 块移动
:1,$s/string1/string2/g 全文件查找string1并替换为string2

---------------------------

鉴于大家在使用VI的时候有一定的陌生,在这里借花献佛,从兄弟版[SHELL]中整理出以下关于VI编程的高级技巧,希望对大家学习UNIX有所帮助,并希望大家能结合使用HPUX的心得体会对这些经验进行进一步的扩展。

1.交换两个字符位置

xp
2.上下两行调换
ddp
3.把文件内容反转
:g/^/m0/(未通过)

4.上下两行合并
J
5.删除所有行
dG
6.从当前位置删除到行尾
d$
7.从当前位置复制到行尾
y$如果要粘贴到其他地方p就可以了


由于vi是建立在EX上的所以当键入:时就来到了EX命令状态
8.
:abstringstrings
例如":abusaUnitedStatesofAmerica",
当你在文见里插入usa时
UnitedStatesofAmerica就蹦出来了
9.
:mapkeysnew_seq
定义你当前键盘命令
10.
:set[all]
viorex的编辑状态
如显示每行:setnu
11.
在命令状态下,nyy表示拷贝从光标行起的下n行内容,p表示paste,可刚复制的内容粘贴在光标处的
下面。

12.
单个字符替换用r,覆盖多个字符用R,用多个字符替换一个字符用s,整行替换用S

13.

:%s/old_word/new_word/g
这个指令是于在整个文件中替换特定字符串

14.光标控制

k:上移nk上移n行
j:下移nj下移n行


将光标移到第n行,按下mk
将光标移到第m行,按下"ay'k
即将第n到m的行存到a寄存器,以此类推,b,c........寄存器等

这样就可以将你常用的需要复用的内容粘贴到不同的寄存器中以备用


想粘贴到某处,直接将光标移到某地,按下‘ap即可,以此类推,b,c........寄存器等

在当前屏幕中
H跳到第一行
M跳到中间一行
L跳到最后一行

15.
表8-2删除命令
删除命令操作
dl删除当前字符(与x命令功能相同)
d0删除到某一行的开始位置
d^删除到某一行的第一个字符位置(不包括空格或TAB字符)
dw删除到某个单词的结尾位置
d3w删除到第三个单词的结尾位置
db删除到某个单词的开始位置
dW删除到某个以空格作为分隔符的单词的结尾位置
dB删除到某个以空格作为分隔符的单词的开始位置
d7B删除到前面7个以空格作为分隔符的单词的开始位置
d)删除到某个语句的结尾位置
d4)删除到第四个语句的结尾位置
d(删除到某个语句的开始位置
d}删除到某个段落的结尾位置
d{删除到某个段落的开始位置
d7{删除到当前段落起始位置之前的第7个段落位置
dd删除当前行
d/text删除从文本中出现“text”中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
dfc删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
dtc删除当前行直到下一个字符“c”所出现位置之间的内容
D删除到某一行的结尾
d$删除到某一行的结尾
5dd删除从当前行所开始的5行内容
dL删除直到屏幕上最后一行的内容
dH删除直到屏幕上第一行的内容
dG删除直到工作缓存区结尾的内容
d1G删除直到工作缓存区开始的内容

修改命令操作
cl更改当前字符
cw修改到某个单词的结尾位置
c3w修改到第三个单词的结尾位置
cb修改到某个单词的开始位置
cW修改到某个以空格作为分隔符的单词的结尾位置
cB修改到某个以空格作为分隔符的单词的开始位置
c7B修改到前面7个以空格作为分隔符的单词的开始位置
c0修改到某行的结尾位置
c)修改到某个语句的结尾位置
c4)修改到第四个语句的结尾位置
c(修改到某个语句的开始位置
c}修改到某个段落的结尾位置
c{修改到某个段落的开始位置
c7{修改到当前段落起始位置之前的第7个段落位置
ctc修改当前行直到下一个字符c所出现位置之间的内容
C修改到某一行的结尾
cc修改当前行
5cc修改从当前行所开始的5行内容


.重复上一次修改!


表8-4替换命令
替换命令操作
s将当前字符替换为一个或多个字符
S将当前行替换为一个或多个字符
5s将从当前字符开始的5个字符替换为一个或多个字符


vi替换使用规则:
:g/s1/s/s2/s3/g
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串


16.

fx
往右移动到x字符上
Fx
往左移动到x字符上
tx
往右移动到x字符前
Tx
往左移动到x字符后
(注意:以上四个命令中,其中x是键入的字符)
&#59;
分号,配合f和t使用,重复一次
,
逗号,配合f和t使用,反方向重复一次



17.vi环境选项Solarisksh

noautoindentnomodelinesnoshowmode
autoprintnonumbernoslowopen
noautowritenonovicetabstop=8
nobeautifynooptimizetaglength=0
directory=/var/tmpparagraphs=IPLPPPQPPLIpplpipnpbtags=tags/usr/lib/tags
noedcompatibleprompttagstack
noerrorbellsnoreadonlyterm=vt100
noexrcredrawnoterse
flashremaptimeout
hardtabs=8report=5ttytype=vt100
noignorecasescroll=11warn
nolispsections=NHSHHHUuhsh+cwindow=23
nolistshell=/bin/kshwrapscan
magicshiftwidth=8wrapmargin=0
mesgnoshowmatchnowriteany


ForC-Shell:
setenvEXINIT"setnu"
ForBourneorKornShell:
EXINIT="setnu"&#59;exportEXINIT
ForKornShellOnly(alternatemethod):
typeset-xEXINIT="setnu"
在.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#
进行切换

20.
sco下VI要在文本前同样的字符加用
%s/^/要加的内容/g要在文本后同样的字符加
%s/$/要加的内容/g

21.
如何去掉文本中的^M硬回车?不必用binary传回去再ascii传回来的方式,用shell或者unix语句实现。

catfilename|tr-d'/015'>;newfile
不同的unix系统还存在一些其他不同的命令,如:doscp
sed也可以实现这个功能.

dos2unixfilenamefilename2
反之
unix2dosfilenamefilename2

在vi中用:$s/^M//g
^是crtl-Vcrtl-M


22.如何在“unix命令行”下将一个文件的某字符串用另一个串换掉

sed's/string1/string2/gp'file1>;file2


23.将/etc/hosts下所有的地址都ping2次

1#/usr/bin/sh
2#grad/etc/hostsandpingeachaddress
3cat/etc/hosts|grep-v'^#'|whilereadLINE
4do
5ADDR=`awk'{print$1}'`
6forMACHINEin$ADDR
7do
8ping$MACHINE-n2
9done
10done
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics