• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • vi 常用技巧

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    本文旨在更有條理有歸納性地介紹VI的一些最常用命令和一些高級的應用。 一:基本命令介紹: 1)光標命令 k,j,h,l---上下左右光標移動命令,雖然你可以在 Linux 中使用鍵盤右邊的四個光標鍵, 但是記住這四個命令還有非常有用的,也就是右手在鍵盤上放置的位置
    本文旨在更有條理有歸納性地介紹VI的一些最常用命令和一些高級的應用。

    一:基本命令介紹: 

          1) 光標命令 
          k,j,h,l---上下左右光標移動命令,雖然你可以在Linux中使用鍵盤右邊的四個光標鍵,
          但是記住這四個命令還有非常有用的,也就是右手在鍵盤上放置的位置部分 
          nG ----n為行數,該命令立即使光標跳到指定行。 
          Ctrl+G-----光標所在位置的行數和列數報告 
          w,b------使光標向前或向后跳過一個單詞 

          2) 編輯命令 
          i,a,r -------在光標的前,后,上方插入字符命令(i=insert,a=append,r=replace) 
          cw,dw------ 改變(置換)/刪除光標所在處的單詞的命令 (c=change,d=delete) 
          x,d$,dd -----刪除一個字符,光標所在處到行尾的所有字符,和整行的命令 

          3) 查找命令 
          /string, ?string-----從光標所在處向后/向前查找相應的字符串的命令 

          4)拷貝復制命令 
          yy,p -----拷貝一行到剪貼板/取出剪貼板中內容的命令  

     

          進入vi(在系統提示符下面輸入以下指令):
         vi     ???????               進入vi而不讀入任何文件

    二:常見問題及應用技巧 

          1) 在一個新文件中讀/etc/passwd中的內容,取出用戶名部分 
          vi file 
          :r /etc/passwd 在打開的文件file中光標所在處讀入/etc/passwd 
          :%s/:.*//g 刪除/etc/passwd中用戶名后面的從冒號開始直到行尾的所有部分 
          :3r /etc/passwd 這是在指定的行號后面讀入文件內容 

          另外一種方法刪掉文件中所有的空行及以#開始的注釋行 
          #cat squid.conf.default | grep -v '^$' | grep -v '^#' 


          2) 在打開一個文件編輯后才知道登錄的用戶對該文件沒有寫權,不能存盤 
          vi file 
          :w /tmp/1 既然沒法存盤,不想放棄所做的所有修改,先臨時存到/tmp/1 
          :20,59w /tmp/1 或者僅僅把第20到59行之間的內容存盤成文件/tmp/1 

          3) 用VI編輯一個文件,但需要刪除大段大段的內容 
          vi file 
          Ctrl+G 把光標移到需要刪除的行的處按ctrl+G顯示行號,再到結尾處再按Ctrl+G. 
          :23,1045d 假定兩次行號為23和1045,則把這幾間的內容全刪除 

          也可以在開始和結束兩行中用ma,mb命令標記后用:'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的光標所在處拷貝所在行 
          :n 切換到文件2 (n=next) 
          p 在文件2的光標所在處粘貼所拷貝的行 
          :N 切換回文件1 


          6) 替換文件中的路徑 

          :%s#/usr/bin#/bin#g 把文件中所有路徑/usr/bin換成/bin 
          或者用 
          :%s/\/usr\/bin/\/bin/g 在'/'前用\符號指出'/'是真的單個字符'/'

         vi filename                      進入vi并讀入指定名稱的文件(新、舊文件均可)。 
          vi +n filename????             進入vi并且由文件的第幾行開始。
          vi +filename ????              進入vi并且由文件的最后一行開始。 
          vi + /word filename ?             進入vi并且由文件的word這個字開始。
          vi filename(s) ???               進入vi并且將各指定文件列入名單內,第一個文件先讀入。
          vedit????????              進入vi并且在輸入方式時會在狀態行顯示“INSERT MODE"。 

    編輯數個文件(利用vi filename(s))進入vi后)
         :args ????????顯示編輯名單中的各個文件名
         :n??????????讀入編輯名單中的下一個文件
         :rew?????????讀入編輯名單中的第一個文件
         :e#????????? 讀入編輯名單內的前一個文件
         :e file ???????讀入另一個文件進vi(此文件可不在編輯名單內),若原文件經修改還沒有存檔,則應先以: w 存檔。
         :e! file???????強迫讀入另一個文件進入vi,原文件不作存檔動作。 

     存儲及退出vi
         :w filename????? 存入指定文件,但未退出vi(若未指定文件名則為當前工作的文件名)。
         :wq 或者 或者zz?? 存文件,并且退出vi.
         :q??????????不作任何修改并退出vi。
         :q!????????? 放棄任何修改并退出vi。
         :!command?????? 暫時退出vi并執行shell指令,執行完畢后再回到vi。
         :sh????????? 暫時退出vi到系統下,結束時按Ctrl + d則回到vi。
     
    加數據指令
         i?????????? 在關標位置開始插入字符,結束時候按ESC鍵。
         I?????????? 在光標所在行的最前面開始加字,結束時按ESC鍵。
         a?????????? 在光標位置后開始加字,結束時按ESC鍵。
         A?????????? 在光標所在行的最后面開始加字,結束時按ESC鍵。
         o?????????? 在光標下加一空白行并開始加字,結束時按ESC鍵。
         O?????????? 在光標上加一空白行并開始加字,結束時按ESC鍵。
         !command???????執行shell指令,并把結果加在光標所在行的下一行。

    刪除指令
         nx??????????刪除由光標位置起始的n個字符(含光標位置,按一個x表示刪除光標所在的字符)
         nX ????????? 刪除由光標位置起始的n個字符(不含光標位置)。
         ndw????????? 刪除光標位置其實的n個字符組(word)。
         d0 ????????? 將行的開始到光標位置的字符全部刪除。 
         d$ 或D ??????? 將光標位置起始到行尾的字符全部刪除。
         ndd ?????????將光標位置起始的n行(整行)刪除(dd表示刪除光標所在行)。
         :start,endd????? 刪除文件的第start到end行。

    關標移動
         0 ??????????移到一行的開始
         $ ??????????移到一行的最后
         [?????????? 移到文件開始位置
         ]?????????? 移到文件結束位置
         nh??????????往左移n位
         nl或者spacebar ??? 往右移n位
         nk??????????向上移n行
         n+??????????向上移n行,光標在該行的起始
         ni ????????? 向下移n行
         n-??????????向下移n行,光標在該行的起始
         H?????????? 移到屏幕的左上角
         M?????????? 移到屏幕的中間行開頭
         L?????????? 移到屏幕的最后一行
         G?????????? 移到文件的最后一行
         nG或者:n???????移到文件的第n行
         nw??????????右移n個字組,標點符號屬于字組 
         nW?????????  右移n個字組,標點符號不屬于字組
         nb??????????左移n個字組,標點符號屬于字組
         nB????????? 左移n個字組,標點符號不屬于字組
         Ctrl + u???????屏幕上卷半個菜單
         Ctrl + d ?????? 屏幕下卷半個菜單
         Ctrl + b ?????? 屏幕上卷一個菜單
         Ctrl + F ?????? 屏幕下卷一個菜單

    修改指令
         r?????????? 修改光標文件的字符
         R?????????? 從光標位置開始修改,結束時按ESC鍵
         new????????? 更改n組字符,結束時按ESC鍵
         nclearcase/" target="_blank" >cc????????? 從光標所在位置開始更改n行,結束時按ESC鍵

    重排各行長度
         i?????????? 并按Enter將該行由光標所在處斷開,并進入insert方式
         J ??????????把下一行的數據連接到本行之后

    尋找指令
         /text???????? 從光標位置往下找字串text
         ?text???????? 從光標位置往上找字串text
         n?????????? 繼續找下一個字串(在輸入上面的尋找指令之后使用)

    尋找并且取代指令
         :getxt1/s/ /text2/options ??將各行的text1替換為text2
                                              option=g表示文件中所有的text1均被取代,若未輸入任何option,則只有各行中的第一個出現的text1被取代
    ?????????????   option=go 在屏幕顯示各取代的行
    ??????????????option=gc 在每個字串取代之前要求確認?

         Start,endgtext1/s/ / text2/options ?同上,只尋找并取代第start~end行。
         或:Start,ends/text1/text2/options

    復制及移動文件

         :first,last co dest ?????將first 到last行的數據復制到目標行(dest)下面 
         :Start,end?m dest??????將start 到 end行的數據移動到目標行(dest)下。???
         :r filename????????? 將指定文件的內容讀入光標所在行下。
         nY ????????????? 將光標所在位置開始的n行數據暫存
         p?????????????? 復制暫存數據在光標的下一行
         P?????????????? 復制暫存數據在光標的上一行

    其他命令
         .?????????????? 重復前一指令
         u?????????????? 取消前一指令
         Ctrl + l???????????刷新屏幕顯示
         :set number????????? 顯示文件的行號,但不會存文件
         :set nonumber???????? 解除行號顯示 
         :set ai??????????? 設置每行起始位置(以光標當前位置為起始)
         :set noai?????????? 取消行起始位置設定
         :f 或<Ctrl> + g??????? 告訴用戶有關現行編輯文件的數據。


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>