vim命令

vi常用命令2009-10-02 11:15Vi常用命令(1) 进入vi的命令
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename :打开多个文件,依次编辑


(2) 移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母
h、j、k、l,分别控制光标左、下、上、右移一格。
按Ctrl+B:屏幕往后移动一页。[常用]
按Ctrl+F:屏幕往前移动一页。[常用]
按Ctrl+U:屏幕往后移动半页。
按Ctrl+D:屏幕往前移动半页。
按 0 (数字零):移动文章的开头。[常用]
按 G:移动到文章的最后。[常用]
按 w:光标跳到下个word的开头。[常用]
按 e:光标跳到下个word的字尾。
按 b:光标回到上个word的开头。按 $:移到光标所在行的行尾。[常用]
按 ^:移到该行第一个非空白的字符。按 0:移到该行的开头位置。[常用]
按 #:移到该行的第#个位置,例:51、121。[常用]


(3) 删除文字
x:每按一次删除光标所在位置的后面一个字符。[超常用]
#x:例如,6x 表删除光标所在位置的后面6个字符。[常用]
X:大字的X,每按一次删除光标所在位置的前面一个字符。
#X:例如,20X 表删除光标所在位置的前面20个字符。
dd:删除光标所在行。[超常用]
#dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]


(4) 复制
yw:将光标所在处到字尾的字符复制到缓冲区中。(想在和#x、#X的功能相反)
p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
yy:复制光标所在行。[超常用]p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
#yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
ap:将放在buffer a的数据粘贴。
b3yy:将三行数据存入buffer b。
b3p:将存在buffer b的资料粘贴


(5) 取代
r: 取代光标所在处的字符:[常用]
R:取代字符直到按Esc为止。


(6) 复原(undo)上一个指令
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
.: .可以重复执行上一次的指令。


(7) 更改
cw:更改光标所在处的字到字尾$处。
c#w:例如,c3w代表更改3个字。


(8) 跳至指定行
Ctrl+G:列出光标所在行的行号。#G:例如,15G,表示移动光标至文章的第15行行首。[常用]


命令行指令简介读者您要使用命令行指令之前,请记得先按Esc键确定您已经处于Command mode下后,再按冒号
“:”或“/”或“?”三键的其中一键进入Last line mode。


1.列出行号
set nu: 输入“set nu”后,会在文章的每一行前面列出行号。


2.跳到文章的某一行
#:井号代表一个数字,在Last line mode提示符号“:”前输入数字,再按
Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]


3.寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按
n会往下寻找到您要的关键字为止。?关键字:先按?,再输入您想寻找的字,如果第一次找的
关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。


4.取代字符串
1, $s/string/replae/g:在last line mode输入“1,$s/string/replace/g”会将全文的
string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是
表示全部取代不必确认。%s/string/replace/c:同样会将全文的string字符串取代为replace
字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。


5.存文件
w:在命令行提示符号“:”前按w即可将文件存起来。[超常用]
#,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,
例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。


6.离开
q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件。


光标控制命令 


命令            光标移动
h或^h            向左移一个字符
j或^j或^n        向下移一行
k或^p            向上移一行
l或空格            向右移一个字符
G            移到文件的最后一行
nG            移到文件的第n行
w            移到下一个字的开头
W            移到下一个字的开头,忽略标点符号
b            移到前一个字的开头
B            移到前一个字的开头,忽略标点符号
L            移到屏幕的最后一行
M            移到屏幕的中间一行
H            移到屏幕的第一行
e            移到下一个字的结尾
E            移到下一个字的结尾,忽略标点符号
(            移到句子的开头
)            移到句子的结尾
{            移到段落的开头
}            移到下一个段落的开头
0或|            移到当前行的第一列
n|            移到当前行的第n列
^            移到当前行的第一个非空字符
$            移到当前行的最后一个字符
+或return        移到下一行的第一个字符
-            移到前一行的第一个非空字符




在vi中添加文本


命令            插入动作
a            在光标后插入文本
A            在当前行插入文本
i            在光标前插入文本
I            在当前行前插入文本
o            在当前行的下边插入新行
O            在当前行的上边插入新行
:r file            读入文件file内容,并插在当前行后
:nr file        读入文件file内容,并插在第n行后
escape            回到命令模式
^v char            插入时忽略char的指定意义,这是为了插入特殊字符




在vi中删除文本


命令            删除操作
x            删除光标处的字符,可以在x前加上需要删除的字符数目
nx            从当前光标处往后删除n个字符
X            删除光标前的字符,可以在X前加上需要删除的字符数目
nX            从当前光标处往前删除n个字符
dw            删至下一个字的开头
ndw            从当前光标处往后删除n个字
dG            删除行,直到文件结束
dd            删除整行
ndd            从当前行开始往后删除
db            删除光标前面的字
ndb            从当前行开始往前删除n字
:n,md            从第m行开始往前删除n行
d或d$            从光标处删除到行尾
dcursor_command        删除至光标命令处,如dG将从当产胆行删除至文件的末尾
^h或backspace        插入时,删除前面的字符
^w            插入时,删除前面的字




修改vi文本


每个命令前面的数字表示该命令重复的次数
命令            替换操作
rchar            用char替换当前字符
R text escape        用text替换当前字符直到换下Esc键
stext escape        用text代替当前字符
S或cctext escape    用text代替整行
cwtext escape        将当前字改为text
Ctext escape        将当前行余下的改为text
cG escape        修改至文件的末尾
ccursor_cmd text escape    从当前位置处到光标命令位置处都改为text




在vi中查找与替换


命令            查找与替换操作
/text            在文件中向前查找text
?text            在文件中向后查找text
n            在同一方向重复查找
N            在相反方向重复查找
ftext            在当前行向前查找text
Ftext            在当前行向后查找text
ttext            在当前行向前查找text,并将光标定位在text的第一个字符
Ttext            在当前行向后查找text,并将光标定位在text的第一个字符
:set ic            查找时忽略大小写
:set noic        查找时对大小写敏感
:s/oldtext/newtext    用newtext替换oldtext
:m,ns/oldtext/newtext    在m行通过n,用newtext替换oldtext
&            重复最后的:s命令
:g/text1/s/text2/text3    查找包含text1的行,用text3替换text2
:g/text/command        在所有包含text的行运行command所表示的命令
:v/text/command        在所有不包含text的行运行command所表示的命令




在vi中复制文本


命令            复制操作
yy            将当前行的内容放入临时缓冲区
nyy            将n行的内容放入临时缓冲区
p            将临时缓冲区中的文本放入光标后
P            将临时缓冲区中的文本放入光标前
"(a-z)nyy        复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)ndd        删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行
"(a-z)p            将名字为圆括号的可命名缓冲区的内容放入当前行后
"(a-z)P            将名字为圆括号的可命名缓冲区的内容放入当前行前




在vi中撤消与重复


命令            撤消操作
u            撤消最后一次修改
U            撤消当前行的所有修改
.            重复最后一次修改
,            以相反的方向重复前面的f、F、t或T查找命令
;            重复前面的f、F、t或T查找命令
"np            取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)
n            重复前面的/或?查找命令
N            以相反方向重复前面的/或?命令




保存文本和退出vi


命令            保存和/或退出操作
:w            保存文件但不退出vi
:w file            将修改保存在file中但不退出vi
:wq或ZZ或:x        保存文件并退出vi
:q!            不保存文件,退出vi
:e!            放弃所有修改,从上次保存文件开始再编辑




vi中的选项


选项            作用
:set all        打印所有选项
:set nooption        关闭option选项
:set nu            每行前打印行号
:set showmode        显示是输入模式还是替换模式
:set noic        查找时忽略大小写
:set list        显示制表符(^I)和行尾符号
:set ts=8        为文本输入设置tab stops
:set window=n        设置文本窗口显示n行




vi的状态


选项            作用
:.=            打印当前行的行号
:=            打印文件中的行数
^g            显示文件名、当前的行号、文件的总行数和文件位置的百分比
:l            使用字母"l"来显示许多的特殊字符,如制表符和换行符




在文本中定位段落和放置标记


选项            作用
{            在第一列插入{来定义一个段落
[[            回到段落的开头处
]]            向前移到下一个段落的开头处
m(a-z)            用一个字母来标记当前位置,如用mz表示标记z
'(a-z)            将光标移动到指定的标记,如用'z表示移动到z




在vi中连接行


选项            作用
J            将下一行连接到当前行的末尾
nJ            连接后面n行




光标放置与屏幕调整


选项            作用
H            将光标移动到屏幕的顶行
nH            将光标移动到屏幕顶行下的第n行
M            将光标移动到屏幕的中间
L            将光标移动到屏幕的底行
nL            将光标移动到屏幕底行上的第n行
^e(ctrl+e)        将屏幕上滚一行
^y            将屏幕下滚一行
^u            将屏幕上滚半页
^d            将屏幕下滚半页
^b            将屏幕上滚一页
^f            将屏幕下滚一页
^l            重绘屏幕
z-return        将当前行置为屏幕的顶行
nz-return        将当前行下的第n行置为屏幕的顶行
z.            将当前行置为屏幕的中央
nz.            将当前行上的第n行置为屏幕的中央
z-            将当前行置为屏幕的底行
nz-            将当前行上的第n行置为屏幕的底行




vi中的shell转义命令


选项            作用
:!command        执行shell的command命令,如:!ls
:!!            执行前一个shell命令
:r!command        读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容
:w!command        将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all
:cd directory        将当前工作目录更改为directory所表示的目录
:sh            将启动一个子shell,使用^d(ctrl+d)返回vi
:so file        在shell程序file中读入和执行命令




vi中的宏与缩写
(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)


选项            作用
:map key command_seq    定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本
:map            在状态行显示所有已定义的宏
:umap key        删除该键的宏
:ab string1 string2    定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2
:ab            显示所有缩写
:una string        取消string的缩写




在vi中缩进文本


选项            作用
^i(ctrl+i)或tab        插入文本时,插入移动的宽度,移动宽度是事先定义好的
:set ai            打开自动缩进
:set sw=n        将移动宽度设置为n个字符
n<<            使n行都向左移动一个宽度
n>>            使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度 
 












vi 编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对 Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑 器,学会它后,您将在Linux的世界里畅行无阻。 
1、vi的基本概念 
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下: 
1) 命令行模式command mode) 
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 
2) 插入模式(Insert mode) 
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 
3) 底行模式(last line mode) 
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。 
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。 
2、vi的基本操作 
a) 进入vi 
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: 
$ vi myfile 
不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到 「插入模式(Insert mode)」再说吧! 
b) 切换至插入模式(Insert mode)编辑文件 
在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 
c) Insert 的切换 
您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。 
d) 退出vi及保存文件 
在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如: 
: w filename (输入 「w filename」将文章以指定的文件名filename保存) 
: wq (输入「wq」,存盘并退出vi) 
: q! (输入q!, 不存盘强制退出vi) 
3、命令行模式(command mode)功能键 
1). 插入模式 
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件; 
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。 
2). 从插入模式切换为命令行模式 
按「ESC」键。 
3). 移动光标 
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。 
按「ctrl」+「b」:屏幕往“后”移动一页。 
按「ctrl」+「f」:屏幕往“前”移动一页。 
按「ctrl」+「u」:屏幕往“后”移动半页。 
按「ctrl」+「d」:屏幕往“前”移动半页。 
按数字「0」:移到文章的开头。 
按「G」:移动到文章的最后。 
按「$」:移动到光标所在行的“行尾”。 
按「^」:移动到光标所在行的“行首” 
按「w」:光标跳到下个字的开头 
按「e」:光标跳到下个字的字尾 
按「b」:光标回到上个字的开头 
按「#l」:光标移到该行的第#个位置,如:5l,56l。 
4). 删除文字 
「x」:每按一次,删除光标所在位置的“后面”一个字符。 
「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。 
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。 
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。 
「dd」:删除光标所在行。 
「#dd」:从光标所在行开始删除#行 
5). 复制 
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。 
「#yw」:复制#个字到缓冲区 
「yy」:复制光标所在行到缓冲区。 
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 
6). 替换 
「r」:替换光标所在处的字符。 
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。 
7). 回复上一次操作 
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。 
8). 更改 
「cw」:更改光标所在处的字到字尾处 
「c#w」:例如,「c3w」表示更改3个字 
9). 跳至指定的行 
「ctrl」+「g」列出光标所在行的行号。 
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。 
4、Last line mode下命令简介 
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。 
A) 列出行号 
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。 
B) 跳到文件中的某一行 
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 
C) 查找字符 
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。 
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 
D) 保存文件 
「w」:在冒号输入字母「w」就可以将文件保存起来。 
E) 离开vi 
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。 
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。 
5、vi命令列表 
1、下表列出命令模式下的一些键的功能: 

左移光标一个字符 

右移光标一个字符 

光标上移一行 

光标下移一行 

光标移动至行首 

数字“0”,光标移至文章的开头 

光标移至文章的最后 

光标移动至行尾 
Ctrl+f 
向前翻屏 
Ctrl+b 
向后翻屏 
Ctrl+d 
向前翻半屏 
Ctrl+u 
向后翻半屏 

在光标位置前插入字符 

在光标所在位置的后一个字符开始增加 

插入新的一行,从行首开始输入 
ESC 
从输入状态退至命令状态 

删除光标后面的字符 
#x 
删除光标后的#个字符 

(大写X),删除光标前面的字符 
#X 
删除光标前面的#个字符 
dd 
删除光标所在的行 
#dd 
删除从光标所在行数的#行 
yw 
复制光标所在位置的一个字 
#yw 
复制光标所在位置的#个字 
yy 
复制光标所在位置的一行 
#yy 
复制从光标所在行数的#行 

粘贴 

取消操作 
cw 
更改光标所在位置的一个字 
#cw 
更改光标所在位置的#个字 
2、下表列出行命令模式下的一些指令 
w filename 
储存正在编辑的文件为filename 
wq filename 
储存正在编辑的文件为filename,并退出vi 
q! 
放弃所有修改,退出vi 
set nu 
显示行号 
/或? 
查找,在/后输入要查找的内容 

与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。 
对于第一次用vi,有几点注意要提醒一下: 
1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。 
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC」键。 
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)










linux vi命令简介


linux vi命令是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。


linux vi命令不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。


linux vi命令没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式:命令行模式、文本输入模式和末行模式。


命令行模式


任何时候,不管用户处于何种模式,只要按一下键,即可使linux vi命令行模式;我们在shell环境(提示符为$)下输入启动linux vi命令,进入编辑器时,也是处于该模式下。


在该模式下,用户可以输入各种合法的linux vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的linux vi命令,则linux vi命令在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。


文本输入模式


在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键即可。


末行模式


末行模式也称ex转义模式。


linux vi命令和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。linux vi命令有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时linux vi命令会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,linux vi命令自动回到命令模式。例如:


:1,$s / A / a / g


则从文件第一行至文件尾将大写A全部替换成小写a。


若在末行模式下输入命令过程中改变了主意,可按键,或用退格键将输入的命令全部删除之后,再按一下退格键,即可使linux vi命令回到命令模式下。


如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式返回,则按Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。


linux vi命令的进入与退出


linux vi命令的进入


用户登录到系统中之后,系统给出提示符“$”。在提示符后键入Vi和想要编辑(或建立)的文件名,便可进入Vi。


[例1] 键入命令:


$ vi example.c


屏幕显示如下:
~
~
~
~
~
~
~
~
~
~
~
~
~
“ example.c” [New File]


如果只键入Vi,而不带文件名,也可以进入Vi。之后在光标处键入文件内容,退出Vi时,只需在退出命令后输入文件名即可。
进入Vi之后,首先进入的就是命令模式,也就是说等待命令输入而不是文本输入。这时输入的字母都将作为命令来解释。光标停在屏幕第一行首位上(用表示),其余各行行首均有一个“~”符号,表示该行为空行。最后一行也称状态行,显示出当前正在编辑的文件名以及其状态。如本例是[New File],表示example.c是一个新建的文件。如果example.c文件已在系统中存在,那么输入上述命令后,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名、行数和字符数。


[例2] 键入命令:


$ vi example.c


然后键入:


#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
“ example.c” [ New File]


注意,在这里我们为了节省篇幅起见,屏幕只显示15行。事实上,初始的显示行数与用户所用终端有关,一般的CRT终端可显示25行。在窗口系统中,显示行数与运行linux vi命令的那个窗口有关。然而我们可以对显示行数进行设置。例如,在能显示25行的CRT终端上,让Vi只显示15行。设置的方法将在本节后面介绍。


当用linux vi命令建立一个新文件时,在进入linux vi命令中也可以不给出文件名,当编辑完文件需要保存数据时,再由用户指定文件名。


进入linux vi命令时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。


如果希望在进入linux vi命令之后,光标处于文件中特定的某行上,可在linux vi命令后加上任选项+n,其中n为指定的行数。


[例3] 键入命令:


$ vi +5 example1.c


后,屏幕显示如下:


#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
~
“ example.c” 12 lines, 125 characters


光标将位于文件example1.c中的第5行上。


如果希望在进入linux vi命令之后光标处于文件最末行,则只需把命令中附加项“+”后面的数字n省略掉即可。


在进入linux vi命令时,除了可以指定一个光标起始行号之外,还可以在命令中指定一个模式串,此时在进入linux vi命令后,光标就处于文件中第一个与指定模式串相匹配的那行上。


[例4] 键入命令:


$ vi +/int example1.c


屏幕显示如下:


#include
main ( )
{ int k ;
for ( k=0 ; k<3 ; k++) add( );
}
add( )
{ static int x=0;
x++ ;
printf(“x = %d\n”, x);
}
~
~
~
~
~
“ example.c” 12 lines, 125 characters


光标将位于文件example1.c中的第3行上。


使用linux vi命令可以同时编辑多个文件,只要在进入linux vi命令的命令中写入所要操作的文件即可,还可以使用通配符。


[例5] 键入命令:


$ vi *.cat


就可以编辑所有后缀为cat的文件了。当然,您还可以使用shell中内置的模式匹配来装载文件,这样会更富技巧性。一旦您在命令行中包含了所有的待编辑文件名,就可以在linux vi命令中方便地移来移去。


退出Vi


当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。


在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。


在末行模式下,输入命令:w


linux vi命令保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。


[例6]


:w newfile
此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:


File exists (use ! to override)


此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令


:w! newfile


否则可选择另外的文件名来保存当前文件。


在末行模式下,输入命令:q


系统退出linux vi命令返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:


No write since last change (use ! to overrides)


提示用户该文件被修改后没有保存,然后linux vi命令并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出linux vi命令时,可使用命令:q!


linux vi命令放弃所作修改而直接退到shell下。


在末行模式下,输入命令:wq


linux vi命令将先保存文件,然后退出linux vi命令返回到shell。


在末行模式下,输入命令:x


该命令的功能同命令模式下的ZZ命令功能相同。


linux vi命令中的行号


linux vi命令中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此linux vi命令提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。


使用的命令为:在末行方式下输入命令:


:set number


需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。












linux vi命令一览表2009年08月31日 星期一 22:52进入vi的命令


  vi filename :打开或新建文件,并将光标置于第一行首


  vi +n filename :打开文件,并将光标置于第n行首


  vi + filename :打开文件,并将光标置于最后一行首


  vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处


  vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename


  vi filename....filename :打开多个文件,依次进行编辑


  移动光标类命令[/b]


  h :光标左移一个字符


  l :光标右移一个字符


  space:光标右移一个字符


  Backspace:光标左移一个字符


  k或Ctrl+p:光标上移一行


  j或Ctrl+n :光标下移一行


  Enter :光标下移一行


  w或W :光标右移一个字至字首


  b或B :光标左移一个字至字首


  e或E :光标右移一个字至字尾


  ) :光标移至句尾


  ( :光标移至句首


  }:光标移至段落开头


  {:光标移至段落结尾


  nG:光标移至第n行首


  n+:光标下移n行


  n-:光标上移n行


  n$:光标移至第n行尾


  H :光标移至屏幕顶行


  M :光标移至屏幕中间行


  L :光标移至屏幕最后行


  0:(注意是数字零)光标移至当前行首


  $:光标移至当前行尾


  屏幕翻滚类命令


  Ctrl+u:向文件首翻半屏


  Ctrl+d:向文件尾翻半屏


  Ctrl+f:向文件尾翻一屏


  Ctrl+b;向文件首翻一屏


  nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。


  插入文本类命令


  i :在光标前


  I :在当前行首


  a:光标后


  A:在当前行尾


  o:在当前行之下新开一行


  O:在当前行之上新开一行


  r:替换当前字符


  R:替换当前字符及其后的字符,直至按ESC键


  s:从当前光标位置处开始,以输入的文本替代指定数目的字符


  S:删除指定数目的行,并以所输入文本代替之


  ncw或nCW:修改指定数目的字


  nCC:修改指定数目的行


  删除命令


  ndw或ndW:删除光标处开始及其后的n-1个字


  do:删至行首


  d$:删至行尾


  ndd:删除当前行及其后n-1行


  x或X:删除一个字符,x删除光标后的,而X删除光标前的


  Ctrl+u:删除输入方式下所输入的文本


  搜索及替换命令


  /pattern:从光标开始处向文件尾搜索pattern


  ?pattern:从光标开始处向文件首搜索pattern


  n:在同一方向重复上一次搜索命令


  N:在反方向上重复上一次搜索命令


  :s/p1/p2/g:将当前行中所有p1均用p2替代


  :n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代


  :g/p1/s//p2/g:将文件中所有p1均用p2替换


  选项设置


  all:列出所有选项设置情况


  term:设置终端类型


  ignorance:在搜索中忽略大小写


  list:显示制表位(Ctrl+I)和行尾标志($)


  number:显示行号


  report:显示由面向行的命令修改过的数目


  terse:显示简短的警告信息


  warn:在转到别的文件时若没保存当前文件则显示NO write信息


  nomagic:允许在搜索模式中,使用前面不带“\”的特殊字符


  nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始


  mesg:允许vi显示其他用户用write写到自己终端上的信息


  最后行方式命令


  :n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下


  :n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下


  :n1,n2 d :将n1行到n2行之间的内容删除


  :w :保存当前文件


  :e filename:打开文件filename进行编辑


  :x:保存当前文件并退出


  :q:退出vi


  :q!:不保存文件并退出vi


  :!command:执行shell命令command


  :n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入


  :r!command:将命令command的输出结果放到当前行


  寄存器操作


  "?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字


  "?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字


  "?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字


  "?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字


  ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。


 
这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载 


1. 更改档案拥有者 
命令 : chown [-cfhvR] [--help] [--version] user[:group] file... 
功能 : 更改文件或者文件夹的拥有者 
参数格式 : 
      user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group) 
         -c : 若该档案拥有者确实已经更改,才显示其更改动作 
         -f : 若该档案拥有者无法被更改也不要显示错误讯息 
         -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案 
         -v : 显示拥有者变更的详细资料 
         -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更) 


例如:chown -R oracle:oinstall /oracle/u01/app/oracle  
      更改目录拥有者为oracle 


2. 修改权限 
    命令:chmod (change mode) 
    功能:改变文件的读写和执行权限。有符号法和八进制数字法。 
    选项:(1)符号法: 
  命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename 
          u (user)   表示用户本人。 
          g (group)  表示同组用户。 
          o (oher)   表示其他用户。 
          a (all)    表示所有用户。 
          +          用于给予指定用户的许可权限。 
          -          用于取消指定用户的许可权限。 
          =          将所许可的权限赋给文件。 
          r (read)   读许可,表示可以拷贝该文件或目录的内容。 
          w (write)  写许可,表示可以修改该文件或目录的内容。 
          x (execute)执行许可,表示可以执行该文件或进入目录。 
  
          (2)八进制数字法:   
  命令格式:chmod abc file 
  其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。 
          4 (100)    表示可读。 
          2 (010)    表示可写。 
          1 (001)    表示可执行。 
  若要rwx属性则4+2+1=7; 
  若要rw-属性则4+2=6; 
  若要r-x属性则4+1=5。 


    例如:# chmod a+rx filename 
            让所有用户可以读和执行文件filename。 
          # chmod go-rx filename 
            取消同组和其他用户的读和执行文件filename的权限。 
          # chmod 741 filename 
            让本人可读写执行、同组用户可读、其他用户可执行文件filename。 
  # chmod -R 755 /home/oracle 
    递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行 


3. 修改文件日期 
    命令:touch 
    格式:touch filenae 
    功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。 
    例如:% touch file 


4. 链接文件 
    命令:ln (link) 
    格式:ln [option] filename linkname 
          ln [option] directory pathname 
    功能:为文件或目录建立一个链。其中,filename和directory是源文件名和 
          源目录名;linkname和pathname分别表示与源文件或源目录名相链接的 
          文件或目录。 
    选项:-s  为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接 
    注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出 
          现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。 
    例如:% ln -s filename linkname 


5. 显示日期 
    命令:date 
    例如:% date 


6. 显示日历 
    命令:cal (calendar) 
    格式:cal [month] year 
    功能:显示某年内指定的日历 
    例如:% cal 1998  


7. 显示文件头部 
    命令:head 
    格式:head [option] filename 
    功能:显示文件的头部 
    选项:缺省  显示文件的头10行。 
          -i    显示文件的开始 i行。 
    例如:% head filename 


8. 显示文件尾部 
    命令:tail 
    格式:tail [option] filename 
    功能:显示文件的尾部 
    选项:缺省  显示文件的末10行。 
          -i    显示文件最后 i行。 
          +i    从文件的第i行开始显示。 
    例如:% tail filename 


9. 显示用户标识 
    命令:id 
    格式:id [option] [user] 
    功能:显示用户标识及用户所属的所有组。 
    选项:-a 显示用户名、用户标识及用户所属的所有组 
    注释: 
    例如:% id username 


10. 查看当前登录的用户 
    命令:users 


11. 显示都谁登录到机器上 
    命令:who 
    格式:who 
    功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。 
    例如:% who 


12. 显示当前终端上的用户名 
    命令:whoami 
    格式:whoami 
    功能:显示出当前终端上使用的用户。 
    例如:% whoami 


13. 寻找文件 
    命令:find 
    格式:find pathname [option] expression 
    功能:在所给的路经名下寻找符合表达式相匹配的文件。 
    选项:-name     表示文件名 
          -user     用户名,选取该用户所属的文件 
          -size     按大小查找,以block为单位,一个block是512B 
          -mtime n  按最后一次修改时间查找,选取n天内被修改的文件 
  -perm     按权限查找 
          -type     按文件类型查找 
  -atime    按最后一次访问时间查找 


    例如:% find ./ -name '*abc*' -print 


14. 搜索文件中匹配符 
    命令:grep 
    格式:grep [option] pattern filenames 
    功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。 
    选项:-i    匹配时忽略大小写 
  -v 找出模式失配的行 


    例如:% grep -i 'java*' ./test/run.sh 


15. 统计文件字数 
    命令:wc [option] filename 
    功能:统计文件中的文件行数、字数和字符数。 
    选项:-l 统计文件的行数 
-w 统计文件的单词数 
-c 统计文件的字符数 
    注释:若缺省文件名则指标准输入 
    例如:% wc -c ./test/run.sh 


16. 显示磁盘空间 
    命令:df (disk free) 
    格式:df [option] 
    功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总 
          字节数、已用字节数、剩余字节数占用百分比。 
    选项: 
-a:显示全部的档案系统和各分割区的磁盘使用情形 
-i:显示i -nodes的使用量 
-k:大小用k来表示 (默认值) 
-t:显示某一个档案系统的所有分割区磁盘使用量 
-x:显示不是某一个档案系统的所有分割区磁盘使用量 
-T:显示每个分割区所属的档案系统名称 
-h: 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。 
    注释: 
    例如:% df -hi 


17. 查询档案或目录的磁盘使用空间 
    命令:du (disk usage) 
    格式:du [option] [filename] 
    功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小 
    选项: 
-a:显示全部目录和其次目录下的每个档案所占的磁盘空间 
-b:大小用bytes来表示 (默认值为k bytes) 
-c:最后再加上总计 (默认值) 
-s:只显示各档案大小的总合 
-x:只计算同属同一个档案系统的档案 
-L:计算所有的档案大小 
-h: 表示档案系统大小使用 GB、MB 等易读的格式。 
    例如:% du -a 
% du -sh /etc 只显示该目录的总合 
% du /etc | sort -nr | more 统计结果用sort 指令进行排序, 
sort 的参数 -nr 表示要以数字排序法进行反向排序。 


18. 显示进程 
    命令:ps 
    格式:ps [option] 
    功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。 
    选项: 
  -a 显示所有进程信息 
  -U uidlist 列出这个用户的所有进程 
          -e 显示当前运行的每一个进程信息 
          -f 显示一个完整的列表 
  -x 显示包括没有终端控制的进程状况 。 
    注释: 
    例如:% ps -ef 
  % ps -aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。 


19. 终止进程 
    命令:kill 
    格式:kill [option] pid 
    功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process, 
    因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill  
    选项:-9  强行终止进程 
    注释:pid标示进程号,可由ps命令得到。 
    例如:% kill -9 pid 
    你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。 


20. 查看自己的IP地址 
    命令:ifconfig 
    格式:ifconfig -a 
   
21. 查看路由表 
    命令:netstat 
    格式:netstat -rn 


22. 远程登录 
    命令:telnet 
    格式:telnet hostname 


23. 文件传输 
    命令:ftp (file transfer program) 
    格式:ftp hostname 
    功能:网络文件传输及远程操作。 
    选项:ftp命令: 
           cd [dirname]  进入远程机的目录 
           lcd [dirname] 设置本地机的目录 
           dir/ls        显示远程的目录文件 
           bin           以二进制方式进行传输 
   asc           以文本文件方式进行传输 
           get/mget      从远程机取一个或多个文件 
           put/mput      向远程机送一个或多个文件 
           prompt        打开或关闭多个文件传送时的交互提示 
           close         关闭与远程机的连接 
           quit          退出ftp 
   !/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态 
    注释: 
    例如:% ftp hostname 


24. 查看自己的电子邮件 
    命令:mailx 
    格式:mailx 
    选项: 
delete  删除 
next    下一个 
quit    退出 
         reply   回复    


25. 回忆命令 
    命令:history 
    格式:history 
    功能:帮助用户回忆执行过的命令。 
    选项: 
    注释: 
    例如:% history 


26. 网上对话 
    命令:talk 
    格式:talk username 
    功能:在网上与另一用户进行对话。 
    选项: 
    注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部 
          显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。 
    例如:% talk username 


27. 允许或拒绝接受信息 
    命令:mesg (message) 
    格式:mesg [n/y] 
    功能:允许或拒绝其它用户向自己所用的终端发送信息。 
    选项:n 拒绝其它用户向自己所用的终端写信息 
          y 允许其它用户向自己所用的终端写信息(缺省值) 
    注释: 
    例如:% mesg n 


28. 给其他用户写信息 
    命令:write 
    格式:write username [ttyname] 
    功能:给其他用户的终端写信息。 
    选项: 
    注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。 
    例如:write username 


29. 创建、修改、删除用户和群组 
    a. 创建群组: 
例如: groupadd oinstall    创建群组名为oinstall的组 
groupadd -g 344 dba  
创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。 
    b. 修改群组: 
groupmod:该命令用于改变用户组帐号的属性 
groupmod –g 新的GID 用户组帐号名 
groupmod –n 新组名 原组名:此命令由于改变用户组的名称 


    c. 删除群组: 
groupdel 组名:该命令用于删除指定的组帐号 


    d. 新建用户: 
命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]] 
[-f inactive] [-e expire ] [-p passwd] [-r] name 
主要参数 
-c:加上备注文字,备注文字保存在passwd的备注栏中。  
-d:指定用户登入时的启始目录。 
-D:变更预设值。 
-e:指定账号的有效期限,缺省表示永久有效。 
-f:指定在密码过期后多少天即关闭该账号。 
-g:指定用户所属的群组。 
-G:指定用户所属的附加群组。 
-m:自动建立用户的登入目录。 
-M:不要自动建立用户的登入目录。 
-n:取消建立以用户名称为名的群组。 
-r:建立系统账号。 
-s:指定用户登入后所使用的shell。 
-u:指定用户ID号。 


举例: # useradd -g oinstall -G dba oracle  创建Oracle用户 
    
    e. 删除用户 
命令: userdel 用户名 
删除指定的用户帐号 
userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录 
例:#useradd -g root kkk //把kkk用户加入root组里 


    f. 修改用户 
命令: usermod 
修改已有用户的信息 
usermod –l 旧用户名 新用户名: 修改用户名 
usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统 
usermod –U 用户名: 对锁定的用户帐号进行解锁 
passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统 
例:#usermod -l user2 user1 //把用户user2改名为user1 


30. 启动、关闭防火墙 
永久打开或则关闭 
chkconfig iptables on 
chkconfig iptables off 
即时生效:重启后还原 
service iptables start 
service iptables stop 
     或者: 
/etc/init.d/iptables start 
/etc/init.d/iptables stop 


31. 启动VSFTP服务 
即时启动: /etc/init.d/vsftpd start 
即时停止: /etc/init.d/vsftpd stop 


开机默认VSFTP服务自动启动: 
方法一:(常用\方便) 
[root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况) 
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off 
[root@localhost etc]# chkconfig vsftpd on  (执行ON设置) 
或者:方法二: 
修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。 


32. vi技巧 
a. 进入输入模式 
新增 (append) 
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。 
A:从光标所在列最後面的地方开始新增资料。 


插入 (insert) 
i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。 
I :从光标所在列的第一个非空白字元前面开始插入资料。 


开始 (open) 
o :在光标所在列下新增一列并进入输入模式。 
O: 在光标所在列上方新增一列并进入输入模式。 
b. 退出vi 
在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。 


c. 删除与修改文件的命令: 
x:删除光标所在字符。 
dd :删除光标所在的列。 
r :修改光标所在字元,r 後接著要修正的字符。 
R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。 
s:删除光标所在字元,并进入输入模式。 
S:删除光标所在的列,并进入输入模式。 


d. 屏幕翻滚类命令 
Ctrl+u: 向文件首翻半屏 
Ctrl+d: 向文件尾翻半屏 
Ctrl+f: 向文件尾翻一屏 
Ctrl+b: 向文件首翻一屏 
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。 


e. 删除命令 
ndw或ndW: 删除光标处开始及其后的n-1个字 
do: 删至行首 
d$: 删至行尾 
ndd: 删除当前行及其后n-1行 
x或X: 删除一个字符,x删除光标后的,而X删除光标前的 
Ctrl+u: 删除输入方式下所输入的文本 


f. 搜索及替换命令 
/pattern: 从光标开始处向文件尾搜索pattern 
?pattern: 从光标开始处向文件首搜索pattern 
n: 在同一方向重复上一次搜索命令 
N: 在反方向上重复上一次搜索命令 
:s/p1/p2/g: 将当前行中所有p1均用p2替代 
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代 
:g/p1/s//p2/g: 将文件中所有p1均用p2替换 


g. 复制,黏贴 
(1) 选定文本块,使用v进入可视模式;移动光标键选定内容 
(2) 复制选定块到缓冲区,用y;复制整行,用yy 
(3) 剪切选定块到缓冲区,用d;剪切整行用dd 
(4) 粘贴缓冲区中的内容,用p 


h. 其他 
在同一编辑窗打开第二个文件,用:sp [filename] 
在多个编辑文件之间切换,用Ctrl+w 














Linux下文件的压缩与解压缩命令详解2009-11-02 17:42在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一
番小结,希望你下次遇到这些文件时不至于被搞晕icon_smile.gif


  在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指
将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压
缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压
缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助
另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。


  Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包
,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进
行压缩了,所以首先就来讲讲tar命令的基本用法:


  tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面
来举例说明一下:


  # tar -cf all.tar *.jpg
  这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包
,-f指定包的文件名。


  # tar -rf all.tar *.gif
  这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的
意思。
# tar -uf all.tar logo.gif
  这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。




  # tar -tf all.tar
  这条命令是列出all.tar包中所有文件,-t是列出文件的意思


  # tar -xf all.tar
  这条命令是解出all.tar包中所有文件,-x是解开的意思


  以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压
文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压
缩程序,比如调用gzip、bzip2等。


  1) tar调用gzip


  gzip是GNU组织(GNU是一个自由软件工程项目)开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip
相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下



  # tar -czf all.tar.gz *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个
gzip压缩过的包,包名为all.tar.gz


  # tar -xzf all.tar.gz
  这条命令是将上面产生的包解开。


  2) tar调用bzip2


  bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。
与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例
说明一下:


  # tar -cjf all.tar.bz2 *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个
bzip2压缩过的包,包名为all.tar.bz2


  # tar -xjf all.tar.bz2
  这条命令是将上面产生的包解开。
3)tar调用compress


  compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人
多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress
。tar中使用-Z这个参数来调用compress。下面来举例说明一下:


  # tar -cZf all.tar.Z *.jpg
  这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成
一个uncompress压缩过的包,包名为all.tar.Z


  # tar -xZf all.tar.Z
  这条命令是将上面产生的包解开


  有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文
件作一个小结:


  1)对于.tar结尾的文件


  tar -xf all.tar


  2)对于.gz结尾的文件


  gzip -d all.gz
  gunzip all.gz


  3)对于.tgz或.tar.gz结尾的文件


  tar -xzf all.tar.gz
  tar -xzf all.tgz


  4)对于.bz2结尾的文件


  bzip2 -d all.bz2
  bunzip2 all.bz2


  5)对于tar.bz2结尾的文件


  tar -xjf all.tar.bz2


  6)对于.Z结尾的文件


  uncompress all.Z


  7)对于.tar.Z结尾的文件


  tar -xZf all.tar.z


  另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它
们:


  1)对于.zip


  linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参
数选项很多,这里只做简单介绍,依旧举例说明一下其用法:


  # zip all.zip *.jpg
  这条命令是将所有.jpg的文件压缩成一个zip包
# unzip all.zip
  这条命令是将all.zip中的所有文件解压出来


  2)对于.rar


  要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记
住,RAR for Linux
不是免费的;可从[url]http://www.rarsoft.com/download.htm[/url]下载RARfor Linux 3.2.
0,然后安装:


  # tar -xzpvf rarlinux-3.2.0.tar.gz
  # cd rar
  # make


  这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar
是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:




  # rar a all *.jpg
  这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar
扩展名将自动附加到包名后。


  # unrar e all.rar
  这条命令是将all.rar中的所有文件解压出来 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值