vi用法整理

来源:互联网 发布:linux赋权限命令 编辑:程序博客网 时间:2024/05/16 07:13

vi命令模式中可用的移动键:
h---将光标向左移一个字符
j---将光标向下移一个字符
k---将光标向上移一个字符
l---将光标向右移一个字符
w---将光标向前移一个单词
b---将光标向后移一个单词
e---将光标移到下一个单词之后
0---将光标移到行首
$---将光标移到行末
)---将光标移到下一句句首
(---将光标移到上一句句首
}---将光标移到下一段开始处
{---将光标移到下一段开始处
G---将光标移到当前文档的底部
^---将光标移到行内非空格的第一个字符
H---将光标移到屏幕上第一行
L---将光标移到屏幕上最后一行

:1回车-将光标移到当前文档的顶部
:n回车-将光标移到当前文档第n行
u或U----撤消上一次操作
cw---删除当前光标开始的单词并进行编辑模式
.---重复上一次操作,可以和cw结合使用提高效率
:!sh--不退出文档,转到shell界面
:r filename--读入外部文件到当前文件中

在vi中滚动屏幕:
z然后按回车----将光标所在的那一行移至屏幕顶部
z然后按"-"----将光标所在的那一行移至屏幕底部
z然后按"."----将光标所在的那一行移至屏幕中部
Ctrl+u------向上滚动半屏
Ctrl+d------向下滚动半屏
Ctrl+f------向前滚动全屏
Ctrl+b------向后滚动全屏
Ctrl+e------向下滚动一行
Ctrl+y------向上滚动一行


vi的文本编辑命令:
D------从光标定位的行末删除文本
dd------行删除光标定位的当前行
ndd-----n代表即将删除的行数。例如5dd命令不仅会把当前行删除,还会把紧随其后的4行也删除
rc------c代表字符。光标下方的字符将被替换为r后面的字符
R------R后键入的文本将改写当前文本,从光标所在位置开始,一直到按下Escape返回命令模式为止
S------删除当前行,并开始在当前的空白行插入文本
x------删除光标下方的字符,并将字符右移填空
X------删除光标前的字符,并移动字符,令光标下方的字符来填空
~------更改光标下方的字母的大小写
J------将当前行和前一行连接起来,并删除因此而来的空行
*------查找当前光标所在位置的单词

vi中的查找和替换命令
/pattern--------pattern(样式)指代的是要查找的内容。vi将在文件中向前查找与指定内容匹配的第一样式
/-----------重复上一次查找,在文件中查找下一个匹配样式
?pattern--------pattern(样式)指代的是要查找的内容。vi将在文件中向后查找与指定内容匹配的第一样式
?-----------重复上一次查找,在文件中查找与上一次查找内容匹配的样式
%-----------把当前光标移至匹配的圆括号或方括号。对程序员来说,该命令非常有用
:s/pattern1/pattern2--用pattern2替换当前行中与pattern1匹配的每个内容
:%s/pattern1/pattern2--用pattern2替换整个文件中与pattern1匹配的每个内容


vi中的yank命令
yw-------把光标当前所在的单词移到缓冲区
y$-------把当前行及其以前的所有文本移到缓冲区
yy-------把当前行整行移到缓冲区
nyy-------n代表打算移到缓冲区的文本的行数。例如5yy将把当前行和紧随其后的4行移到缓冲区

文字复制和粘贴
(例)
复制光标以下3行:3yy,3Y
复制光标以后6个单词:6yw
粘贴到光标以下:p
粘贴到光标以上:P
通用替换命令
:行1,行2s/字符串1/字符串2/g
“行1,行2”指定方法例:
第5行到第30行:5,30
当前行到第30行:.,30
第5行到第末尾行:5,$
第5行到含有end的行:5,/end/
所有行:%

删除命令操作
dl 删除当前字符(与x命令功能相同)
d0 删除到某一行的开始位置
d^ 删除到某一行的第一个字符位置(不包括空格或TA B字符)
dw 删除到某个单词的结尾位置
d3w 删除到第三个单词的结尾位置
db 删除到某个单词的开始位置
dW 删除到某个以空格作为分隔符的单词的结尾位置
dB 删除到某个以空格作为分隔符的单词的开始位置

删除命令操作
d7B 删除到前面7个以空格作为分隔符的单词的开始位置
d) 删除到某个语句的结尾位置
d4) 删除到第四个语句的结尾位置
d( 删除到某个语句的开始位置
d} 删除到某个段落的结尾位置
d{ 删除到某个段落的开始位置
d7{ 删除到当前段落起始位置之前的第7个段落位置
dd 删除当前行
d/text 删除从文本中出现“ t e x t”中所指定字样的位置,一直向前直到下一个该字样所出现的
位置(但不包括该字样)之间的内容
dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括
该字符)之间的内容
dtc 删除当前行直到下一个字符“ c”所出现位置之间的内容
D 删除到某一行的结尾
d$ 删除到某一行的结尾
5dd 删除从当前行所开始的5行内容
dL 删除直到屏幕上最后一行的内容
dH 删除直到屏幕上第一行的内容
dG 删除直到工作缓存区结尾的内容
d1G 删除直到工作缓存区开始的内容

修改命令操作
cl 更改当前字符
cw 修改到某个单词的结尾位置
c3w 修改到第三个单词的结尾位置
cb 修改到某个单词的开始位置
cW 修改到某个以空格作为分隔符的单词的结尾位置
cB 修改到某个以空格作为分隔符的单词的开始位置
c7B 修改到前面7个以空格作为分隔符的单词的开始位置
c0 修改到某行的结尾位置
c) 修改到某个语句的结尾位置
c4) 修改到第四个语句的结尾位置
c( 修改到某个语句的开始位置
c} 修改到某个段落的结尾位置
c{ 修改到某个段落的开始位置
c7{ 修改到当前段落起始位置之前的第7个段落位置
ctc 修改当前行直到下一个字符c所出现位置之间的内容
C 修改到某一行的结尾
cc 修改当前行
5cc 修改从当前行所开始的5行内容

替换命令操作
s 将当前字符替换为一个或多个字符
S 将当前行替换为一个或多个字符
5s 将从当前字符开始的5个字符替换为一个或多个字符
vi替换使用规则:
:g/s1/s/s2/s3/g
第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换
s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串


显示行号
:set number 或者 :set nu
隐藏行号
:set nonumber 或者 :set nonu
自动缩进
:set autoindent 或者 :set ai
不自动缩进
:set noautoindent 或者 :set noai
显示Tab及行尾字符
:set list
隐藏Tab及行尾字符
:set nolist
设置Tab宽度为4个字符
:set tabstop=4
查看当前设置
:set all 

 

来源:内部

原创粉丝点击