vim中的常用命令

來源:互聯網
上載者:User

vi編輯器有3種模式:命令模式、輸入模式、末行模式。掌握這三種模式十分重要:

  命令模式:vi啟動後預設進入的是命令模式,從這個模式使用命令可以切換到另外兩種模式,同時無論在任何模式下只要按一下[Esc]鍵都可以返回命令模式。在命令模式中輸入字幕“i”就可以進入vi的輸入模式編輯檔案。

  輸入模式:在這個模式中我們可以編輯、修改、輸入等編輯工作,在編輯器最後一行顯示一個“--INSERT--”標誌著vi進入了輸入模式。當我們完成修改輸入等操作的時候我們需要儲存檔案,這時我們需要先返回命令模式,在進入末行模式儲存。

  末行模式:在命令模式輸入“:”即可進入該模式,在末行模式中有好多好用的命令。

4.編輯操作
  進入輸入模式命令
  i插入命令 a附加命令 o開啟命令 c修改命令
  r取代命令 s替換命令 Esc退出命令

  輸入模式的操作
  Home游標到行首
  End 游標到行尾
  Page Up和Page Down上下翻頁
  Delect刪除游標位置的字元

  刪除操作(命令模式使用)
  x刪除游標處的單個字元
  dd刪除游標所在行
  dw刪除當前字元到單詞尾包括空格的所有字元
  #x例如3x刪除游標處向右的三個字元
  #dd例如3dd從當前行開始向下刪除三行文本

  撤銷操作
  u命令取消最近一次的操作,可以使用多次來恢複原有的操作
  U取消所有操作
  Ctrl+R可以恢複對使用u命令的操作

  複製操作
  yy命令複製當前整行的內容到vi緩衝區
  yw複製當前游標所在位置到單詞尾字元的內容到vi緩衝區,相當於複製一個單詞
  y$複製游標所在位置到行尾內容到緩衝區
  y^複製游標所在位置到行首內容到緩衝區
  #yy例如:5yy就是複製5行
  #yw例如:2yw就是複製兩個單詞

  如果要複製第m行到第n行之間的內容,可以在末行模式中輸入m,ny例如:3,5y複製第三行到第五行內容到緩衝區。

5.尋找和替換
  vi的尋找和替換功能主要在末行模式完成:

  至上而下的尋找
  / 要尋找的字元竄,其中/代表從游標所在位置起開始尋找,例如:/ work

  至下而上的尋找
  。要尋找的字元竄 例如:/ work

  替換
  :s/old/new用new替換行中首次出現的old
  : s/old/new/g 用new替換行中所有出現的old
  :#,# s/old/new/g用new替換從第#行到第#行中出現的old
  :% s/old/new/g用new替換整篇中出現的old

  如果替換的範圍較大時,在所有的命令尾加一個c命令,強制每個替換需要使用者進行確認,例如:s/old/new/c 或s/old/new/gc

  6恢複檔案
  vi在編輯某一個檔案時,會產生一個臨時檔案,這個檔案以 . 開頭並以 .swp結尾。正常退出該檔案自動刪除,如果意外退出例如忽然斷電,該檔案不會刪除,我們在下次編輯時可以選擇一下命令處理:

  O唯讀開啟,不改變檔案內容
  E繼續編輯檔案,不恢複.swp檔案儲存的內容
  R將恢複上次編輯以後未儲存檔案內容
  Q退出vi
  D刪除.swp檔案
  或者使用vi -r 檔案名稱來恢複未儲存的內容

在GUI下:
(1)可按i進入插入模式
(2)使用滑鼠拖動反選要粘貼的內容,按滑鼠左鍵複製選定塊到緩衝區
(3)然後將游標移到要粘貼處,按滑鼠中鍵(兩鍵滑鼠可同時按左右鍵),粘貼緩衝區內容。

在純文字終端下:
(1)選定文字區塊,使用v進入可視模式;移動游標鍵選定內容
(2)複製選定塊到緩衝區,用y;複製整行,用yy
(3)剪下選定塊到緩衝區,用d;剪下整行用dd
(4)粘貼緩衝區中的內容,用p

在同一編輯窗開啟第二個檔案,用:sp [filename]
在多個編輯檔案之間切換,用Ctrl+w

命令前面加數字表示重複次數,加字母表示使用的緩衝區名稱。
擷取協助,用:help [內容或命令]

  vi 中設定tab為4和自動轉換成空格 2009-10-30 15:33

:set tabstop=4        " Force tabs to be displayed/expanded to 4 spaces (instead of default 8).
:set softtabstop=4    " Make Vim treat <Tab> key as 4 spaces, but respect hard Tabs.
:                     "   I don't think this one will do what you want.
:set expandtab        " Turn Tab keypresses into spaces. Sounds like this is happening to you.
                        "    You can still insert real Tabs as [Ctrl]-V [Tab].
:set noexpandtab      " Leave Tab keys as real tabs (ASCII 9 character).
:1,$retab!            " Convert all tabs to space or ASCII-9 (per "expandtab"),
                        "   on lines 1_to_end-of-file.
:set shiftwidth=4     " When auto-indenting, indent by this much.
                        "   (Use spaces/tabs per "expandtab".)
:help tabstop         " Find out more about this stuff.
:help vimrc           " Find out more about .vimrc/_vimrc :-)

VI中複製與粘貼基本方法 預設分類    2009-07-30 11:16    閱讀407   評論0    字型大小:  大   中   小         我們先做這樣一個小小的嘗試,請開啟瀏覽器,從網頁上隨便複製一段文字,然後開啟VIM,用VIM,用"p"粘貼一下,你會發現,什麼都沒有站貼過來,原因是這樣的,不同於Windows,VIM具有多個剪貼簿,並且和系統剪貼簿是完全獨立的,所以當你複製瀏覽器裡的文字的時候,這段文字儲存在了系統剪貼簿,當你是用"p"來粘貼的時候,實際上,他讀取的是VIM的剪下板。  
       那怎麼方便的將系統剪貼簿的內容複寫過來呢。簡單。用另外一個捷徑"Shift+Insert"就可以了,如果你在使用Gvim的話,直接用滑鼠中鍵也可起到相同的作用。是不是很簡單。 
       OK。我們開始進階。  
       我們前面說過,VIM具有多個剪下板,目的是為了使用者在做較複雜的字元處理的時候,可以更方便的複製粘貼。請現在使用一下":reg"命令(先按 ESC鍵,退出編輯模式,然後按:進入命令模式,然後輸入reg斷行符號),看到了。螢幕上的輸出結果。是不是特別眼熟,對了。就是您之前複製過的所有內容。也許這時候您還發現,VIM的剪下板原來有這麼多個,按照數字還有符號一個一個的區分開的,這裡舉一個編號的例子--""5,看到了嗎。是以"開頭的。還有。有沒有看到編號為"+的剪下板。裡面的內容是不是剛才你在瀏覽器裡複製的那段文字啊。呵呵……沒錯了。系統剪下板的編號就是"+。  
       好了,這時候您已經知道了如何查看之前的所有剪貼簿內容,我們現在就試著把某一個特定剪下板的內容複寫進我們正在編輯的檔案中。我們知道,vi的粘貼指令是"p",但是如果要粘貼一個特定的剪貼簿,只是用p就不行了,那怎麼辦。簡單。把剪貼簿的編號帶上不就可以了。現在先按ESC,退出編輯模式,然後依次按"+p這三個字元(怎麼按。不會吧。"和+怎麼按。用Shift啊。),好了。你看看,之前在瀏覽器中複製的這段文本,是不是被粘貼進文檔中了。  如何將系統剪下板裡的內容複寫進VIM當中,您已經清楚了。那如何將ViM中複製的字元粘貼到其他地方呢。很簡單,我們只需要把要複製的文字,複製進 "+剪下板不就可以了。("+剪下板是系統剪下板,忘記了。)在VIM中,複製的指令是y(在非編輯模式下按y就可以了),那要將文本複製進指定的剪下板,只需要加上剪下板的編號就可以了。舉個例子,我們希望把VIM中的一段文本複製下來,然後粘貼到瀏覽器的地址欄中:第一步,現把需要複製的文字選中(非編輯模式下),然後在鍵盤上依次按"+y這三個字元,OK。已經複製下來了,現在用:reg命令看看,是不是在"+剪下板中了。  好了,目前為止,您已經大致掌握了VIM剪下板的基本用法,當然,VIM剪下板的功能還很強大,本文也不能盡數道來,就請您繼續發掘吧。 vi中多個檔案相互之間的複製、粘貼功能簡介。

發布: 2007-6-08 22:43 | 作者: seanhe | 來源: | 查看: 25次 | 進入軟體測試論壇討論
昨天有人提出此類問題,我特地加以編輯一下,請大家共用,可能寫的不好。 

大家在vi編輯中,常常遇到想把檔案A裡面的一行或多行,複製到B檔案裡面去 
(可能很多人不知道怎麼辦),該怎麼做了。 
下面是幾中方法: 
1.如果你有多台機器,而且是連網的,你可以 .netterm虛擬終端,telnet登陸主機對A檔案進行修改、複製,然後開啟B檔案粘貼過去。 
2.如果是單機,當然要用 unix內建的編輯功能呢 
  先簡單介紹一些vi編輯裡的命令: 
  (A).yw 將當前字存入無名緩衝區,前面可加"x,表示存入名字為x的有名  
緩衝區(x為a-z),也可加數字表示存入的字數,以後可用P或p命  
令取出  
yy 將當前行存入無名緩衝區,用法參看yw  

   (B).命令如下:a-Z 是緩衝區,也可移出數字1-9指定的刪除緩衝區  
利用命名緩衝區可很好地儲存若干文本段,便於以後存取、移動或者重排。這些緩衝區用a到z字母命名。為了訪問這些緩衝區中的一個,要使用雙引號  
例如:要把一行插入a緩衝區,可鍵入:  
"ayy  
為了把這個文本放回該檔案中,鍵入"ap  


  (c).m做標誌命令: 
  m 字母 用字母標記當前行,以後可用 '字母使游標移動到當前行,  
(參看'命令) 

列子:1。將a檔案中的4行到b檔案中 

      命令如下:"ay4+  
                  :ex b (轉到b檔案中) 
                   然後"ap 
        2. 將a中多行複製到b檔案中 
先在開始處做標誌mk  
然後在末尾用"ay'k (游標自動回到開始處,此時已經把你的內容放到緩衝區了) 
其中a表示緩衝區a  
然後用ex轉義到你的檔案B中,然後用"ap命令粘貼就行 

3。如果你檔案中有多次要複製粘貼的話,看下面: 
a表示緩衝區a ,你還繼續可以使用緩衝b嗎  
緩衝區有a-z和1-9這麼多  
緩衝區就好象 windows下的煎切版一樣,它有好多個,你可以把你想要的複製進去,然後粘貼,只不過你用"ay時候多換a就是了,如你要複製462行用"ay ,複製536行用"by 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.