说明
总结出来的 基本上把所有的命令都罗列出来的 有遗漏的可以@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 == g!,就是不匹配!) :g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行 :v/./.,/./-1join 压缩空行 :g/^$/,/./-j 压缩空行 :ndw 或 ndW 删除光标处开始及其后的 n-1 个字符。 :d0 删至行首。 :d$ 删至行尾。 :ndd 删除当前行及其后 n-1 行。 或 X 删除一个字符。 :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自动缩进……