1. 程式人生 > >linux下vim的使用

linux下vim的使用

vi與vim vi編輯器是所有Unix及Linux系統下標準的編輯器,他就相當於windows系統中的記事本一樣,它的強大不遜色於任何最新的文字編輯器。他是我們使用Linux系統不能缺少的工具。由於對Unix及Linux系統的任何版本,vi編輯器是完全相同的,學會它後,您將在Linux的世界裡暢行無阻。 vim 具有程式編輯的能力,可以以字型顏色辨別語法的正確性,方便程式設計; 因為程式簡單,編輯速度相當快速。 vim可以當作vi的升級版本,他可以用多種顏色的方式來顯示一些特殊的資訊。 vim會依據副檔名或者是檔案內的開頭資訊, 判斷該檔案的內容而自動的執行該程式的語法判斷式,再以顏色來顯示程式程式碼與一般資訊。 vim裡面加入了很多額外的功能,例如支援正則表示式的搜尋、多檔案編輯、塊複製等等。 這對於我們在Linux上進行一些配置檔案的修改工作時是很棒的功能。

為何要學 vi 所有的Unix Like系統都會內建vi文字編輯器,其他的文字編輯器則不一定會存在; 一些軟體的編輯介面會主動呼叫vi (例如 crontab, visudo, edquota 等命令); vi的使用 基本上vi可以分為三種狀態,分別是一般模式、編輯模式和命令列模式,各模式的功能區分如下: 一般模式: 以vi開啟一個檔案就直接進入一般模式了(這是預設的模式)。在這個模式中, 你可以使用上下左右按鍵來移動游標,你可以使用刪除字元或刪除整行來處理檔案內容, 也可以使用複製、貼上來處理你的檔案資料。 編輯模式: 在一般模式中可以進行刪除、複製、貼上等的操作,但是卻無法編輯檔案的內容,只有當到你按下【i, I, o, O, a, A, r, R】等任何一個字母之後才會進入編輯模式。這時候螢幕的左下方會出現【INSERT或 REPLACE】的字樣,此時才可以進行編輯。而如果要回到一般模式時, 則必須要按下【Esc】即可退出編輯模式。 命令列模式: 輸入【 : / ? 】三個中的任何一個,就可以將游標移動到最底下那一行。在這個模式中, 可以提供查詢、讀取、存檔、替換字元、離開vi、顯示行號等的動作則是在此模式中完成的! 一般模式可用的按鈕說明 移動游標 【h、j、k、l】,分別控制游標左、下、上、右移一格 按【ctrl+b】螢幕往"後"移動一頁 按【ctrl+f】螢幕往"前"移動一頁 【n】游標向右移動n個字元 【Home】移動到這一行的最前面字元處:0數字,但不能用數字小鍵盤上的數字 【End】 移動到這一行的最後面字元處:

weHMLGnGn(:setnu)gg1Gn<Enter>n/wordword?wordwordnNn
:n1,n2s/word1/word2/gn1n2n1n2word1word2:1,,我測試好像不行 【w】游標跳到下個字的開頭 【e】游標跳到下個字的字尾 【H】 游標移動到這個螢幕的最上方那一行的第一個字元 【M】 游標移動到這個螢幕的中間那一行的第一個字元 【L】游標移動到這個螢幕的最下方那一行的第一個字元 【G】 移動到這個檔案的最後一行 【nG】移動到這個檔案的第n行(可配合:set nu) 【gg】 移動到這個檔案的第一行,相當於1G 【n<Enter>】游標向下移動n行 查詢與替換 【/word】 向光標向下尋找一個名稱為word的字串 【?word】 向光標向上尋找一個名稱為word的字串 【n】 代表重複前一個查詢的動作 【N】 與n剛好相反,為【反向】進行行前一個查詢動作 【:n1,n2s/word1/word2/g】  n1與n2為數字,在第n1與n2行之間查詢word1 這個字串,並將該字串替換為word2 【:1,s/word1/word2/g】 從第一行到最後一行查詢word1字串,並將該字串替換為word2 【:1,s/word1/word2/gcword1word2x(del)X(backspace)nxnddnddnd1GdGds/word1/word2/gc】 從第一行到最後一行查詢word1字串,並將該字串替換為word2 ,且在替換前提示使用者確認是否進行替換 刪除、複製與貼上 【x】 為向後刪除一個字元 (相當於【del】鍵) 【X】 為向前刪除一個字元(相當於【backspace】鍵) 【nx】 連續向後刪除n個字元 【dd】 刪除游標所在行 【ndd】 刪除游標所在的向下n行 【d1G】 刪除游標所在行到第一行的所有資料 【dG】 刪除游標所在到最後一行的所有資料 【d】 刪除游標所在處,到該行的最後一個字元 【d0】 刪除游標所在處,到該行的最前一個字元 【yy】 複製游標所在的那一行 【nyy】 複製游標所在的向下n列 【y1G】 複製游標所在行到第一行的所有資料 【yG】 複製游標所在行到最後一行的所有資料 【y0】 複製游標所在的那個字元到該行行首的所有資料 【y$】 複製游標所在的那個字元到該行行尾的所有資料 【p】將已複製的資料在游標下一行貼上上 【P】 則為貼在游標的上一行 【u】 恢復前一個操作 【Ctrl+r】重做上一個操作 【.】 是重複前一個操作 一般模式切換到編輯模式的可用的按鈕說明 【i, I】 進入編輯模式: i 為【從目前游標所在處插入】 I 為【在目前所在行的第一個非空格符處開始插入】   【a, A】 進入編輯模式(Insert mode): a 為【從目前游標所在的下一個字元處開始插入】 A 為【從游標所在行的最後一個字元處開始插入】 【o, O】 進入編輯模式: o 為【在目前游標所在的下一行處插入新的一行】 O 為在目前游標所在處的上一行插入新的一行 【r, R】 進入取代模式: r 只會取代游標所在的那一個字元一次 R會一直取代游標所在的文字,直到按下 ESC 為止; 【Esc】 退出編輯模式,回到一般模式 一般模式切換到命令列模式可用的按鈕說明 【:w】 儲存編輯的內容 【:w!】強制寫入該檔案,但跟你對該檔案的許可權有關 【:q】 離開vi 【:q!】 不想儲存修改強制離開 【:wq】 儲存後離開 【:x】 儲存後離開 【ZZ】 若檔案沒有更動,則不儲存離開,若檔案已經被更改過,則儲存後離開 【:w filename】 將編輯的資料儲存成另一個檔案(類似另存) 【:r filename】 在編輯的資料中,讀入另一個檔案的資料。即將【filename】 這個檔案的內容加到游標所在行後面。 【:n1,n2 w filename】 將n1到n2的內容儲存成filename這個檔案。 【:! command】暫時離開vi 到命令列模式下執行command的顯示結果!例如 【:! ls /home】即可在 vi 當中察看/home底下以ls輸出的檔案資訊! 【:set nu】 顯示行號 【:set nonu】 與 set nu 相反,為取消行 vim的快取檔案、恢復與開啟時的警告資訊 我們知道一些常用的編輯軟體,都有個恢復的功能,就是說當你的系統因為某些原因而導致類似當機的情況時,還可以利用這個恢復功能將之前未儲存的資料找回來。我們的VIM也有這個功能。 當我們在使用vim編輯時,vim會在與被編輯的檔案的目錄下,再建立一個名為 .filename.swp的檔案。如果你的系統因為某些原因斷線了, 導致你編輯的檔案還沒有儲存,這個時候 .filenam.swp 就能夠發會救援的功能了。 我們來演示一下 vim man.config ctrl+z放到後臺執行 我們停止VI的程序 一種方法 ps aux |grep vi kill -9 n 另外一種方法 jobs kill -9 %1 我們用ls -l 命令來檢視一下目錄裡面,會發現有個.man.config.swp的檔案,這個檔案就是個快取的檔案 我們再來編輯 vim man.config 這時候會出現一些資訊 問題一:可能有其他人或程式同時在編輯這個檔案: 問題二:在前一個vim的環境中,可能因為某些不知名原因導致vim中斷 (crashed): 右下角會出現六個命令項,其作用說明如下: (O)pen Read-Only:開啟此檔案成為只讀檔, 可以用在你只是想要查閱該檔案內容並不想要進行編輯行為時。一般來說,在上課時,如果你是登入到同學的計算機去看他的配置檔案, 結果發現其實同學他自己也在編輯時,可以使用這個模式; (E)dit anyway:還是用正常的方式開啟你要編輯的那個檔案, 並不會載入暫存檔的內容。如果說兩個人都在編輯這個檔案的話,很容易出現互相改變對方的檔案等問題。 ®ecover:就是載入暫存檔的內容,用在你要救回之前未儲存的工作。 不過當你救回來並且儲存離開vim後,還是要手動自行刪除那個暫存檔。 (D)elete it:你確定那個暫存檔是無用的!那麼開啟檔案前會先將這個暫存檔刪除 (Q)uit:按下 q 就離開vim,不會進行任何動作回到命令提示字元。 (A)bort:忽略這個編輯行為,感覺上與 quit 非常類似! vim的功能 其實,目前大部分的Linux發行版本都以vim取代了vi。為什麼要用vim呢?因為vim具有顏色顯示的功能,並且還支援許多的程式語法(syntax)和相應的提示資訊。檢視自己的VI是不是被VIM代替,可以用 alias這個命令來檢視是不是有alias vi=’vim’這一行。 塊選擇 【v】字元選擇,會將游標經過的地方反白選擇 【V】 行選擇,會將游標經過的行反白選擇 【Ctrl+v】 塊選擇,可以用長方形的方式選擇資料 (提製豎列) 【y】 將反白的地方複製 【d】 將反白的地方刪除 多檔案編輯 大家在使用vim的時候,可能會碰到你需要複製一個檔案中的某段到另外一個檔案中,而vim不能夠在關閉的時候,把這段保留住。或者是用其它的方法複製。 【vim file1 file2】 【:n】編輯下一個檔案 【:N】編輯上一個檔案 【:files】列出目前這個vim編輯的所有檔案 多視窗功能 有兩個需要對照著看的檔案 【:sp filename】開啟一個新視窗,如果有加 filename, 表示在新視窗開啟一個新檔案,否則表示兩個視窗為同一個檔案內容(同步顯示)。 【ctrl+w+j】 【ctrl+w+↓】按鍵的按法是:先按下 【ctrl】 不放, 再按下 w 後放開所有的按鍵,然後再按下 j (或向下箭頭鍵),則游標可移動到下方的視窗。 【ctrl+w+k】 【ctrl+w+↑】同上,不過游標移動到上面的視窗。 vim 環境設定與記錄(~/.vimrc, ~/.viminfo) 如果我們以vim軟體來查詢一個檔案內部的某個字串時,這個字串會被反白, 而下次我們再次以vim編輯這個檔案時,該查詢的字串反白情況還是存在。另外,當我們重複編輯同一個檔案時,當第二次進入該檔案時, 游標竟然就在上次離開的那一行的開頭。這個功能可能是方便,但也有不方便的時候。怎麼會這樣呢?這是因為我們的vim會主動的將你曾經做過的行為登入下來,那個記錄動作的檔案就是: /.viminfo,不想用這個功能,就直接刪除/.viminfo。只要你曾經使用過vim,那麼你的家目錄就會有這個檔案。這個檔案是自動產生的,你在vim裡頭所做過的動作,就可以在這個檔案內部找到。有興趣的朋友可以自己檢視檔案裡面的內容。 不過,對於每個不同的發行版本對vim的預設環境都不太相同。舉例來說,某些版本在查詢到關鍵詞時並不會高亮度反白, 有些版本則會主動的幫你進行縮排(所謂的縮排,就是當你按下 Enter 編輯新的一行時,游標不會在行首,而是在與上一行的第一個非空格符處對齊)的行為。其實這些都可以自行設定的,下面我們就來看看vim的環境設定。 vim的環境設定引數有很多,如果你想要知道目前的設定值,可以在一般模式時輸入【 :set all】來查閱,由於設定專案實在太多了,我們在這裡就僅列出一些平時比較常用的一些簡單的設定值,給大家提供參考。 :set all "顯示目前所有的環境引數設定值 :set hlsearch "高亮度反白(高亮度搜尋) :set nohlsearch "取消高亮度反白(高亮度搜尋) :set backspace=2 "在編輯的時候可隨時用退格鍵刪除 (0、1的時候,只針對剛輸入的字元有效) :set autoindent "自動縮排 :set noautoindent "取消自動縮排 :set ruler "可顯示最後一行的狀態 :set showmode "左下角那一行的狀態 :set nu "顯示行號 :set nonu "取消行號 :set bg=dark "顯示不同的底色色調 :syntax on "進行語法檢驗,顏色顯示 :syntax off "關閉語法檢驗 瞭解完上面的內容後,下面我們就能寫一下自己的vim操作環境。 整體vim的設定值一般是置在/etc/vimrc這個檔案裡面,不建議大家來修改他。我們在自己的家目錄裡面建立個.vimrc檔案,在這裡面寫入自己的內容就能實現了。 [[email protected] ~]# vim ~/.vimrc 內容如下 set hlsearch "高亮度反白 set backspace=2 "可隨時用退格鍵刪除 set autoindent "自動縮排 set ruler "可顯示最後一行的狀態 set showmode "左下角那一行的狀態 set nu "可以在每一行的最前面顯示行號 set bg=dark "顯示不同的底色色調 syntax on "進行語法檢驗,顏色顯示 “這個檔案的雙引號 (”)表示的是註釋 儲存退出vim後,在下次使用vim的時候,就會有自己的vim操作環境了。 提醒一點,這個檔案中每一行前面加不加【:】效果都是一樣的。 最後,給也幾張不錯的圖,幫助大家更快的來掌握vi/vim,記住一點,不要死記,重在操作

linux vim編輯器必知必會

一、我們為什麼要學習vim編輯器? Linux的命令列介面下面有非常多的文字編輯器。比如經常聽說的就有Emacs、pico、nano、joe與vim等。vim可以看做是vi的高階版。我們為什麼一定要學習vim呢?有以下幾個原因: (1)所有的Unix like系統都會內建vi文字編輯器,其他的文字編輯器則不一定會存在。 (2)很多軟體的編輯介面都會主動呼叫vi。 (3)vim具有程式編輯的能力,可以主動以字型顏色辨別語法的正確性,方便程式設計。 (4)程式簡單,編輯速度快。

二、下面先介紹一下vi的基本使用方法及其相關命令。 vim編輯器的三種模式:一般模式、編輯模式和命令列模式。 在一般模式中可以進行刪除、複製和貼上的功能,但是無法編輯檔案內容。從一般模式切換到編輯模式可以按下i、I、o、O、a、A、r、R鍵。按下Esc鍵可以回到一般模式。在一般模式中輸入:、/、?三個中的任意一個可以將游標移到最下面的一行。在這個模式中可以提供查詢資料的操作,而讀取、儲存、大量替換字元、離開vii、顯示行號等操作則是在此模式中完成的。需要注意的是,編輯模式與命令列模式之間是不能互相切換的。 下面列出平時用的最多的vi命令: 移動游標的方法: [Ctrl]+[f]:螢幕向下移動一頁,相當於[PageDown]按鍵。 [Ctrl]+[b]:螢幕向上移動一頁,相當於[PageUp]按鍵。 0或功能鍵[Home]:移動到這一行的最前面字元處。 [End]Ggg1G.N[Enter]NN/wordword?wordword:n1,n2s/word1/word2/gn1n2word1word2.:1,或功能鍵[End]:移動到這一行的最後面字元處。 G:移動到這個檔案的最後一行。 gg:移動到這個檔案的第一行,相當於1G. N[Enter]:N為數字,游標向下移動N行。 查詢和替換: /word:向下尋找一個名稱為word的字串。 ?word:向上尋找一個名稱為word的字串。 :n1,n2s/word1/word2/g:在第n1行和n2行之間尋找word1這個字串,並且將其替換為word2. :1,