Chinaunix首页 | 论坛 | 博客
  • 博客访问: 679616
  • 博文数量: 467
  • 博客积分: 8050
  • 博客等级: 中将
  • 技术积分: 14825
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-18 11:00
文章分类

全部博文(467)

文章存档

2009年(8)

2008年(459)

分类: LINUX

2008-04-04 19:03:55

====================进入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键距离,按第二次後开始动作.
           >         移动该行向右移动一个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模式.
阅读(478) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~