Linux指令大全 vi指令 (2)
怎么没有介绍标记的,做标记对那种大的程序文件阅读十分有帮助。
建议大家使用。
标记文本
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
在:命令行模式下,首先可以确定命令的范围
.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行
范围用,分隔
然后用命令
d表示删除,y表示复制......大家都知道的
最后说一句,%表示全文
:%d
是删除全文
给“南非蜘蛛”补充一下,hehe
在:命令行模式下,首先可以确定命令的范围
.表示当前行;数字表示行号,如1表示第一行,2表示第二行;$表示最后一行
范围用,分隔
...
慎用:$d
:$d 只是删除最后一行嘛,用错了还不算最坏的结果,呵呵
请教aix,ksh下:
一行>=2048个字符时,无法显示,怎么办?
在vi中好像应该没有什么办法了,这是vi的Program Limits中的Maximum Line Length限制。试一试用UltraEdit读读看吧
有的环境不能用uedit
可以折行吗?
折行
:set wrapmargin=4
下面引用由bjchenxu在 2002/09/05 09:07am 发表的内容:
折行
:set wrapmargin=4
怎么解释?结果如何?
不行呀
A line cannot be longer than 2048 characters.
我的只能解决显示问题,如果说vi里不能存放这么多字符,就比较麻烦了
另外问一句,2048个字符已经够长了,为什么要放更多的,没准我们可以从源头上解决问题
老外的程序的log文件,有些行就这么长,以至于影响了后面行的显示;
more,pg等可以折行
我还是不会用:X加密,能不能说的详细一点,:X后,提示输入key:然后呢?mark what 后输入什么呢,下次如何在打开呢?more 可以正常看吗?
xiexie!
你使用的什么平台的UNIX呢?我从来没有见到mark what出现过啊
more是不能正常看的,用vi -x filename,然后输入密码就可以了
好像再另存不了不加密的了
用 :wq 或者 :wq! 另存
请高手指点迷精:vi中如何在每行的倒数第二个字符处插入一个字符??
把Tab全部换成回车,应该怎么作啊?
:1,$ s/ / /g
不行
^M (Ctrl+V+M)就是回车。
vi加密不同的unix可能不同.
俺在HP-UX下,用X加密的文件只输key(密钥).
vi -C 文件名,便会要求输入密钥,如正确,便打开了.
littletiger的意思是不是这样:
以HP-UX为例
1、加密
vi file
:X
(Are you sure?(y/n)[n]:)回答y
输入密码回车以后再保存,就加密成功了
2、解密
vi -C file 或者 vi -x file
在 Key: 后面输入密码进入file
:X
(Are you sure?(y/n)[n]:)回答y
直接回车以后再用 wq 或者 wq! 保存,就把file解密成功了
:set number
显示行号
:g/$/s// ABC/g
:g/^/s//def /g
在文本每行的头和尾添加字符串.
用vi进行coding时的使用技巧:
用ctags命令对当前目录下的c源程序扫描,生成tags文件
$ ctags *.c
这样,在vi里通过命令
:ta fun_name
就可以直接打开函数fun_name所在的文件,并将光标置于函数开头
:n,n1 d
n和n1都是行数, d是删除这些行 .表示当前的行。
: n
n是行数,直接转到n行。
: r 文件名
把文件添加到当前的文件中
:n,n1 w 文件名
把从n行到n1行写道另外一个文件中
查找:
在一个单词上用*,就向下查找此单词,#是向上
用/查找hello,就不会查找到hello_world(用此替换也很好用)
替换:
如有一文件,内容为:
aa
bb
cc
dd
用:%s/.*/printf("& is :%d ",&)/
文件内容为变为:
printf("aa is :%d ",aa)
printf("bb is :%d ",bb)
printf("cc is :%d ",cc)
printf("dd is :%d ",dd)
&为查找到的内容
用:~为重复上一次替换
用系统命令编辑:
如有一文件,内容为:
333
222
334
444
111
553
554
233
运行命令:%!sort 文件内容为:
111
222
233
333
334
444
553
554
用此方法可以使用许多系统命令进行编辑,大家可以灵活运用
责任编辑:黑客基地
本文引用网址:








