您的位置:首页 > 其它

vi的具体使用方法与命令

2011-11-14 21:42 561 查看
 
vi的使用:

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

# vi filename

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

# vi +n filename

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

# vi + filename

#打开文件filename,并将光标置于第一个与pattern匹配的首处

# vi +/pattern filename

#打开上次用vi编辑时发生系统崩溃的文件filename,并恢复它

# vi  -r filename

普通模式下的操作

进入插入模式:

命令      说明

i        从光标所在位置前开始插入文本

I        将光标移到当前行的行首,然后在其前面插入文本

a        用于在光标当前所在的位置之后追加新文本

A        将光标移到当前行的行尾,然后在从那里开始插入新文本

o        将在光标所在行的下面新开一行,并将光标置于该行的行首,等到输入文本

O        将在光标所在行的上面新开一行,并将光标置于该行的行首,等到输入文本

光标定位:

命令    说明

G     将光标移至最后一行行首   

nG    光标移至第n行首

n+    光标下移n行

n-    光标上移n行

n$    光标移至第n行尾

0     移动到光标所在行的行首    

$     移动到光标所在行的行尾

^     移动到光标所在行的第一个字符(非空格)

h,j,k,l 分别用于光标左移,下移,上移,右移一个字符

H     将光标移至当前屏幕首行的行首,即左上角

M     将光标移至当前屏幕显示文件的中间行的行首

L     将光标移至当前屏幕的最底行的行

:set nu 设置行号

:/findword 查找的单词

:%s/oldword/newword

#######################################

vi命令模式中可用的移动键:

h -------------- 将光标向左移一个字符

j -------------- 将光标向下移一个字符

k -------------- 将光标向上移一个字符

l -------------- 将光标向右移一个字符

w -------------- 将光标向前移一个单词

b -------------- 将光标向后移一个单词

e -------------- 将光标移到下一个单词之后

0 -------------- 将光标移到行首
$ -------------- 将光标移到行末
) -------------- 将光标移到下一句句首

( -------------- 将光标移到上一句句首

} -------------- 将光标移到下一段开始处

{ -------------- 将光标移到下一段开始处
shift+G -------- 将光标移到当前文档的底部
^ -------------- 将光标移到行内非空格的第一个字符

H -------------- 将光标移到屏幕上第一行

L -------------- 将光标移到屏幕上最后一行
[[ ------------- 将光标移到文档第一行

]] ------------- 将光标移到文档的最后一行

ngg ------------ 将光标移到文档的第n行

:n  ------------ 将光标移到文档的第n行

在vi中滚动屏幕:

z然后按回车 ---- 将光标所在的那一行移至屏幕顶部

z然后按"-" ----- 将光标所在的那一行移至屏幕底部

z然后按"." ----- 将光标所在的那一行移至屏幕中部

Ctrl+u --------- 向上滚动半屏

Ctrl+d --------- 向下滚动半屏

Ctrl+f --------- 向前滚动全屏

Ctrl+b --------- 向后滚动全屏

Ctrl+e --------- 向下滚动一行

Ctrl+y --------- 向上滚动一行

vi的文本编辑命令:
D -------------- 从光标定位的行末删除文本

dw ------------- 删除光标当前所在的单词

dd ------------- 行删除光标定位的当前行

ndd ------------ n代表即将删除的行数。例如5dd命令不仅会把当前行删除,还会把紧随其后的4行也删除

rc ------------- c代表字符。光标下方的字符将被替换为r后面的字符

R -------------- R后键入的文本将改写当前文本,从光标所在位置开始,一直到按下Escape返回命令模式为止
S -------------- 删除当前行,并开始在当前的空白行插入文本

x -------------- 删除光标下方的字符,并将字符右移填空

X -------------- 删除光标前的字符,并移动字符,令光标下方的字符来填空
~ -------------- 更改光标下方的字母的大小写
J -------------- 将当前行和前一行连接起来,并删除因此而来的空行

vi中的文件操作:
ZZ ------------- 保存对当前文件的更改,然后退出vi
:wq ------------ 保存对当前文件的更改,然后退出vi(和ZZ一样)

:w ------------- 保存对当前文件的更改

:w! ------------ 保存对当前文件的更改,如果有同名文件存在的话,就改写他

:q ------------- 退出vi。如果有未保存的更改,vi将发出抱怨,并"拒绝"退出

:q! ------------ 退出vi,即使还有尚未保存的更改。所有未保存的更改将被丢失
:e filename ---- 把指定文件载入vi进行编辑。如果指定文件不存在,将创建一个新文件

:e! ------------ 丢失所有更改,并从硬盘中重载已保存的文件

:sp filename - 将vi窗口划分为两部分,其中一部分显示新打开的文件,利用ctrl+ww在两个子窗口之间切换,利用该命令可以打开更多的子窗口

vi中的查找和替换命令
/pattern ------- pattern(样式)指代的是要查找的内容。vi将在文件中向前查找与指定内容匹配的第一样式
/ -------------- 重复上一次查找,在文件中查找下一个匹配样式

?pattern ------- pattern(样式)指代的是要查找的内容。vi将在文件中向后查找与指定内容匹配的第一样式

? -------------- 重复上一次查找,在文件中查找与上一次查找内容匹配的样式

% -------------- 把当前光标移至匹配的圆括号或方括号。对程序员来说,该命令非常有用
* -------------- 查找当前光标所在的单词

n -------------- 查找下一个

shift+n -------- 查找上一个
:s/pattern1/pattern2 -------------- 用pattern2替换当前行中与pattern1匹配的每个内容
:%s/pattern1/pattern2 ------------- 用pattern2替换整个文件中与pattern1匹配的每个内容

vi中的yank命令
yw ------------- 把光标当前所在的单词移到缓冲区

y$ ------------- 把当前行及其以前的所有文本移到缓冲区
yy ------------- 把当前行整行移到缓冲区

nyy ------------ n代表打算移到缓冲区的文本的行数。例如5yy将把当前行和紧随其后的4行移到缓冲区

p -------------- 粘贴

u -------------- undo,撤销上一次更改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: