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】 移動到這一行的最後面字元處:s/word1/word2/g】 從第一行到最後一行查詢word1字串,並將該字串替換為word2 【:1,】 刪除游標所在處,到該行的最後一個字元 【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]:移動到這一行的最前面字元處。