Vi常见使用技巧

来源:互联网 发布:淘宝助理上传没有图片 编辑:程序博客网 时间:2024/06/15 00:30

Vi功能相当强大,但也很繁琐,需要你经常使用,经常锻炼,时间长了,命令记熟了,效率就提上去了。这篇文章不是Vi的详细使用手册,而只是针对me的。

 

1)启动Vi:

 

将光标定位到文件最后一行启动: vi + filename

将光标定位到每一个出现string字符串的行首: vi +/string filename(注意string用引号包围)

 

2)退出Vi:

 

:x功能相等于:wq

 

3)光标在窗口中的移动

 

命令模式下:

右移一个字符:   l或空格或→

移到当前行的开始: o

移到下一行的开始: Enter或+

移到上一行的开始:-

移到下一个字或标点符号: w

移到下一个字: W

移到字的下一结尾:e

移动字的下一结尾:E

移回到字或标点符号的开始:b

移回到字的开始: B

移到当前句子的结尾:)

移到当前句子的开始:(

移到当前段落的开始:{

移到当前段落的结尾:}

 

4)光标在缓冲区中移动

 

命令模式下

向上移动一个满屏幕:  Ctrl+F

向上移动半屏幕:  Ctrl+D

向下移动一个满屏幕:  Ctrl+B

向下移动半屏幕:   Ctrl+U

光标移动到屏幕顶部:  H

光标移动到屏幕中部:  M

光标移动到屏幕底部:  L

这些命令前都可加入数字n作为前缀

 

5)光标在正文中的移动

 

移动到文件的尾部:  G或:$

移动到文件的第n行:  nG或:n

向前移动光标到string首: /string

向后移动光标到string首: ?string

 

6)Vi命令

 

不显示行号::set nonumber

显示vi设置情况::set all

显示当前文件及工作缓冲区状况::f

将名为的文件内容插入到缓冲区当前行的下面::r filename

执行命令,并将结果插入到缓冲区当前行的下面::!cmd

 

7)重复和取消操作

 

上一次执行的命令继续执行:.

取消上一次修改:u

重新编辑,放弃此次对文件的所有修改,重新从盘中读取文件,开始编辑:e!

 

8)删除文本

 

删除当前字符:x

删除当前字符的前一个字符:X

删除从当前字符开始的n个字符:nx

删除当前字符前面的n个字符:nX

删除从当前字开始的n个字,并放入缓冲区:ndw

删除从当前字符开始的n行字符:nd$

删除从当前行开始的n行:ndd

删除一直到句尾:d )

删除一直到段末:d }

删除两行:d Enter

 

9)检索及替换

 

定位到当前位置后的第一个string字符串:/string

定位到当前位置前的第一个string字符串:?string

重复上一条检索命令,向后://

重复上一条检索命令,向前:??

定位到第一次检索到的行首::g/string

从第n1行到第n2行将字符串替str1换为字符串str2::[n1,n2]s/str1/str2/[option]

对整个文件将字符串str1替换为字符串st2:%s/str1/str2/[option]

从当前行到文件尾将字符串str1替换为字符串str2:.,$s/str1/str2/[option]

简单些的字符替换命令: :g/s1/s//s2/[option]

 

10)移动及复制文本

 

将第n1行到第n2行的内容移动到行号n3下: :n1,n2 m n3

将第n1行到第n2行的内容复制到行号n3下: :n1,n2 t n3

复制从当前字符开始的n个字,放到缓冲区中:nyw

复制从当前字符开始的n行字符,放到缓冲区中:ny$

复制到下一句的开始:y)

复制到下一段的开始:y}

复制从当前行的n行: nyy

复制两行:y Enter

 

11)修改文本

 

替换当前字符,不用按ESC键:r

从当前字符开始替换,直到ESC键为止:R

从当前字符开始的行字符进行替换:直到键入ESC:nC或nc$

从当前字符开始的个字进行替换操作,直到键入ESC:ncw

对从当前字符开始的行字符进行替换,直到键入ESC:ncc

替换从当前字符开始的个字符,直到键入ESC:ns

从当前行开始的行字符,进行替换,直到键入ESC:nS

将当前行和下一行连接起来:J