一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

linux下的vi command

 WUCANADA 2011-09-30

linux下的vi command  

2007-12-15 15:49:45|  分類: 默認(rèn)分類 |字號 訂閱

精通vi命令
如何啟動vi命令呢?
當(dāng)你在圖形模式時,你得先打開終端,然后在shell提示符下輸入vi,就可以了。
當(dāng)然你也可以指定一個文件名;如:
$vi script.txt
表示在當(dāng)前目錄下創(chuàng)建了一個空文本文件script.txt

你也可以提供一個或更多個文件。(如果所提供的文件名不存在,則創(chuàng)建)
例如:
$vi file.txt1 file.txt2

現(xiàn)在讓我們來了解如何退出vi,以及保存在vi中所做的修改和如何得到幫助信息。
退出vi有如下的命令格式:
   :n    當(dāng)你指定了多個文件時,使用這個命令來編輯下一個文件。
   :q    不保存文件退出.
   :q!    不保存文件,并強(qiáng)制退出.
   :wq file    保存文件并退出,這里的file代表相對路徑的文件名,或者是絕對路徑的文件名。
   :w file     保存文件,如果沒有指定文件名,就是當(dāng)前的文件名。
   :w!    強(qiáng)制保存文件(前提是你對這個文件具有寫的權(quán)限)。
   :x    保存文件并退出,等價于ZZ命令。
   ZZ    保存文件并退出。
   zz    以當(dāng)前鼠標(biāo)位置為準(zhǔn),向前滾動半屏。
   :h    請求幫助
讓我們來看看幾個最基本的例子
假如你想新建一個文件名為script.txt,路徑為當(dāng)前目錄??梢栽趕hell模式下,輸入如下:
$vi script.txt
現(xiàn)在你就進(jìn)入了vi命令,現(xiàn)在你就可以用上面的退出命令退出了。
上面的命令只告訴我們?nèi)绾瓮顺鰒i,和保存文件,我們還不知如何對文件進(jìn)行編輯和修改?;镜拿钊缦拢?br>   插入命令:
   想插入新的內(nèi)容,得先導(dǎo)航到插入的位置,然后進(jìn)入修改模式:
    i        在當(dāng)前鼠樣之前進(jìn)入插入模式,并替換文本。
    I        在行的開始處進(jìn)入插入模式
    a        在當(dāng)前鼠標(biāo)之后進(jìn)入插入模式,添加或替換文本。
    A        在當(dāng)前行的末尾進(jìn)入插入模式。
    o        在當(dāng)前行的下面插入一個新行
    O        在當(dāng)前行的上面插入一個新行。
    J        將下一行與當(dāng)前行合并成一行
    :e file       編輯指定的文件,并退出當(dāng)前的文件。(file 表示路徑加文件名)
    :e!          重新讀取當(dāng)前文件,并放棄所做的修改。
    :r filename    在當(dāng)前行處插入一個新的文件
編輯命令
    C        刪除從當(dāng)前光標(biāo)到行尾,并進(jìn)入插入模式。
    cc        刪除整行,并進(jìn)入插入模式。
    S         刪除整行,并進(jìn)入插入模式。
    s         刪除當(dāng)前光標(biāo)處的字符,并進(jìn)入插入模式
    cw         在當(dāng)前光標(biāo)處刪除一個單詞,并進(jìn)入插入模式。
    R        進(jìn)入插入模式(一種不同的插入模式),并覆蓋已存在的字符。
    u        撤消上一次的操作
刪除命令
    從指定的位置刪除一個文本塊
    dl        刪除當(dāng)前光標(biāo)處的字符
    ndl        刪除當(dāng)前光標(biāo)處的n個字符(向前計(jì)算)
            如:3dl 將要刪除3個字符
    dw        刪除當(dāng)前光標(biāo)處的單詞
    ndw        刪除當(dāng)前光標(biāo)處的n個單詞(向前計(jì)算)
            如:5dw 將要刪除5個單詞
    dG        刪除從當(dāng)前光標(biāo)到文件的末尾
    dd or :d     刪除當(dāng)前行
    ndd        從當(dāng)前行開始,向前刪除n行,
        如:3dd 將要刪除3行
    D        刪除從當(dāng)前光標(biāo)到行末,等價于d$
    d)         除了擁有D和d$的功能外,還有下面描述的功能:
            把鼠標(biāo)放在{,[ 或者(上,將要刪除所有與之匹配的內(nèi)容
            如:prints()
            { if [ -f $1 ]
            then
            ehco "the \$1 is a file"
            fi
        }
        當(dāng)光標(biāo)在{上時,按下d),就可刪除{}之間的所有內(nèi)容(假如你是在插入模式下,得先按             下‘esc’鍵,再將光標(biāo)定位在{上,就可以了)
    x        刪除當(dāng)前光標(biāo)處的字符,相當(dāng)于dl命令
    X        刪除當(dāng)前光標(biāo)左邊處的字符
    :X        對文件加密(即給文件設(shè)置密碼保護(hù))
    nx        刪除n個字符從當(dāng)前光標(biāo)處。
                例如:3x 將從當(dāng)前光標(biāo)處向前刪除3個字符
復(fù)制與粘貼
   復(fù)制命令,通常是從一個指定的位置,復(fù)制一個文本塊,以下是具體的命令:
    yl        向前復(fù)制一個字符(這里的字母順序不能顛倒)
    yw        向前復(fù)制一個單詞(這里的字母順序不能顛倒)
    y$        從當(dāng)位置復(fù)制到行尾(這里的字母順序不能顛倒)
    yG         從當(dāng)位置復(fù)制到文件的尾部(這里的字母順序不能顛倒)
    yy or :y    復(fù)制整行
    nyy        從當(dāng)前行開始,向前復(fù)制n行。(這里的字母順序不能顛倒)
                如:3yy 從當(dāng)前行開始向前復(fù)制3行
   粘貼操作是插入先前剪切板中的內(nèi)容
    p(小寫)    在當(dāng)前光標(biāo)的后面粘貼剪切板中的內(nèi)容
    P(大寫)    在當(dāng)前光標(biāo)的前面粘貼剪切板中的內(nèi)容
    np        粘貼n次,p可以是大寫,也可以是小寫
                如3p 在當(dāng)前光標(biāo)的后面連續(xù)粘貼3次相同的內(nèi)容
   
    上面講了vi的進(jìn)入,退出及編輯命令,在vi中,是不能用鼠標(biāo)的,因此,我們還得來學(xué)一些導(dǎo)航命令,以讓我們可以將光標(biāo)定位在我們感興趣的位置上。
   Ctrl-b        向上滾動一屏
   Ctrl-f     向下滾動一屏
   0(zero)    移動當(dāng)前行的開始
   $        移動當(dāng)前行的末尾
   ^        移動到當(dāng)前行第一個非空白字符處
   $        移動到當(dāng)前行的末尾
   b,B        向后滾動一個單詞,以空白作為分隔符
   G        移動到文件的尾部(相當(dāng)于Shift-g)
   nG or :n      從當(dāng)前文件的開始行向前移動n行,
                如:1 Shift-g 將光標(biāo)定位在當(dāng)前文件的第一行
   h        向左移動一個字符
   H        移動到屏幕的頂部
   j        向下移動一行
   k        向上移動一行
   l        向右移動一個字符
   L        移動到屏幕的底部
   M            移動到屏幕的中間
   w,W        向前移動一個單詞,光標(biāo)在單詞的開始處;白作為分隔符。
   e,E             向前移動一個單詞,光標(biāo)在單詞的末尾處;白作為分隔符。
   {         向后移動一段
   }         向前移動一段
   (         向后移動一句話
   )           向前移動一句話
范圍
當(dāng)用:s命令去查找并替換多行時,常需要指定其范圍,如::3,7表示從第三行到第七行,以下是一些常用的范圍格式:
    :n ,m        從第n行到第m行
     :.           當(dāng)前行
    :$           最后的一行
    :?c          Marker c
    :%           所有的行
    .,$           從當(dāng)前位置到結(jié)尾
    :g/pattern/ 所有匹配的行
    %    這是一個特殊用途的命令。將光標(biāo)放在 [, {, (上,然后按下‘%‘,光標(biāo)就會自動跳到匹配的字符],},)上,并高亮顯示(一般用在調(diào)試程序中)。
例如:
刪除第三到第七行的內(nèi)容:
:3,7d
給文件的所有行加上注釋
:%s/^/#/
將文件的所有行取消注釋
:%s/^#//

查找
   這下面的命令是用來查找文本的:
   /pattern    向前查找字符串,也可用正則表達(dá)式
   pattern    向后查找字符串,也可用正則表達(dá)式
   n        重做上次的查找操作(從當(dāng)前光標(biāo)向下查找匹配的位置)
   N        重做上次的查找操作在相反的方向(從當(dāng)前光標(biāo)向上查找匹配的位置)
例如:
   查找以字母a開頭,后面為兩個任意字符的單詞
   /a.. or ?a..

替換
   :s/pattern/string/flags     用 string替換pattern
   :s是完成查找和替換的標(biāo)志
   常用的flags(可選)有g(shù)和c
   g         是一個全局參數(shù),表示所有,或者是全部
   c         只做一次,在替換之前并給出提示
   &        重做上一次的查找替換操作(須用一些導(dǎo)航命令將光標(biāo)定位在需要替換的字符處)
  
   例如:
   用script替換scrit,從第一行到文件的結(jié)尾:
     :1,$ s/scrit/script/g
         這參數(shù)g表示在指定范圍內(nèi)替換全部,如果沒有給定參數(shù)g,則只替換一次。
   查找aple并將它替換為apple; 查找范圍:當(dāng)前光標(biāo)到文件的末尾
     :.,$s/aple/apple/g   (在$與s之間,有無空格都是正確的)
   在文件中查找并替換有以下兩種方法:
    :%s/from/to/g
    :g/from/s//to/g
    說明:from是被替換的字符,to是用來替換的字符

正則表達(dá)式:
. (點(diǎn))       任意單個字符,除了新行
*           匹配 0次或多次
[...]         匹配括號里的任意一個字符
[^ ...]       不匹配括號里的任意一個字符
^        開始標(biāo)志
$         結(jié)束標(biāo)志
\< , \>       前一個表示單詞的開始,后一個表示單詞的結(jié)束
\(: : :\)      分組(放進(jìn)內(nèi)存)
\n           n組的內(nèi)容(從內(nèi)存里調(diào)用)
如:查找以字母a或A開頭,第二個字符任意,三個字符為c的單詞
/[aA].c/

文件
   !!program    程序運(yùn)行的結(jié)果來替換當(dāng)前行的內(nèi)容
   :r!command   從shell命令里讀取輸出值。
        如::r!which perl

其它命令   
Ctrl-]        打開超鏈接
Ctrl-T        返回到打開超鏈接之前的文本
:se nu         在各行的前面顯示行數(shù)
:se nonu       撤消顯示行數(shù)
.             重做上一次文本改變的命令。假如你剛做過粘貼操作,按下‘.’,將繼續(xù)做粘貼操作
u            撤消上一次的操作;假如你上次做了粘貼操作,這個命令將會撤消上次的粘貼操作
U         撤消在一行中所做的所有更改。(這個命令的作用范圍在一行)
ctrl-l        刷新窗口

以下是一個非常有趣的命令,有時你想把你輸入的內(nèi)容,原封不動的復(fù)制n遍,而你不想用上面的關(guān)于復(fù)制,粘貼的命令。以下的操作將會在你輸入完內(nèi)容后,自動重復(fù)n次你先前做的內(nèi)容:
假如你想把你即將要輸入的內(nèi)容,自動重復(fù)3遍:
第一步:輸入 ‘3i‘(’i’表示進(jìn)入插入模式)
第二步:輸入你想輸入的內(nèi)容
(假定為以下內(nèi)容:
     #awk '$3<5 {printf "%s\t%s\n",$1,$2;} $3>6 {printf "the price greater than \$6 %s\t%s\n",$1,$2}' 2.txt
                                                                               
     #note: don't appent the $ after the regular expression)
第三步:按下<ESC>鍵,得到的結(jié)果如下:
   #awk '$3<5 {printf "%s\t%s\n",$1,$2;} $3>6 {printf "the price greater than \$6 %s\t%s\n",$1,$2}' 2.txt
                                                                               
     #note: don't appent the $ after the regular expression)#awk '$3<5 {printf
"%s\t%s\n",$1,$2;} $3>6 {printf "the price greater than \$6 %s\t%s\n",$1,$2}' 2.txt
                                                                               
     #note: don't appent the $ after the regular expression)#awk '$3<5 {printf
"%s\t%s\n",$1,$2;} $3>6 {printf "the price greater than \$6 %s\t%s\n",$1,$2}' 2.txt
                                                                               
     #note: don't appent the $ after the regular expression)
    
當(dāng)然,你也可以將i 改為o或a   
做完了上面的命令,是不是感到對vi命令已經(jīng)有了一個清楚的認(rèn)識了;也許你會想,既然不能用鼠標(biāo),那能不能像鼠標(biāo)一樣,通過按下鼠標(biāo)左鍵,就可選定想選定的內(nèi)容呢,答案是肯定的。現(xiàn)在讓我們來看看如何做到:
假如你想選定一行中的某一部分,并將它復(fù)制,然后粘貼到你想粘貼的位置:
第一步:將光標(biāo)定位在你想選定的那個位置(通過前面講的導(dǎo)航命令)
第二步:按下<ctrl-v>組合鍵
第三步:按方向鍵,調(diào)整并選取所需內(nèi)容,選中的內(nèi)容將會以另一種顏色出現(xiàn),確定選中的內(nèi)容后,按下'y',就完成了復(fù)制操作。
第四步:將光標(biāo)定位在你想粘貼的位置,按下p鍵即可

提示:當(dāng)你進(jìn)入插入模式后,你又想對某一句話,或單詞進(jìn)行復(fù)制,你必須先按下<ESC>鍵,才能進(jìn)入復(fù)制操作的命令;總之:你在插入模式下,想用其它的命令,你都得先按下<ESC>鍵。
------------------------------------------------------------------------------------------------------------------------------------------

 一、簡介

  Vi命令可以說是Unix/Linux世界里最常用的編輯文件的命令了,很多人不喜歡VI因?yàn)樗?的眾多的命令集,但是我們只需要掌握基本的命令然后靈活地加以運(yùn)用,相信我們也

一樣會喜歡它的。 本文旨在更有條理有歸納性地介紹VI的一些最常用命令和一些高級的應(yīng)用。

  二、基本命令介紹

  1) 光標(biāo)命令

  k,j,h,l——上下左右光標(biāo)移動命令,雖然你可以在Linux中使用鍵盤右邊的四個光標(biāo)鍵, 但是記住這四個命令還有非常有用的,也就是右手在鍵盤上放置的位置部分。

  nG ——n為行數(shù),該命令立即使光標(biāo)跳到指定行。

  Ctrl+G——光標(biāo)所在位置的行數(shù)和列數(shù)報(bào)告。

  w,b——使光標(biāo)向前或向后跳過一個單詞。

  2) 編輯命令

  i,a,r——在光標(biāo)的前,后,上方插入字符命令(i=insert,a=append,r=replace)。

  cw,dw——改變(置換)/刪除光標(biāo)所在處的單詞的命令 (c=change,d=delete)。

  x,d$,dd——刪除一個字符,光標(biāo)所在處到行尾的所有字符,和整行的命令。

  3) 查找命令

  /string, ?string——從光標(biāo)所在處向后/向前查找相應(yīng)的字符串的命令。

  4)拷貝復(fù)制命令

  yy,p ——拷貝一行到剪貼板/取出剪貼板中內(nèi)容的命令。

三、常見問題及應(yīng)用技巧

  1) 在一個新文件中讀/etc/passwd中的內(nèi)容,取出用戶名部分

  vi file

  :r /etc/passwd 在打開的文件file中光標(biāo)所在處讀入/etc/passwd。

  :%s/:.*//g 刪除/etc/passwd中用戶名后面的從冒號開始直到行尾的所有部分。

  :3r /etc/passwd 這是在指定的行號后面讀入文件內(nèi)容。

  另外一種方法刪掉文件中所有的空行及以#開始的注釋行

  #cat squid.conf.default | grep -v '^$' | grep -v '^#'

  2) 在打開一個文件編輯后才知道登錄的用戶對該文件沒有寫權(quán),不能存盤。

  vi file

  :w /tmp/1 既然沒法存盤,不想放棄所做的所有修改,先臨時存到/tmp/1。

  :20,59w /tmp/1 或者僅僅把第20到59行之間的內(nèi)容存盤成文件/tmp/1。

  3) 用VI編輯一個文件,但需要刪除大段大段的內(nèi)容。

  vi file

  Ctrl+G 把光標(biāo)移到需要刪除的行的處按ctrl+G顯示行號,再到結(jié)尾處再按Ctrl+G.

  :23,1045d 假定兩次行號為23和1045,則把這幾間的內(nèi)容全刪除。 也可以在開始和結(jié)束兩行中用ma,mb命令標(biāo)記后用:'a,'bd刪除.

  4) 在整個文件或某幾行中在行首或行尾加一些字符串

  vi file

  :3,$s/^/some string /

  在文件的第一行至最后一行的行首前插入some string.

  :%s/$/ some string/g 在整個文件每一行的行尾添加 some string.

  :%s/string1/string2/g 在整個文件中替換string1成string2.

  :3,7s/string1/string2/ 僅替換文件中的第三到七行中的string1成string2.

  Note: s為substitute,%表示所有行,g表示global.

  5) 同時編輯兩個文件,在兩個文件中拷貝剪貼文本

  vi file1 file2

  yy 同時打開兩個文件,在文件1的光標(biāo)所在處拷貝所在行。

  :n 切換到文件2 (n=next)。

  p 在文件2的光標(biāo)所在處粘貼所拷貝的行。

  :N 切換回文件1。

  6) 替換文件中的路徑

  :%s#/usr/bin#/bin#g 把文件中所有路徑/usr/bin換成/bin。

-------------------------------------------------------------------------------------------------------------------------------------------

vi編輯器使用方法|vi熱鍵|vi快捷鍵

vi是在工作站上廣泛使用的編輯軟件。對初學(xué)者而言,
常因其特殊的使用方法,而不得其門而入;對已經(jīng)在使用 vi 的使用者來說,也
常見因?qū)?vi 的不熟悉或不夠了解,而無法發(fā)揮出 vi 強(qiáng)大的編輯能力,以下將
簡單介紹 vi 的使用方法。不必死記硬背,多實(shí)際操作幾次就能記住常用的命令。
進(jìn)入vi
直接執(zhí)行 vi編輯程序即可:
%vi test
此刻屏幕上會出現(xiàn) vi 的編輯屏幕,同時 vi 會將文件復(fù)制一份至內(nèi)存中的緩沖區(qū) (buffer) 。 vi會保留在硬盤中的文件不變,而先對緩沖區(qū)的文件作編輯,編輯完成后,使用者可決定是否要取代原來舊有的文件。
離開vi
若在輸入模式下,則先利用《ESC》進(jìn)入指令模式,而后即可選用下列指令
離開vi。
:q! 離開vi,并放棄剛在緩沖區(qū)內(nèi)編輯的內(nèi)容。
:wq 將緩沖區(qū)內(nèi)的資料寫入硬盤中,并離開vi。
:ZZ 同wq。
:x 同wq。
:w 將緩沖區(qū)內(nèi)的資料寫入硬盤中,但并不離開vi。
:q 離開vi,若文件被修改過,則會被要求確認(rèn)是否放棄修改的內(nèi)容。
此指令可與:w 配合使用。

vi 的操作模式

vi 提供兩種操作模式:輸入模式(insert mode)和指令模式(command mode)
。當(dāng)使用者進(jìn)入 vi 后,即處在指令模式下,此刻鍵入的任何字符都被視為
指令。在此模式下可進(jìn)行刪除、修改等動作。若要輸入資料,則需進(jìn)入輸入
模式。

輸入模式

如何進(jìn)入輸入模式
a (append) 由光標(biāo)之后加入資料。
A 由該行之末加入資料。
i (insert) 由光標(biāo)之前加入資料。
I 由該行之首加入資料。
o (open) 新增一行于該行之下以供輸入資料。
O 新增一行于該行之上以供輸入資料。

如何離開輸入模式
《ESC》 結(jié)束輸入模式。

指令模式

光標(biāo)的移動
h 向左移一個字符。
j 向上移一個字符。
k 向下移一個字符。
l 向右移一個字符。
0 移至該行之首
$ 移至該行之末。
^ 移至該行的第一個字符處。
H 移至屏幕的第一列。
M 移至屏幕的中間那列。
L 移至屏幕的最后一列。
G 移至該文件的最后一列。
+ 移至下一列的第一個字符處。
- 移至上一列的第一個字符處。
( 移至該句之首。 (注一)
) 移至該句之末。
{ 移至該段落之首。 (注二)
} 移至該段落之末。
nG 移至該文件的第 n 列。
n+ 移至光標(biāo)所在位置之后的第 n 列。
n- 移至光標(biāo)所在位置之前的第 n 列。
<Ctrl><g> 會顯示該行的行號、文件名稱、文件中最末行的行號、光標(biāo)
所在行號占總行號的百分比。

注一:句子(sentence)在vi中是指以『!』、『.』或『?』結(jié)束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔開的文字。

屏幕的移動

<Ctrl><f> 屏幕往下卷一頁。
<Ctrl> 屏幕往上卷一頁。
<Ctrl><d> 屏幕往下卷半頁。
<Ctrl> 屏幕往上卷半頁。
<Ctrl><e> 屏幕往下卷一行。
<Ctrl><y> 屏幕往上卷一行。

刪除、復(fù)制及修改指令介紹 (此單元較少使用)

d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為:
Operator + Scope = command
(運(yùn)算子) (范圍)
運(yùn)算子:
d 刪除指令。刪除資料,但會將刪除資料復(fù)制到內(nèi)存緩沖區(qū)。
y 將資料(字組、行列、句子或段落)復(fù)制到緩沖區(qū)。
p 放置(put)指令,與 d 和 y 配和使用??蓪⒆詈骴elete或yank的資
料放置于光標(biāo)所在位置的行列下。
c 修改(change)指令,類似delete與insert的組合。刪除一個詞組、句
子等的資料,并插入新輸入的資料。

范圍:
e 由光標(biāo)所在位置至該字符串的最后一個字符。
w 由光標(biāo)所在位置至下一個字符串的第一個字符。
b 由光標(biāo)所在位置至前一個字符串的第一個字符。
$ 由光標(biāo)所在位置至該行的最后一個字符。
0 由光標(biāo)所在位置至該行的第一個字符。
) 由光標(biāo)所在位置至下一個句子的第一個字符。
( 由光標(biāo)所在位置至該句子的第一個字符。
{ 由光標(biāo)所在位置至該段落的最后一個字符。
} 由光標(biāo)所在位置至該段落的第一個字符。

整行動作
dd 刪除整行。
D 以行為單位,刪除光標(biāo)后的所有字符。
cc 修改整行的內(nèi)容。
yy yank整行,使光標(biāo)所在該行復(fù)制到內(nèi)存緩沖區(qū)。

刪除與修改

x 刪除光標(biāo)所在該字符。
X 刪除光標(biāo)所在之前一字符。
dd 刪除光標(biāo)所在該行。
r 用接于此指令之后的字符取代(replace)光標(biāo)所在字符。
如: ra 將光標(biāo)所在字符以 a 取代之。
R 進(jìn)入取代狀態(tài),直到《ESC》為止。
s 刪除光標(biāo)所在的字符,并進(jìn)入輸入模式直到《ESC》。
S 刪除光標(biāo)所在的該行資料,并進(jìn)入輸入模式直到《ESC》。

移動與復(fù)制

利用 delete 及 put 指令可完成資料移動的目的。
利用 yank 及 put 指令可完成資料復(fù)制的目的。
yank 和 delete 可將指定的資料復(fù)制到內(nèi)存緩沖區(qū),而通過 put 指令
可將緩沖區(qū)內(nèi)的資料復(fù)制到屏幕上。
例:
移動一行 .在該行執(zhí)行 dd
.光標(biāo)移至目的地
.執(zhí)行 p
復(fù)制一行 .在該行執(zhí)行 yy
.光標(biāo)移至目的地
.執(zhí)行 p

指令重復(fù)

在指令模式中,可在指令前面加入一數(shù)字 n,則此指令動作會重復(fù)執(zhí)行 n
次。
例:
刪除10行 .10dd
復(fù)制10行 .10yy
.光標(biāo)移至目的地
.p
指標(biāo)往下移10行 .10j

取消前一動作(Undo)

即復(fù)原執(zhí)行上一指令前的內(nèi)容。

u 恢復(fù)最后一個指令之前的結(jié)果。
U 恢復(fù)光標(biāo)該行的所有改變。

查找

在vi中可查找某一字符串,使光標(biāo)移至該處。

/字符串 往光標(biāo)之后尋找該字符串。
字符串 往光標(biāo)之前尋找該字符串。
n 往下繼續(xù)尋找下一個相同的字符串。
N 往上繼續(xù)尋找下一個相同的字符串。

資料的連接

J 句子的連接。將光標(biāo)所在的下一行連接至光標(biāo)該行的后面。

若某行資料太長亦可將其分成兩行,只要將光標(biāo)移至分開點(diǎn),進(jìn)入輸入模式
(可利用 a、i等指令)再按《Enter》即可。

環(huán)境的設(shè)定

:set nu 設(shè)定資料的行號。
:set nonu 取消行號設(shè)定。
:set ai 自動內(nèi)縮。
:set noai 取消自動內(nèi)縮。

自動內(nèi)縮(automatic indentation)
在編輯文件或程序時,有時會遇到需要內(nèi)縮的狀況,『:set ai』即提供自
動內(nèi)縮的功能,用下例解釋:
.vi test
.(進(jìn)入編輯屏幕后)
this is the test for auto indent
《Tab》start indent ← :set ai (設(shè)自動內(nèi)縮)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自動內(nèi)縮)
the end of auto indent.
.注:<Ctrl><d> 可刪除《Tab》字符。

ex指令

讀寫資料
:w 將緩沖區(qū)的資料寫入硬盤中。
:10,20w test 將第10行至第20行的資料寫入test文件。
:10,20w>>test 將第10行至第20行的資料加在test文件之后。
:r test 將test文件的資料讀入編輯緩沖區(qū)的最后。

刪除、復(fù)制及移動
:10,20d 刪除第10行至第20行的資料。
:10d 刪除第10行的資料。
:%d 刪除整個編輯緩沖區(qū)。
:10,20co30 將第10行至第20行的資料復(fù)制至第30行之后。
:10,20mo30 將第10行至第20行的資料移動至第30行之后。

字符串搜尋與取代
s(substitute)指令可查找某行列范圍。
g(global)指令則可查找整個編輯緩沖區(qū)的資料。
s指令以第一個滿足該條件的字符串為其取代的對象,若該行有數(shù)個滿足該條
件的字符串,也僅能取代第一個,若想取代所有的字符串則需加上g參數(shù)。
:1,?$s/old/new/g 將文件中所有的『old』改成『new』。
:10,20s/^/ / 將第10行至第20行資料的最前面插入5個空白。
:%s/old/new/g 將編輯緩沖區(qū)中所有的『old』改成『new』。

恢復(fù)編輯時被中斷的文件

在編輯過程中,若系統(tǒng)當(dāng)?shù)艋蜻B線中斷,而緩沖區(qū)的資料并還未
被寫回硬盤時,當(dāng)再次回到系統(tǒng),執(zhí)行下列指令即可回復(fù)中斷前
的文件內(nèi)容。
%vi -r filename

編輯多個文件

vi還提供同時編輯多個文件的功能,方法如下:
%vi file1 file2 ..

當(dāng)?shù)谝粋€文件編輯完成后,可利用『:w』將該緩沖區(qū)存檔,而后
再利用 『:n』載入下一個文件。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一级内片内射免费看 | 99久久精品国产日本| 欧美精品久久一二三区| 欧美午夜国产在线观看| 欧美一二三区高清不卡| 亚洲欧洲日韩综合二区| 国产户外勾引精品露出一区 | 国产精品涩涩成人一区二区三区| 国产性色精品福利在线观看| 欧美日韩中黄片免费看| 久久精品国产熟女精品| 亚洲欧洲在线一区二区三区| 高清一区二区三区四区五区| 国内尹人香蕉综合在线| 午夜精品国产一区在线观看| 欧美又大又黄刺激视频| 日韩女优精品一区二区三区| 国产毛片对白精品看片| 国产精品视频一区麻豆专区| 东北女人的逼操的舒服吗| 欧美日韩精品综合一区| 少妇在线一区二区三区| 欧美日韩国内一区二区| 日韩黄色一级片免费收看| 欧美日韩欧美国产另类| 五月综合婷婷在线伊人| 99久久人妻精品免费一区| 久久大香蕉精品在线观看| 色综合久久六月婷婷中文字幕| 婷婷色网视频在线播放| 午夜久久久精品国产精品| 男女午夜在线免费观看视频| 美女被啪的视频在线观看| 国产精品视频久久一区| 午夜福利精品视频视频| 亚洲中文在线男人的天堂| 久久少妇诱惑免费视频| 好吊日在线观看免费视频| 九九九热视频免费观看| 国产高清一区二区白浆| 国产欧美日产中文一区|