现在的位置: 首页 > 综合 > 正文

vi的使用方法

2013年04月01日 ⁄ 综合 ⁄ 共 2676字 ⁄ 字号 评论关闭

说明

总结出来的 基本上把所有的命令都罗列出来的 有遗漏的可以@me,[hufeng@funguide.com.cn] 或者自行添加 是编辑命令都是(量词+动词+名词)的组合 要修改光标当前所在位置的一个词,就是ciw,意思是Change Inner Word,我要修改到行尾,就是ct$,意思是Change To $,这样,你只需要知道c代表修改,w代表单词、s代表句子,你就可以自由组合了 那么删除一个词就是dw,Delete Word 删除到行尾就是的d$ 所以,只要记住几个动词和名词,就可以做大部分操作了 以上援引自
郑哥的话语

[编辑]简单命令

vi [filename]  打开、新建文件
i、a、o、I、A、O 从编辑模式进入插入模式
[ESC] 退出插入模式,进入编辑模式
:w   保存文件
:q   退出文件
:q!  不保存,强制退出
:wq  保存,退出
:ZZ  保存,退出
:e!  不保存,返回到初始文件

[编辑]基本编辑命令的扩展

==启动vi时的选项==:

1、vi file 打开文件,新建文件  
2、vi +n file 打开文件到第10行
3、vi + file 打开文件到最后一行
4、vi /patten file 打开文件到模式首次出现的位置

[编辑]只读方式

1、vi -R file (或者view file)以只读方式打开
2、w!     强制写保存
3、wq!强制写保存并退出

[编辑]恢复缓存区(用于系统崩溃)

1、ex -r   将得到系统所有以保存的文件列表
2、vi -r   将得到系统所有以保存的文件列表
3、vi -r file  恢复文件file的已编辑缓存区

[编辑]移动命令大全(非常有用)

:1.向前滚动一屏            Ctrl + f
:2.向后滚动一屏            Ctrl + b
:3.向前滚动半屏            Ctrl + d
:4.向后滚动半屏            Ctrl + u
:5.向前滚动一行            Ctrl + e
:6.向后滚动一行            Ctrl + y
:7.把当前行移动到屏幕顶部并滚动       z
:8.把当前行移动到屏幕中部并滚动       z.
:9.把当前行移动到屏幕底部并滚动       z-
:10.刷新屏幕                 Ctrl + l
:11.移动到屏幕首行         H
:12.移动到屏幕中间行      M
:13.移动到屏幕末行         L
:14.移动到下一行的首字母      return
:15.移动到下一行的首字母      +
:16.移动到上一行的首字母      -
:17.移动到当前行的第n列      n|
:18.移动到词尾         e
:19.移动到当前句子的开始 (
:20.移动到下一句的开始    )
:21.移动到当前段的开始       {
:22.移动到下一段的开始      }
:23.移动到当前节的开始      [[
:24.移动到下一节的开始       ]]
:25.向前授索模式   /pattern
:26.向后授索模式   ?pattern
:27.重复上次授索      n
:28.反方向重复上次授索      N
:29:向前重复上次授索      /
:30.向后重复上次授索      ?
:31.移动到第n行      nG
:32.移动到文件的尾部      G
:33.显示当前行      Ctrl+g 

[编辑]利用缓存区

进行编辑时,上一次的删除(d,x),复制(y)都将保存在缓存区中。 vi把前9次删除操作保存在编号缓存区中,可以通过访问编号缓存区中的任何一个来恢复前9次操作中的任何一个。(小型的删除操作将不会保存)。 实例讲解:

1、"dyy  复制当前行到d缓冲区 
2、"a7yy   复制接下来的7行到a缓冲区中
3、"dP   粘贴d缓冲区中的内容到光标前
4、"dp   粘贴d缓冲区中的内容到光标后
5、"a5dd  删除接下来的5行到a缓冲区中
6、"zd)    删除从光标到当前句尾之间的文本,并将其保存在z缓冲区中
7、"Zy)    把下一个句子添加到z缓冲区中(缓冲区大写(如Z)表示追加到(z)缓冲区中)

[编辑]标记自己的位置

1、mx 用x(x可为任何字符)标记当前位置
2、'x  (单引号)移动光标到x所标记的行的首字符
3、`x     (反引号)移动光标到x所标记的字符

[编辑]替换命令

1、:s/old/new/    把当前行中模式old的第一次出现替换为new
2、:s/old/new/g   把当前行中的每一个old替换为new
3、:50,100s/old/new/g   把第50-100行之间的old替换为new
4、:1,$s/old/new/g   把整个文本中的old替换为new
5、:%s/old/new/g     把整个文本中的old替换为new
6、:1,$s/old/new/gc 替换前要进行确认(想替换输入 y ,不想替换直接 回车)

[编辑]简单组合

利用vi的n(重复上次授索)和点(.)(重复上次命令),只修改那些不正确的。 修改必要的hao为jun

/hao   授索hao
cwjun  修改为jun
n   重复授索,跳过一次修改 
n  重复授索
. 重复修改
……
……
直到满意为止。

[编辑]删除命令

:%s/r//g                        删除DOS方式的回车^M 
:%s= *$==                     删除行尾空白 
:%s/^(.*)n1/1$/              删除重复行 
:%s/^.{-}pdf/new.pdf/    只是删除第一个pdf 
:%s///         又是删除多行注释(咦?为什么要说「又」呢?) 
:g/s*^$/d                    删除所有空行 :这个好用有没有人用过还有其他的方法吗?
:g!/^dd/d                     删除不含字符串'dd'的行 
:v/^dd/d                     同上 (译释:v ==&nbspg!,就是不匹配!) 
:g/str1/,/str2/d              删除所有第一个含str1到第一个含str2之间的行 
:v/./.,/./-1join                压缩空行 
:g/^$/,/./-j                     压缩空行 
:ndw 或&nbspndW            删除光标处开始及其后的&nbspn-1 个字符。 
:d0                                   删至行首。 
:d$                                  删至行尾。 
:ndd                                删除当前行及其后&nbspn-1 行。  :x  或&nbspX                      删除一个字符。 
:Ctrl+u                          删除输入方式下所输入的文本。 

[编辑]vi
set

:set autoindent     在插入模式下,对每行按与上行同样的标准进行缩进,与shiftwidth选项结合使用
:set list                  把制表符显示为^I ,用$标示行尾(使用list分辨尾部的字符是tab还是空格)
:set number           显示行号
:set readonly         文件只读,除非使用!可写
:set shiftwidth       反向制表符中的空格数目
:set showmatch     在vi中输入),}时,光标会暂时的回到相匹配的(,{   (如果没有相匹配的就发出错误信息的铃声),编程时很有用
:set tabstop           指定tab缩进的字符数目
:set wrapscan          授索在文件的两端绕回
:set filetype=html  设置文件类型为html 

[编辑]vim
set 在vi的基础上增加了如下(常用):

:set smartindent    
:set cindent
以上两行都是编程用的c自动缩进……

[编辑]set
设置可以在命令行输入,也可以写在$HOME下的.exrc (如果是vi)或者.vimrc(如果是vim)中。写进去很方便的。

【上篇】
【下篇】

抱歉!评论已关闭.