Linux下的編輯器――vi大全(轉)

gugu99發表於2007-08-10
Linux下的編輯器――vi大全(轉)[@more@]

  xp

  交換兩個字元位置

  ddp

  上下兩行調換

  J

  上下兩行合併

  dG

  刪除所有行

  d$

  從當前位置刪除到行尾

  y$

  從當前位置複製到行尾, 如果要貼上到其他地方 p 就可以了

  :ab string strings

  例如 ":ab usa United States of America" ,

  當你在文見裡插入 usa 時

  United States of America 就蹦出來了

  :g/^/m0

  把檔案內容反轉

  :map keys new_seq

  定義你當前 鍵盤命令

  :set [all]

  vi or ex 的編輯狀態

  如 顯示每行 :set nu

  :X

  然後系統會提示輸入密碼, 輸入密碼後存檔退出, 儲存後就加密了

  下次編輯時使用vi -x filename, 系統會提示你輸入密碼

  在命令狀態下,nyy表示複製從游標行起的下n行內容,p表示paste,貼上下來在游標處。

  我常用到的單個字元替換用r,覆蓋多個字元用R,用多個字元替換一個字元用s,整行替換用S

  :%s/old_word/new_word/g

  這個指令是於在整個檔案中替換特定字串

  將游標移到第n行,按下 mk

  將游標移到第m行,按下 "ay'k

  即將第n到m的行存到a暫存器,以此類推,b,c........暫存器等

  不好意思,補充一下,想貼上到某處,直接將游標移到某地,按下 ‘ap 即可

  刪除命令操作

  d l 刪除當前字元(與x命令功能相同)

  d 0 刪除到某一行的開始位置

  d ^ 刪除到某一行的第一個字元位置(不包括空格或TA B字元)

  d w 刪除到某個單詞的結尾位置

  d 3 w 刪除到第三個單詞的結尾位置

  d b 刪除到某個單詞的開始位置

  d W 刪除到某個以空格作為分隔符的單詞的結尾位置

  d B 刪除到某個以空格作為分隔符的單詞的開始位置

  刪除命令操作

  d 7 B 刪除到前面7個以空格作為分隔符的單詞的開始位置

  d) 刪除到某個語句的結尾位置

  d 4) 刪除到第四個語句的結尾位置

  d( 刪除到某個語句的開始位置

  d } 刪除到某個段落的結尾位置

  d { 刪除到某個段落的開始位置

  d 7 { 刪除到當前段落起始位置之前的第7個段落位置

  d d 刪除當前行

  d /t e x t 刪除從文字中出現“ t e x t”中所指定字樣的位置,一直向前直到下一個該字樣所出現的

  位置(但不包括該字樣)之間的內容

  d fc 刪除從文字中出現字元“c”的位置,一直向前直到下一個該字元所出現的位置(包括

  該字元)之間的內容

  d tc 刪除當前行直到下一個字元“ c”所出現位置之間的內容

  D 刪除到某一行的結尾

  d $ 刪除到某一行的結尾

  5 d d 刪除從當前行所開始的5行內容

  d L 刪除直到螢幕上最後一行的內容

  d H 刪除直到螢幕上第一行的內容

  d G 刪除直到工作快取區結尾的內容

  d 1 G 刪除直到工作快取區開始的內容

  修改命令操作

  c l 更改當前字元

  c w 修改到某個單詞的結尾位置

  c 3 w 修改到第三個單詞的結尾位置

  c b 修改到某個單詞的開始位置

  c W 修改到某個以空格作為分隔符的單詞的結尾位置

  c B 修改到某個以空格作為分隔符的單詞的開始位置

  c 7 B 修改到前面7個以空格作為分隔符的單詞的開始位置

  c 0 修改到某行的結尾位置

  c) 修改到某個語句的結尾位置

  c 4) 修改到第四個語句的結尾位置

  c( 修改到某個語句的開始位置

  c } 修改到某個段落的結尾位置

  c { 修改到某個段落的開始位置

  c 7 { 修改到當前段落起始位置之前的第7個段落位置

  c tc 修改當前行直到下一個字元c所出現位置之間的內容

  C 修改到某一行的結尾

  c c 修改當前行

  5 c c 修改從當前行所開始的5行內容

  替換命令操作

  s 將當前字元替換為一個或多個字元

  S 將當前行替換為一個或多個字元

  5 s 將從當前字元開始的5個字元替換為一個或多個字元

  下載

  vi替換使用規則:

  :g/s1/s/s2/s3/g

  第一個g表示對每一個包括s1的行都進行替換,第二個g表示對每一行包括s1的行所有的s2都用s3替換

  s表示替換,s2是要被替換的字串,他可以和s1相同(如果相同的話用//代替),s3是替換字串

  fx

  往右移動到 x 字元上

  Fx

  往左移動到 x 字元上

  tx

  往右移動到 x 字元前

  Tx

  往左移動到 x 字元後

  (注意:以上四個命令中,其中x是鍵入的字元)

  ;

  分號,配合 f 和 t 使用,重複一次

  ,

  逗號,配合 f 和 t 使用,反方向重複一次

  建議誰把 :set all 出來的引數及其用法說明一下。注意註明UNIX平臺,我發現幾個平臺下有些差異。

  加密碼我在8 上(bsh) 實驗成功 所以大家最好還是加上 環境!!

  vi 環境選項 Solaris ksh

  noautoindent nomodelines noshowmode

  autoprint nonumber noslowopen

  noautowrite nonovice tabstop=8

  nobeautify nooptimize taglength=0

  directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipnpbtags=tags /usr/lib/tags

  noedcompatible prompt tagstack

  noerrorbells noreadonly term=vt100

  noexrc redraw noterse

  flash remap timeout

  hardtabs=8 report=5 ttytype=vt100

  noignorecase scroll=11 warn

  nolisp sections=NHSHH HUuhsh+c window=23

  nolist shell=/bin/ksh wrapscan

  magic shiftwidth=8 wrapmargin=0

  mesg noshowmatch nowriteany

  For C-Shell:

  setenv EXINIT "set nu"

  For Bourne or Korn Shell:

  EXINIT="set nu"; export EXINIT

  For Korn Shell Only (alternate method):

  typeset -x EXINIT="set nu"

  在 .profile 裡設定 vi 的環境選項 , 以上均測試過

  怎麼沒有介紹標記的,做標記對那種大的程式檔案閱讀十分有幫助。

  建議大家使用。

  標記文字

  mchar   用字母char標記當前游標的位置

  `char   移至char所標記處

  'char   移至char標記所在行的開頭處

  "     移至當前行上一次所在位置(在游標移動之後)??一個雙引號

  ''    移至當前行上第一次所在位置的行的開頭處(在游標移動之後)??兩個單引號

  .重複上一次修改!

  大家都說了這麼多了,我也來說兩句

  在當前螢幕中

  H 跳到第一行

  M 跳到中間一行

  L 跳到最後一行

  同時vi多個檔案時,CTRL-SHIFT-6回到上一個檔案,在本次vi的檔案和上次vi的檔案之間切換。其實就是一些文件寫的 ^^

  但是我發現一個BUG:在用CTRL-SHIFT-6切換到上一個檔案後,用:args檢視多檔案vi狀態時,螢幕底部仍然顯示目前vi的是剛才的檔案。

  (在HP-UX,Solaris,AIX上透過)

  還是使用

  :e#

  切換比較好,呵呵

  %s/^/要加的內容/g 要在文字後同樣的字元加

  %s/$/要加的內容/g vi的使用確實太多,大家多多總結交流!!!

  追加到緩衝區

  對於已經有內容的緩衝區,可以繼續追加內容在其後面,例如:

  "Ad4w 刪除游標後4個字,並附加到緩衝區a

  "Ay) 取樣從游標到檔案尾的內容,並附加到緩衝區a

  "K3yy 取樣從游標所在行起的3行內容,並附加到緩衝區k

  注意:在追加緩衝區的命令中,原緩衝區的名字一定要大寫,才能將內容追加進去,否則是覆蓋原緩衝區的內容。追加內容在原緩衝區末尾另起一行。

  清理掉DOS文字中的^M可以在:1,$s/^M//g,其中^M是CTRL+V, CTRL+M。

  刪除從當前行開始到最後一行的所有內容

  :.,$d

  在:命令列模式下,首先可以確定命令的範圍

  .表示當前行;數字表示行號,如1表示第一行,2表示第二行;$表示最後一行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章