vim 程式編輯器

來源:互聯網
上載者:User

標籤:blog   http   io   os   ar   使用   java   strong   sp   

1.  vim 是進階版的 vi , vim 不但可以用不同顏色顯示文字內容,還能夠進行諸如 shell script, C program 等程式編輯功能,你可以將 vim 視為一種程式編輯器。

 

2.  在 ASCII 系統中的表徵圖與代碼可以參考 http://zh.wikipedia.org/wiki/ASCII

 

3.  所有的 Unix Like 系統都會內建 vi 文字編輯器,其他的文字編輯器則不一定會存在;很多軟體的編輯介面都會主動呼叫 vi (例如crontabvisudoedquota 等指令);vim 具有程式編輯的能力,可以主動地以字型顏色辨別文法的正確性,方便程式設計;因為程式簡單,vim 編輯速度相當快速。

 

4.  vim (http://www.vim.org)會依據檔案的副檔名或者是檔案內的開頭資訊, 判斷該檔案的內容而自動地調用該程式的文法解析器,再以顏色來顯示程式碼與一般資訊。甚至一些 Linux 基礎設定檔內的文法,都能夠用 vim來檢查。

 

5.  基本上 vi 共分為三種模式,分別是『一般模式』、『編輯模式』與『指令列命令模式』:

    1)  一般模式:以 vi 開啟一個檔案就直接進入一般模式了(這是預設的模式)。在這個模式中, 你可以使用『上下左右』按鍵來移動游標,你可以使用『刪除字元』或『刪除整行』來處理檔案內容, 也可以使用『複製、粘貼』來處理你的檔案資料。

    2)  編輯模式: 在一般模式中可以進行刪除、複製、粘貼等等的動作,但是卻無法編輯檔案內容。要等到你按下『i, I, o, O, a, A, r, R』等任何一個字母后才會進入編輯模式。而如果要回到一般模式時,則必須要按下『Esc』這個按鍵退出編輯模式。

    3)  指令列命令模式:在一般模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就可以將游標移動到最底下那一行。在這個模式當中, 可以提供你『搜尋資料』的動作,而讀取、存檔、大量取代字元、離開 vi 、顯示行號等等的動作則是在此模式中進行的。



 

6.  輸入『 vi 檔名』就能夠進入 vi 的一般模式了:

 

 

圖中那個虛線是不存在的, 只是用來說明而已。上半部顯示的是檔案的實際內容,最底下一行則是狀態顯示列(圖中的[New File]表示檔案是建立的,如果檔案已經存在則會顯示有多少行和多少字元,如 "141L , 4617C" ), 或者是命令下達列。

 

7.  在一般模式下,只要按下 ioa 等字元就可以進入編輯模式了:




在編輯模式中,左下角狀態列會出現-- INSERT -- 的字樣,那就是可以輸入任一字元的提示。這時,鍵盤上除了 [Esc] 這個按鍵外,其他按鍵都可以規作為一般的輸入按鈕。按下 [ESC] 按鈕回到一般模式。

 

8.  在一般模式中按下[:]鍵,游標就會移動到最底下一行去:



 

按 wq 儲存後離開 vi。如果你的檔案許可權不對,例如為 -r--r--r-- 時,那麼可能會無法寫入,此時可以使用使用『:wq! 』 多加一個驚歎號『強制寫入』。但那是在『你的許可權可以改變』的情況下才行。

 

9.  一般模式可用的按鍵說明:

按鍵 功能
移動游標的方法
h 或 左鍵(←) 游標向左移動一個字元
j 或 下鍵(↓) 游標向下移動一個字元
k 或 上鍵(↑) 游標向上移動一個字元
l 或 右鍵(→) 游標向右移動一個字元

如果想要進行多次移動的話,例如向下移動 30 行,可以使用 "30j" 或 "30↓" 的組合按鍵,

亦即加上想要進行的次數(數字)後,按下動作即可。

[Ctrl] + [f] 螢幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用)
[Ctrl] + [b] 螢幕『向上』移動一頁,相當於 [Page Up]按鍵 (常用)
[Ctrl] + [d] 螢幕『向下』移動半頁
[Ctrl] + [u] 螢幕『向上』移動半頁
+ 游標移動到下一行的第一個非空格符
- 游標移動到下一行的第一個非空格符
n<space>

n 表示『數字』,按下數字後再按空格鍵,游標會向右移動這一

行的 n 個字元。

0 或 功能鍵[Home] 移動到這一行的最前面字元處 (常用)
$ 或 功能鍵[End] 移動到這一行的最後面字元處(常用)
H 游標移動到這個螢幕的最上方那一行的第一個字元
M 游標移動到這個螢幕的中央那一行的第一個字元
L 游標移動到這個螢幕的最下方那一行的第一個字元
G 移動到這個檔案的最後一行(常用)
nG n 為數字,移動到這個檔案的第 n 行。(可配合 :set nu)
gg 移動到這個檔案的第一行,相當於 1G。(常用)
n<Enter> n 為數字,游標向下移動 n 行(常用)
搜尋與替換
/word 向游標之下尋找一個內容為 word 的字串。(常用)
?word 向游標之上尋找一個內容為 word 的字串。
n 這個 n 是英文按鍵,代表『重複前一個搜尋的動作』與 / 或 ?相關。
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/gc

從第一行到最後一行尋找 word1 字串,並將該字串替換為 word2。

且在替換前顯示提示字元給使用者確認。(常用)

刪除、複製與粘貼
x, X 在一行字當中,x 為向後刪除一個字元 (相當於 [del] 按鍵),X 為向前刪除一個字元(相當於 [backspace] 亦即退格鍵) (常用)
nx n 為數字,連續向後刪除 n 個字元。
dd 刪除遊標所在的那一整行(常用)
ndd n 為數字,刪除游標所在的向下 n 行。 (常用)
d1G 刪除游標所在到第一行的所有資料
dG 刪除游標所在到最後一行的所有資料
d$ 刪除遊標所在處,到該行的最後一個字元
d0 刪除遊標所在處,到該行的最前面一個字元
yy 複製遊標所在的那一行(常用)
nyy n 為數字,複製游標所在的向下 n 行。(常用)
y1G 複製游標所在行到第一行的所有資料
yG 複製游標所在行到最後一行的所有資料
y0 複製游標所在的那個字元到該行行首的所有資料
y$ 複製游標所在的那個字元到該行行尾的所有資料
p, P p 為將已複製的資料在游標下一行粘貼上,P 則為粘貼遊標上一行。(常用)
J 將游標所在行與下一行的資料合成一行(刪除行尾的分行符號)
c 重複刪除多個資料,例如向下刪除 10 行為[ 10cj ],向右刪除 5 個字元為[ 5ch ]
u 撤銷前一個動作。(常用)
[Ctrl]+r 重做上一個被撤銷的動作。(常用)
. 這是小數點,是重複前一個動作的意思。

 

10.  一般模式切換到編輯模式的可用的按鍵說明:

進入插入或替換的編輯模式
i,I

進入插入模式(Insert mode):

i 為『從目前游標所在處插入』, I 為『在目前所在行的第一個非空格符處開始插入』。 (常用)

a, A

進入插入模式(Insert mode):

a 為『從目前游標所在的下一個字元處開始插入』, A 為『從游標所在行的最後一個字元處開

始插入』。(常用)

o, O

進入插入模式(Insert mode):

o 為『在目前游標所在的下一行處插入新的一行』,O 為在目前游標所在處的上一行插入新的

一行!(常用)

r, R

進入替換模式(Replace mode):

r 只會替換游標所在的那一個字元一次;R會一直替換游標所在的文字,直到按下 ESC 為止。

(常用)

[Esc] 退出編輯模式,回到一般模式中(常用)

 

11.  一般模式切換到指令列模式可用的按鍵說明:

指令列的儲存、離開等指令
:w 將編輯的資料寫入硬碟檔案中(常用)
:w! 若檔案屬性為『唯讀』時,強制寫入該檔案。
:q 離開 vi (常用)
:q! 若修改過檔案,又不想儲存,使用 ! 為強制離開不儲存檔案。
:wq 儲存後離開,若為 :wq! 則為強制儲存後離開 (常用)
ZZ 若檔案沒有更改,則不儲存離開,若檔案已經被更改過,則儲存後離開
:e! 恢複成檔案的原始狀態
:w [filename] 將編輯的資料儲存成另一個檔案(類似另存新檔)
:r [filename]

在編輯的資料中,讀入另一個檔案的資料。亦即將 『filename』 這個檔案內容

加到遊標所在行後面

:n1,n2 w [filename] 將 n1 行到 n2 行的內容儲存成 filename 這個檔案。
:! command 暫時離開 vi 到Linux命令列模式下執行 command 的顯示結果。
:set nu 顯示行號,設定後,會在每一行的行首顯示該行的行號
:set nonu 與 set nu 相反,為取消行號

 

12.  當我們在 vim 的一般模式下按下 [ctrl]-z 的組合按鍵時,你的 vim 會被丟到後台去執行。

 

13.  當我們在使用 vim 編輯時, vim 會在被編輯的檔案所在的目錄下,再建立一個名為 .filename.swp 的檔案。比如你對 man.config 做的改動就會被記錄到 .man.config.swp 當中。如果你的系統因為某些原因斷線了, 導致你編輯的檔案還沒有儲存,當你再次用vim開啟這個檔案時,由於暫存檔案存在的關係,因此 vim 會主動地判斷你的這個檔案可能有些問題,就會出現以下介面:



在上面的圖示中 vim 提示兩點主要的問題與解決方案:

    問題一:可能有其他人或程式同時在編輯這個檔案。解決的方法則是:

        a)  找到另外那個程式或人員,請他將該 vim 的工作結束,然後你再繼續處理。

        b)  如果你只是要看該檔案的內容並不會有任何修改,那麼可以選擇開啟成為唯讀(O)檔案。

    問題二:在前一個 vim 的環境中,可能因為某些未知原因導致 vim 中斷 (crashed),處理方法為:

        a)  如果你之前的 vim 處理動作尚未儲存,此時你應該要按下『R』,亦即使用 (R)ecover 的項目, 此時 vim 會載入 .man.config.swp 的內容,讓你自己來決定要不要儲存。不過那個 .man.config.swp 並不會在你結束 vim後自動刪除,所以你離開 vim 後還得要自行刪除 .man.config.swp 才能避免每次開啟這個檔案都出現這樣的警告資訊。

        b)  如果你確定這個暫存檔案是沒有用的,那麼你可以直接按下『D』刪除掉這個暫存檔案。 此時 vim 會載入man.config ,並且將舊的 .man.config.swp 刪除後,建立這次會使用的新的 .man.config.swp。 

 

(E)dit anyway選項會用正常的方式開啟你要編輯的檔案, 並不會載入暫存檔案的內容。不過很容易出現兩個使用者互相改變對方的檔案等問題。

 

14.  當我們在一般模式下按下 v 或者 V 或者 [Ctrl]+v 時, 這個時候游標移動過的地方就會開始反白,這三個按鍵癿意義分別是:

按鍵 功能
v 字元選擇,會將游標經過的地方反白選擇
V 行選擇,會將游標經過的行反白選擇
[Ctrl]+v 區塊選擇,可以用長方形的方式選擇資料
y 將反白的地方複製起來
d 將反白的地方刪除掉

 

15.  可以使用 vim 後面同時接好幾個檔案來同時開啟它們,相關的按鍵有:

 

按鍵 功能
:n 編輯下一個檔案
:N 編輯上一個檔案
:files 列出目前這個 vim 開啟的所有檔案

 

在 vim 中使用『 :files 』察看一下編輯的檔案會如下所示:

 

16.  在指令列模式輸入『:sp {filename}』可以開啟額外的一個視窗。那個 filename 可有可無, 如果想要在新視窗開啟另一個檔案,就加入檔名,否則僅輸入 :sp 時, 出現的則是同一個檔案在兩個視窗內。你可以利用『[ctrl]+w+↑』及『[ctrl]+w+↓』 在視窗間切換。多視窗情況下的按鍵功能如下:

 

按鍵 功能
:sp [filename]

開啟一個新視窗,如果有加 filename, 表示在新視窗開啟一個新檔案,

否則表示兩個視窗為同一個檔案內容(同步顯示)。

[ctrl]+w+ j

[ctrl]+w+↓

按鍵的方法是:先按下 [ctrl] 不放, 再按下 w 後放開所有的按鍵,

然後再按下 j (或向下鍵),則游標可移動到下方的視窗。

[ctrl]+w+ k

[ctrl]+w+↑

按鍵的方法是:先按下 [ctrl] 不放, 再按下 w 後放開所有的按鍵,

然後再按下 k (或向上鍵),則游標可移動到上方的視窗。

[ctrl]+w+ q

結束離開當前視窗

 

17.  vim 會主動地將你曾經做過的行為記錄下來,好讓你下次可以輕鬆地作業。那個記錄動作的檔案就是:~/.viminfo。如果我們搜尋一個檔案內部的某個字串,這個字串會被反顯,而下次我們再編輯這個檔案時,該搜尋的字串反顯情況還是存在的。甚至於在編輯其他檔案時, 如果其中也存在這個字串,還是會主動反顯。另外,當我們重複編輯同一個檔案時,當第二次進入該檔案時,游標就在上次離開的那一行上。

 

18.  vim 的環境設定參數有很多,可以在一般模式時輸入『 :set all 』 來查閱。以下列出一些平時比較常用的一些簡單的設定值:

 

按鍵 功能

:set nu

:set nonu

設定與取消行號

:set hlsearch

:set nohlsearch

hlsearch 就是 high light search(高亮度搜尋)。

這個就是設定是否將搜尋到的字串反顯。預設值是 hlsearch

:set autoindent

:set noautoindent

是否自動縮排(就是當你按下 Enter 編輯新的一行時,

游標不會在行首,而是在與上一行的第一個非空格符處對齊)

:set backup

是否自動儲存備份檔。一般是 nobackup 的, 如果設定 backup ,

那麼當你更改任何一個檔案時,則源檔案會被另存成一個檔名

為 filename~ 的檔案。

 

:set ruler

是否顯示光線標位置等住處在右下角的狀態列裡。

:set showmode

是否要顯示 --INSERT-- 之類的字眼在左下角的狀態列。

:set backspace=(012)

當 backspace 為 2 時,就是可以刪除任意值;0 或 1 時,

僅可刪除剛剛輸入的字元, 而無法刪除原本就已經存在的文字。

:set all

顯示目前所有的環境參數設定值。

:set

顯示與系統預設值不同的設定參數。

:syntax on

:syntax off

是否依據程式相關文法顯示不同顏色。

:set bg=dark

:set bg=light

用以顯示不同顏色色調,預設是『 light 』。如果你覺得注釋字型深藍色

很不容易看清, 那麼這裡可以設定為 dark。

:set laststatus=2

設定有兩行狀態列 (一行狀態+一行指令列) 

 

全域 vim 的設定值一般是放置在 /etc/vimrc 這個檔案,你可以修改 ~/.vimrc 這個檔案 (預設不存在),將你所希望的設定值寫入。這個檔案中的雙引號 (") 是注釋,寫入設定值時不需要開頭的冒號。

 

19.  vim 常用指令:



 

20.  可以利用 cat -A 來觀察以 DOS (Windows 系統) 建立的檔案的特殊格式,DOS 使用的換行字元為 ^M$ ,我們稱為 CR 與 LF 兩個符號。 而在 Linux 底下,則是僅有 LF ($) 這個分行符號號。在 Linux 底下的指令在開始執行時,他的判斷依據是 『Enter』,而 Linux 的 Enter 為 LF 符號,由於 DOS 的分行符號號是 CRLF ,也就是多了一個 ^M 的符號出來,如果是一個 shell script 的程式檔案,將可能造成『程式無法執行』的狀態。我們可以通過以下指令來進行格式的轉換:

Bash代碼  
  1. # dos2unix [-kn] file [newfile]   
  2. # unix2dos [-kn] file [newfile]  

 -k 選項為保留該檔案原本的 mtime 時間 (不更新檔案上次內容經過修改的時間) ;-n 選項為保留原本的舊檔,將轉換後的內容輸出到新檔案。

 

21.  使用 iconv 這個指令來轉換檔的編碼:

Java代碼  
  1. # iconv --list   
  2. # iconv -f 原本編碼 -t 新編碼 filename [-o newfile]  

選項說明如下:

 

選項 功能
--list

列出 iconv 支援的語係數據

-f

from,後接原本的編碼格式

-t

to ,即後面的新編碼要是什麼格式

-o file

保留原本的檔案,使用 -o 新檔名,可以建立新編碼檔案。

 

如果要將繁體中文的 utf8 轉成簡體中文的 utf8 編碼時,可以這樣做:

Bash代碼  
  1. # iconv -f utf8 -t big5 vi.utf8 | \ > iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8  

22.  常見文字編輯器比較:http://encyclopedia.thefreedictionary.com/List+of+text+editors

       維基百科的文字編輯器比較:http://en.wikipedia.org/wiki/Comparison_of_text_editors

       關於 vim 是什麼的『中文』說明:http://www.vim.org/6k/features.zh.txt

       大家來學 vim (http://info.sayya.org/~edt1023/vim/)

       Linux Fedora 心得筆記: 繁體/簡體中文的轉換方法:http://blog.xuite.net/michaelr/linux/15650102

vim 程式編輯器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.