Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2909031
  • 博文数量: 412
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 7374
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-25 15:15
个人简介

学习是一种信仰。

文章分类

全部博文(412)

文章存档

2014年(108)

2013年(250)

2010年(11)

2009年(43)

我的朋友

分类: 其他UNIX

2009-08-14 16:42:42

vi命令之多相信大家都知道,差不多每个键盘按键都是vi的命令,再加上一些组合那就多了去了,本文是对自己工作中使用vi命令的一个总结。因为有很多命令的效果有多种方法实现,采用哪种方法在于自己的习惯,不必苛求到底哪种方法更好。

 

上下左右移动等的简单命令就省了。

 

开始 (open)

o   在光标所在行下方新增一行并进入输入模式。

O   在光标所在行上方新增一行并进入输入模式。

 

新增 (append)

a   从光标所在位置后面开始新增资料。

A   从光标所在行最后面的地方开始新增资料。

 

插入 (insert)

i   从光标所在位置前面开始插入资料。

I   从光标所在行的第一个非空字符前面开始插入资料。

 

删除(delete

【删除的资料将会复制到缓冲区,用pput)可以将缓冲区当前保存的内容放置于光标之后】

x   删除光标所在字符。

dd  删除光标所在的行。

ndd 删除n行(=dnd)。

dw  从光标处开始,删除一个单词。

dnw 从光标处开始,删除n个单词(=ndw)。

D   删除光标至行尾的所有字符。

dG   删除光标所在行至文件结尾所有行。

mad’a    删除从敲ma到敲d’a的行。 

 

替换(replace),修改(change

r   修改光标所在字符,r 后接著输入修正的字符。

cw  修改一个单词,cw后输入要修改的单词。

cc  修改整行(我常用ddO代替)。

 

复制(yank),粘贴(paste

yy  复制光标所在行。

nyy 从光标行开始,复制n行。

may’a    复制从敲ma到敲y’a的行至寄存器a

p   在光标所在行下面开始粘贴所复制的行。

 

撤销(undo

u   撤销所做修改,且光标回到所作修改处。

 

.   重复上一个操作。

 

%   查找当前括号的匹配括号。

 

0     跳到光标所在行的开头。

$   跳到光标所在行的结尾。

G   跳到文件最后一行。

:1  跳到文件第一行。

:n  跳到文件第n行(=nG)。

 

/string 从光标所在处开始往后搜索string,最后一行的前一行是第一行。

string    从光标所在处开始往前搜索string,第一行的前一行是最后一行。

n   从光标所在处开始往后继续上次搜索。

N   从光标所在处开始往前继续上次搜索。

 

J   合并光标所在行和下一行。

 

Ctrl+f  向下翻页。

Ctrl+b  向上翻页。

Ctrl+g  显示文件名,光标所在行号,光标所在行号占总行号的百分比。

 

:   进入ex模式。

:w  保存。

:wq 保存并退出(=:x)。

:q! 不保存退出。

 

:r test 从光标下一行开始插入test文件。

:nr test    从第n行后开始插入test文件。

:e  重新编辑文件(若做了修改,系统会提示保存)。

:e!重新编辑文件,放弃任何改变(查看已改变日志文件可用)。

 

:set nu 显示每行的行号。

:set nonu   取消显示每行的行号。

:10,20d 删除文件第10行至第20行。

:10,20co30  将第10行至第20行复制至第30行之后。

:10,20mo30  将第10行至第20行移动至第30行之后。

:10,20w test    将文件第10行至第20行写入test文件。

:10,20w>>test   将文件第10行至第20行追加在test文件之后。

 

:!conmand   运行command命令,然后返回。

:sh 进入shell环境,exit返回。

 

:%s/old_string/new_string/g 在整个文件内替换字符串。

替换字符串的完整命令如下::[范围]s/old_string/new_string/[cgi],

[范围]:任意的行范围,包括行号,$(文件末尾),.(当前行),%(当前文件),或者两个行号之间加个破折号(或者可以这样: .,+5,这表示下面5行)。

[cgi] g是说对所有一行中出现的地方都做替换;c告诉vi每次替换的时候要给提示;i则是指在查找时不区分大小写。

 

vi file1 file2 …   vi多个文件。

一个文件编辑完之后,:w存档;:n载入下一个文件;:rew重新回到第一个编辑的文件;:e#可以在两个文件之间切换(=Ctrl+Shift+6);:e filename转到编辑filename文件。

 

阅读(1940) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~