久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

linux下的vi command

 WUCANADA 2011-09-30

linux下的vi command  

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

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

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

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

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

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

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

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

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

以下是一個(gè)非常有趣的命令,有時(shí)你想把你輸入的內(nèi)容,,原封不動(dòng)的復(fù)制n遍,,而你不想用上面的關(guān)于復(fù)制,粘貼的命令,。以下的操作將會(huì)在你輸入完內(nèi)容后,,自動(dòng)重復(fù)n次你先前做的內(nèi)容:
假如你想把你即將要輸入的內(nèi)容,自動(dòng)重復(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   
做完了上面的命令,,是不是感到對(duì)vi命令已經(jīng)有了一個(gè)清楚的認(rèn)識(shí)了;也許你會(huì)想,既然不能用鼠標(biāo),,那能不能像鼠標(biāo)一樣,,通過(guò)按下鼠標(biāo)左鍵,就可選定想選定的內(nèi)容呢,,答案是肯定的?,F(xiàn)在讓我們來(lái)看看如何做到:
假如你想選定一行中的某一部分,并將它復(fù)制,,然后粘貼到你想粘貼的位置:
第一步:將光標(biāo)定位在你想選定的那個(gè)位置(通過(guò)前面講的導(dǎo)航命令)
第二步:按下<ctrl-v>組合鍵
第三步:按方向鍵,,調(diào)整并選取所需內(nèi)容,選中的內(nèi)容將會(huì)以另一種顏色出現(xiàn),,確定選中的內(nèi)容后,,按下'y',就完成了復(fù)制操作,。
第四步:將光標(biāo)定位在你想粘貼的位置,,按下p鍵即可

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

 一,、簡(jiǎn)介

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

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

  二,、基本命令介紹

  1) 光標(biāo)命令

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

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

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

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

  2) 編輯命令

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

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

  x,d$,dd——?jiǎng)h除一個(gè)字符,光標(biāo)所在處到行尾的所有字符,,和整行的命令,。

  3) 查找命令

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

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

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

三,、常見(jiàn)問(wèn)題及應(yīng)用技巧

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

  vi file

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

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

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

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

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

  2) 在打開(kāi)一個(gè)文件編輯后才知道登錄的用戶對(duì)該文件沒(méi)有寫(xiě)權(quán),,不能存盤(pán)。

  vi file

  :w /tmp/1 既然沒(méi)法存盤(pán),,不想放棄所做的所有修改,,先臨時(shí)存到/tmp/1。

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

  3) 用VI編輯一個(gè)文件,,但需要?jiǎng)h除大段大段的內(nèi)容。

  vi file

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

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

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

  vi file

  :3,$s/^/some string /

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

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

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

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

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

  5) 同時(shí)編輯兩個(gè)文件,在兩個(gè)文件中拷貝剪貼文本

  vi file1 file2

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

vi 的操作模式

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

輸入模式

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

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

指令模式

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

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

屏幕的移動(dòng)

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

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

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

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

整行動(dòng)作
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》。

移動(dòng)與復(fù)制

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

指令重復(fù)

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

取消前一動(dòng)作(Undo)

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

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

查找

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

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

資料的連接

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

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

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

:set nu 設(shè)定資料的行號(hào),。
:set nonu 取消行號(hào)設(shè)定,。
:set ai 自動(dòng)內(nèi)縮。
:set noai 取消自動(dòng)內(nèi)縮,。

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

ex指令

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

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

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

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

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

編輯多個(gè)文件

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

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

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多