歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux命令

Linux教程-vi命令(4)

Linux命令
  文本內容的修改
  
  文本內容的修改是指在編輯過程中,可以對文本中的某些字符,某些行進行修改,即用新輸入的文本代替需要修改的老文本,它等於先用刪除命令刪除需要修改的內容,然後再利用插入命令插入新的內容。所以在使用修改命令後,vi進入到文本輸入模式下,當輸入完新的內容後,一定要再按回到命令模式,否則Vi會一直認為是在文本輸入模式下,此時輸入的任何內容都被認為是修改的新內容。
  
  Vi提供了三種修改命令,分別是c、C和cc。它們修改文本的范圍是由光標位置和光標移動命令二者限定的。下面分別介紹這三種修改命令。
  
  
  c命令
  
  c後緊跟光標移動命令,限定修改內容的范圍是從光標當前位置開始到指定的位置為止。
  
  [例21] 原來屏幕顯示內容為文件xu.c
  
  /* this is a example */
  
  #include
  
  void main( )
  
  {
  
  int i , j ;
  
  printf( “ please input a number : \ n ” );
  
  scanf ( “ % d ” , &i ) ;
  
  j = i + 100 ;
  
  printf ( “ \n j = % d \n ” , j ) ;
  
  return ;
  
  }
  
  輸入命令c7G時,屏幕顯示為:
  
  /* this is a example */
  
  #include
  
  void main( )
  
  {
  
  int i , j ;
  
  j = i + 100 ;
  
  printf ( “\n j = % d \n ” , j ) ;
  
  return ;
  
  }
  
  即把光標所在行至第7行(共2行)的內容刪除,並進入文本輸入模式,接著輸入:
  
  int k ;
  
  i = sqr ( k ) ;
  
  最後按< Esc >鍵,結束修改,屏幕顯示為:
  
  /* this is a example */
  
  #include
  
  void main( )
  
  {
  
  int i , j ;
  
  int k ;
  
  i = sqr ( k ) ;
  
  j = i + 100 ;
  
  printf ( “\n j = % d\n ” , j ) ;
  
  return ;
  
  }
  
  
  由此可見,命令c中修改文本的范圍是由光標位置和光標移動命令二者限定的。
  
  
  C、c$命令
  
  C 、c$命令可以修改從光標當前位置開始到該行末尾或從光標當前位置開始到某行末尾范圍內的內容。
  
  [例22] 屏幕顯示如下內容:
  
  #include
  
  輸入命令C後,屏幕顯示為:
  
  #include <
  
  接著輸入: math.h >,然後按< Esc > ,此時屏幕顯示內容為:
  
  #include < math.h >
  
  表示原文中的“stdio.h >”被修改為“math.h >”。
  
  當在命令C之前加上數字n時,表示可以修改指定行數的內容。例如,3C命令就表示把光標所在位置的字符之後(注意不是整行)直到下面兩個整行的內容刪除,由隨後輸入的內容代替。
  
  
  cc命令
  
  cc命令的功能和C相同,只是修改的范圍和C不同,它是修改從光標所在行的起始位(不管光標處於該行的何列)到該行末尾或指定某行末尾范圍內的內容。
  
  [例23] 屏幕顯示如下內容:
  
  #include
  
  輸入命令cc後,屏幕顯示為:
  
  
  接著輸入:#include < math.h >,然後按 ,此時屏幕顯示內容為:
  
  #include < math.h >
  
  可見,光標所在行的全部內容都由新輸入的內容所代替。
  
  同命令C一樣,也可以在cc之前加上數字n,表示要從光標當前行算起一共修改n行的內容。例如,5cc表示先刪除光標所在行及其下面的4行,然後輸入要修改的內容。
  
  文本的替換
  
  文本的替換即是用新輸入的文本代替原已有的文本。它同文本修改一樣,也是先執行刪除操作,再執行插入操作。
  
  Vi提供的替換的命令有取代命令、替換命令和字替換命令。
  
  1. 取代命令 :r和R
  
  r:用隨後輸入的一個字符代替當前光標處的那個字符。
  
  [例24] 屏幕上顯示為:
  
  /* this as a program */
  
  在命令模式下輸入命令ri,則結果顯示為:
  
  /* this is a program */
  
  此時當前光標處的字符被取代成“i”。
  
  若在命令r之前加上一個數字,表示將要從當前光標處開始的指定數目的字符用在r後所輸入的字符替換。
  
  [例25] 屏幕上顯示為:
  
  /* this is a program */
  
  在命令模式下輸入命令4rA,則結果顯示為:
  
  /* this is a AAAAram */
  
  此時把當前光標處的字符及其後的三個字符都取代為“A”。
  
  R:用隨後輸入的文本取代從當前光標處及其後面的若干字符,每輸入一個字符就取代原有的一個字符,直到按< Esc >鍵結束這次取代。若新輸入的字符數超過原有對應字符數,則多出部分就附加在後面。
  
  [例26] 屏幕上顯示為:
  
  /* this is a program */
  
  main ( )
  
  輸入R,接著輸入:is a good example program * /,最後按鍵,屏幕顯示為:
  
  /* this is a good example program * /
  
  若在命令R之前加上一個數字,例如5R,則表示新輸入的文本重復出現5次,但只取代一個被輸入文本所覆蓋的字符序列,當前行中未被覆蓋的內容仍保留下來,只是位置相應右移。
  
  [例27] 屏幕上顯示為:
  
  /* this is a program */
  
  輸入4RAA,屏幕顯示為:
  
  /* this is a AAAAAAAA/
  
  值得一提的是,利用R取代文本內容時,新輸入的文本可以占多行,取代時也只有光標所在行的對應字符被覆蓋。
  
  [例28] 屏幕顯示為:
  
  /* this is a program */
  
  輸入R,隨後輸入AA
  
  B
  
  C C < Esc >
  
  屏幕顯示為:
  
  /* this is a AA
  
  B
  
  C Cm */
  
  可見新輸入的6個字符(包括空格,但不包括< Esc >)取代原行中的6個字符。
  
  2. 替換命令:s和S
  
  s(小寫):該命令表示用隨後輸入的文本替換當前光標所在的字符。
  
  [例29] 屏幕上顯示為:
  
  /* this is a program */
  
  輸入s命令,光標所在的“a”消失,隨後輸入:
  
  A good example<Esc>,顯示為:
  
  /*this is A good example program */
  
  如果只用一個新字符替換光標所在字符,則s命令與r命令功能類似,如sh與rh的作用都是將光標所在字符變為h。但二者也有區別,r命令僅完成置換,而s命令在完成置換同時,工作模式從命令方式轉為文本輸入方式。因此,s命令的一般使用方式是:s隨後是要替換的正文,最後一定是, 結束文本輸入模式,返回到命令模式。
  
  可以在s前面加一個數字n,則表示用s後輸入的文本替換從光標所在字符開始及其後的n-1個字符(共n個字符)。
  
  [例30]屏幕顯示為:
  
  /* this is good program */
  
  輸入4s命令後,屏幕顯示為:
  
  /* this is program */
  
  接著輸入a 隨後按<Esc>鍵,屏幕顯示為:
  
  /* this is a program */
  
  S(大寫):該命令表示用新打入的正文替換光標當前行(整行)(不管光標位於何列)。
  
  [例31] 屏幕顯示為:
  
  /* this is a program */
  
  main ( )
  
  輸入S後,光標所在行成為空行,光標停在行的開頭。隨後輸入:
  
  #include < stdio.h >
  
  #include < math.h >
  
  接著按< Esc >鍵,屏幕顯示為:
  
  #include < stdio.h >
  
  #include < math.h >
  
  main ( )
  
  如果在S之前給出一個數字n,例如3,則表示有3行(包括光標當前行及其下面2行)要被S命令之後輸入的正文所替換。
  
  3. 字替換 cw
  
  如果我們只希望將某個字的內容用其他文本串替換,則可用cw命令。cw所替換的是一個狹義的字。輸入這個命令後,Vi將把光標處的那個字刪除,然後用戶可輸入任何文本內容。輸入完成之後按鍵,Vi即用所輸入的內容替換原光標位置至相應字結尾的所有內容。
  
  [例32] 屏幕顯示為:
  
  printf( “ please input a number :\ n ” );
  
  在命令模式下輸入cw,接著輸入data後按鍵,屏幕顯示:
  
  printf( “ please input a data :\ n ” ) ;
  
  即用“data”取代了“number”。
  
    摘自《Turbolinux》
Copyright © Linux教程網 All Rights Reserved