Linux指令大全 vi指令 (3)
其他特殊用法:
用q: 看一看有什么
用? 可以编辑你用过的命令
程序中在一个调用函数(如:printf)上用K,可以直接调出printf的帮助
ctrl+f向下翻页,ctrl+b向上翻页(对于telnet上去的时候比较有用)
1. vi中设置tab键的空格数:
:set ts=4
:set sw=4
将此两句话加到当前用户目录的文件.vimrc中,这样当前用户用vi的时候就会启动该设置
2.拷贝:
将第2行到第9行的字copy到第11行
:2,9 co 10
将第2行到第9行的字move到第11行
:2,9 m 10
3.设置行号:
:se nu
取消行号:
:se nonu
4.当前行与下一行换位置:ddp
5.当前字与后面的字换位置:xp
用vi替换文件中的字符串
在vi界面下使用命令
:%s#/usr/bin#/bin#g
可以把文件中所有路径/usr/bin换成/bin。也可以使用命令:
:%s/usr/bin/bin/g
其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。
请问 vi 中的删除缓冲区是怎么回事?
看到有一个资料说到:
“vi还有有编号的删除缓冲区。撤消命令只能恢复上一次的删除,当且仅当这个删除是最后一次操作。但是,vi可以把最近9次删除的内容都放入9个编号从1到9的缓冲区内。最近一次删除保存在缓冲区1,次近的在缓冲区2,依此类推。例如,"2p可以放置第二个删除缓冲区中的内容。”
但是我没有操作成功,请教各位。
既然是vi的问题,我义不容辞
准备文件test
1
2
3
4
5
将光标定位在5上,连按5次dd
然后键入
"5p
"4p
"3p
"2p
"1p
看看发生了什么
明白了?
要注意"
谢谢你们的解释!
再问,是否只有删除的整行可以保存在删除缓冲区中?比如删除的字符呢?
字符也可以,用整行只是为了让你好学
自己试试吧,找葫芦画瓢吧
wo 我照呢说得作的 可是恢复的是5个1 啊 怎么回事 (solaris8)
比如在一行中连按5次dw,会将5个词依次放入1~5的寄存器中吗?我没有试验成功,总提示寄存器为空。
[这个贴子最后由goodboy在 2002/08/22 09:29am 编辑]
bjchenxu,能否把VI使用高级技巧的方法给大家讲一讲呀:)
很多的,比如:怎么一个文件中的几行保存到另外一个文件中了,
或者把另外一个文件的插入到指定内容的行后面了或者我在vi中拷贝
A文件的某5行(Esc下5yy拷贝),然后再:e b文件,怎么把A文件的5行拷过来?
然后又怎么回到原先的A文件中?
高级技巧太多太多,建议大家找本版valentine斑竹要书看,呵呵
你说的几个问题我先回答一下:
1. 将一个文件中的几行保存到另外一个文件中了
1.1 $vi file1
1.2 :3,5 y a
1.3 :e file2
1.4 "ap
2. 将另外一个文件插入到指定内容的行后面
2.1 $vi file1
2.2 :/regularexpress/ r file2
3. 两个文件的切换和拷贝
3.1 $vi file1 file2
3.2 :3,5 y a
3.3 :e#
3.4 "ap
3.5 :e#
在vim里面查看man页面
在进入vim后按“:”号,输入
source $VIMRUNTIME/ftplugin/man.vim
然后再按“:”号,输入
nmap K :Man
然后在vim里面输入你要的命令,在这个命令上按K,就可以看到经vim处理过后的man页。
用vi在整个文件的各行或某几行的行首或行尾加一些字符串
$vi file
:3,$s/^/some string 在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
注意: 其中s为substitute,%表示所有行,g表示global。
用vi删除大段的内容
首先利用编辑命令“vi file”打开文件, 然后将光标移到要删除的行处按Ctrl+G显示行
号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
例如:
:23,1045d
假定2次得到的行号为23和1045,则把这期间的内容全删除, 也可以在要删除的开始行和
结束行中用ma、mb命令标记,然后利用“:'a,'bd”命令删除。
用vi实现“另存为”功能
$vi file
:w /tmp/1
保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件。
如果仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令:
:20,59w /tmp/1
用vi在一个新文件中读其他文件的内容
$vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
您也可以在指定的行号后读入文件内容,例如使用命令:
:3r /etc/passwd
从新文件的第3行开始读入 /etc/passwd的所有内容。
我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
$cat squid.conf.default | grep -v '^$' | grep -v '^#'
用vi拷贝一个文件中的文本并粘贴到另一个文件中
$vi file1 file2
然后在vi界面下:
yy <-在文件1的光标处拷贝所在行
:n <-切换到文件2 (n=next)
p <-在文件2的光标所在处粘贴所拷贝的行
:n <-切换回文件1
使用vim对被编辑文件加密
在VIM当中要对所编辑的文件进行简单加密,可以在命令行模式下键入“:X”(无括号,
只有冒号和X)然后在提示“Enter the encrypt key”时输入口令字串就可以加密了。但是别
忘了要保存哦!保存的时候会发现在屏幕底部有“[crypted]”这样的字样。 下次打开该加密
文件会要求您输入口令字串,这个总该记得的吧?
设置vim自动显示行号
在每个用户的主目录下,都有一个 vi 的配置文件".vimrc"或".exrc", 用户可以编辑它,
使这些设置在每次启动 vi 时,都有效。
例如,加入如下设置行:
set nu 显示行号
set nonu 不显示行号
set ic 查找时不考虑大小写
set noic 查找时考虑大小写
在vi里搜索关键字
当你用vi打开一个文件后,因为文件太长,如何才能找到你所要查找的关键字呢?在vi里
可没有菜单-〉查找,不过没关系,你在命令模式下敲斜杆(/)这时在状态栏(也就是屏幕左下
角)就出现了 “/”然后输入你要查找的关键字敲回车就可以了。
如果你要继续查找此关键字,敲字符n就可以继续查找了。值得注意的是“/”是向下查找,
而“?”是向上查找,而在键盘定义上“?”刚好是“/”的上档符。
用彩色的vi写程序
修改$HOME中的.vimrc,把color值设为true
把环境变量VIMRUNTIME设成vim的路径名
例:/usr/share/vim
在vi中键入
:syntax on回车
:so $VIMRUNTIME/syntax/java.vim回车(现在版本的vi支持无数程序语法色彩档,都在
syntax/下,看一眼吧:))
如果不喜欢所用的xterm背景色,可以用xterm -bg LightBlue(或其他喜欢的颜色)启动,
或者修改.Xresouce的xterm background项。
vi -o xxx.java xxxx.java
vi
例如:Esc键在vi中输入ctrl+v与Esc为^[
请问Delete键在vi中如何输入?
d
空一行
[Ctrl+V][Del]
输这个键有什么用啊
输不进去
我想在shll里自动telnet到另一台机器终止.profile(自动运行了程序)执行,好执行我在shll中的一些命令。
输不进去
这种情况是因为DEL在您的终端上被定义成某个中断键,中断是被操作系统优先处理的。
使用stty -a 可以显示出DEL被哪个中断所用。
以下是两种解决方法:
1。使用“stty 中断名 新的中断键”形式改变中断键设置,然后调用vi,再使用ctrl+V的方法。如:stty intr ^E;vi
2。使用一个shell脚本myvi:stty raw ;vi $*;stty -raw
调用myvi
还有一种变通的解决方法,DEL键的ascii码应该是^?,0x7f,
责任编辑:黑客基地
本文引用网址:








