免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 701 | 回复: 0
打印 上一主题 下一主题

vi命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-04 19:03 |只看该作者 |倒序浏览

====================进入vi的命令======================
vi  filename     打开或新建文件,并将光标置于第一行首
vi  +n filename   打开文件,并将光标置于第n行首
vi  + filename     打开文件,并将光标置于最后一行首
vi +/pattern filename 打开文件,并将光标置于第一个与pattern匹配的串处
vi  -r filename  在上次正用vi编辑时发生系统崩溃,恢复filename
vi  filename....filename打开多个文件,依次进行编辑
===================移动光标类命令=======================
h  光标左移一个字符
l  光标右移一个字符
space  光标右移一个字符
Backspace 光标左移一个字符
k或Ctrl+p 光标上移一行
j或Ctrl+n  光标下移一行
Enter   光标下移一行
w或W   光标右移一个字至字首
b或B   光标左移一个字至字首
e或E   光标右移一个字至字尾
)   光标移至句尾
(   光标移至句首
}  光标移至段落开头
{  光标移至段落结尾
nG  光标移至第n行首
n+  光标下移n行
n-  光标上移n行
n$  光标移至第n行尾
H   光标移至屏幕顶行
M  光标移至屏幕中间行
L   光标移至屏幕最后行
0  (注意是数字零)光标移至当前行首
$  光标移至当前行尾
t  ?????
=================屏幕翻滚类命令================
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
==================插入文本类命令================
i 在光标前
I 在当前行首
a 光标后
A 在当前行尾
o 在当前行之下新开一行
O 在当前行之上新开一行
r 替换当前字符
R 替换当前字符及其后的字符,直至按ESC键
s 从当前光标位置处开始,以输入的文本替代指定数目的字符
S 删除指定数目的行,并以所输入文本代替之
ncw或nCW修改指定数目的字
nCC 修改指定数目的行
===================删除命令=========================
ndw或ndW 删除光标处开始及其后的n-1个字
d0 删至行首(删除当前光标的前一个字符开始到行首的字符串)
d$ 删至行尾(删除当前光标所在字符到行尾的字符串)
ndd 删除当前行及其后n-1行,并且光标停留在当前行后的第n行的第一个非空字符处
dd 删除当前行
x或X 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u 删除输入方式下所输入的文本
===================搜索及替换命令====================
/pattern 从光标开始处向文件尾搜索pattern
?pattern 从光标开始处向文件首搜索pattern
n  在同一方向重复上一次搜索命令
N  在反方向上重复上一次搜索命令
:s/p1/p2/g 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 将文件中所有p1均用p2替换
==================选项设置===========================
all 列出所有选项设置情况
term 设置终端类型
ignorance 在搜索中忽略大小写
list 显示制表位(Ctrl+I)和行尾标志($)
number 显示行号
report 显示由面向行的命令修改过的数目
terse 显示简短的警告信息
warn 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan 禁止vi在搜索到达文件两端时,又从另一端开始
mesg 允许vi显示其他用户用write写到自己终端上的信息
=====================最后行方式命令==================
:n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d 将n1行到n2行之间的内容删除
:w   保存当前文件
:e filename 打开文件filename进行编辑
:x  保存当前文件并退出
:q  退出vi
:q!  不保存文件并退出vi
:!command 执行shell命令command
:n1,n2 w!command 将文件中n1行至n2行的内容作为command的输入并执行之,若不指定   n1,n2,则表示将整个文件内容作为command的输入
:r!command 将命令command的输出结果放到当前行
=======================寄存器操作============================
"?nyy 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一 个数字
ndd 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

=======================多行注释====================================
如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,
重复上个命令。如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是:
:.,+499 s/^/#/g
=======================加密文件================================
:X 在提示下就可以输入密码了。

其它:
===================说明=======================
ex, vi, view - text editors
  ◎SYNOPSIS
   
     vi [-eFGlRrSv] [-c cmd] [-t tag] [-w size] [file ...]
     ex [-eFGRrSsv] [-c cmd] [-t tag] [-w size] [file ...]
      
  ◎DESCRIPTION
  
     ex和vi是相同程式但不同介面,ex是一行处理的(line-oriented),
     vi是以全萤幕为基准的(screen oriented).二者能相互切换.
   
     View相当於vi使用-R(唯读)参数
   
  ◎OPTIONS
       -e     以ex模式开始编辑,如同用移除一个非空目录:rm -rf yourdirex编辑一般。
              vi -e filename 等同於 ex filename
       -F     当第一次编辑时,不要让vi整个档案。
            
        (预设是整个档案,以避免当您在编辑时,他人更改这个档案。)
       -R     以唯读模式开启,如同以vipw开启档案,或在命令列中设定readonly参数。
       -r     重新取得某个特定档案,若没有指定档案,档案表列会被重新取得。
            
        若没有该指定档案,档案会被视为没有-r参数编辑。
       -S     以安全编辑模式启动,不允许所有的外部程式存取。
       -s     进入batch模式,只能应用在ex编辑。batch模式在执行ex scripts非常有用。
            
        一些及时资讯及其他使用者导向的讯息被忽略(不显示),
            
        没有开始档案或环境变数被读取。
       -w     设定基本的视窗大小,用以定义显示的行数。
       -v     以vi模式开始编辑,如同vi 或view命令。
       ex/vi从标准输入读取讯息,在vi介面, 若标准输入不是一个终端机,会产生错误。
       在ex介面,若标准输入不是终端机,无论如何ex会试着从他读取命令。
       然而,此时会以batch模式进行,如同-s参数被指定。
===================移动类命令=======================
     往下移动到这个字下次一出现的地方。
     标向上移动一个萤幕。
     标往下移动数行(约12行)。
     将萤幕往上一行,但标位置不变。
     标往下移动一个萤幕。
+                 标往下移动到下一行第一个非空白字元。
     标往上移动数行(约12行)。
     将萤幕往上动,但标位置不变.
                    
CTRL+Y 每移动一次 Y就按一次
                    
(当然您的标须位在至少能够向上动的位置)
           $         将标移动到该行尾.
           (         标往上移动到上一句子.
           )         标往下移动到下一句子.
           -         标移动到上一行第一个非空白字元.
           0(数字)   移动标到该行的第一个字元(包含空白).
         
        
移动该行向右移动一个tab键距离,按第二次後开始动作.
         B       往上移动标到下一个字的开始.
         E       标往後移动到下一个字的最後一个字元.
         nG      移动到某行,n为行数,若没有指定则为档案的最後一行.
         H       移动标到档案第一行行首.
         L       将标移动到萤幕的最下一行.
         M       将标移动到萤幕的中间行.
         W       往下移动标到下一个字的开始.
           ^         移到该行第一个非空白字元.
         e       移动到该字的最後一字母.
         f  行中向後搜寻该字母并移动标到该位置.
                     
移动到a字母的位置fa
         t  行中向後搜寻该字母并移动标到该字元前一个位置.
           {         往上移动到前一段落.
           }         往下移动到後一段落.
=======================档案命令=============================
         显示档案的资讯。
                     
    显示出目前档案是否更改,所在行的位置.
                     
file_name: unmodified : line 1 of 380 [0%]
       重画萤幕。
       重画萤幕。
       暂停编辑 回到shell,可用fg回到编辑画面
       切换到最近编辑的档案.
                  vi file_name file_name2
               
    用此命命可以在两个档案中切换.
        ZZ        将文件存档并离开vi
           
    编辑命令:
      
       输入:
           I         移动标道行首的第一个字元并开始接受输入.
         
R         
以取代模式进入输入模式.      
       :
           Y           该行到暂存区
       删除:  D       从标目前位置道行尾的所有字元删除..
         
S           将该行清除并进入输入模式.
           X           删除标之前的一个字元
       取代:
       !shell命令    !後接shell comd ,并以shell cmd 执行结果取代标该行.
                  
    !panda
                     
    用以下讯息取代原有行的内容
                 
    bash: panda: command not found
           r       按r後接着按某字元,以取代标所在的该字元.
            
~         切换标所在字元的大小写
       重:
         
&        
    在该行重之前的规则表示式.
                    
    前提是需要之前有执行过规则表示式.
                    
    用panda取代a  :s/a/panda/
                    
    若之前没有任何表示式 则系统会显示如下讯息
                 
    No previous regular expression
         
.            
重上一个更改文件内容的vi命令.
           n          搜寻之前所搜寻过的字串
                    
    若先执行 /BSD
                    
    再执行   n     等同於执行 /BSD
                    
    若先前没有搜寻任何东西 会有如下讯息
                  
    No previous search pattern.
       复原:
           U          恢复状态到标起初接触此行的状态
         
u          复原前一个动作产生的效果(也就是回复)
       其他:
         
:            
执行ex 命令
           J         将下一行与此行合.
           Q          离开vi模式并切换到ex模式.
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12502/showart_517396.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP