天天看點

vim 筆記

這是我總結的一些基本用法,可能對初用者會有幫助,獨樂樂不如衆樂樂,是吧!

說明:以下黑色為vi和vim均有的一般功能,而紅色為Vim(Vi Improved)所特有功能。Vim一般的Unix和Linux下均有安裝。

 三種狀态

Command: 任何輸入都會作為編輯指令,而不會出現在螢幕上,任何輸入都引起立即反映

Insert: 任何輸入的資料都置于編輯寄存器,按ESC,可跳回command方式

Escape: 以“:”或者“/”為前導的指令,出現在螢幕的最下一行,任何輸入都被當成特别指令。

 離開vi

:q! 離開vi,并放棄剛在緩沖區内編輯的内容。

:wq 将緩沖區内的資料寫入磁盤中,并離開vi。

:x 同wq。

(注意—— :X 是檔案加密,一定要與:x存盤退出相差別)

 進入輸入模式

a (append) 由遊标之後加入資料。

A 由該行之末加入資料。

i (insert) 由遊标之前加入資料。

I 由該行之首加入資料。

o (open) 新增一行於該行之下供輸入資料之用。

O 新增一行於該行之上供輸入資料之用。

 删除與修改

x 删除遊标所在該字元。

X 删除遊标所在之前一字元。

r 用接於此指令之後的字元取代(replace)遊标所在字元。如:ra将遊标所在字元以 a 取代之。

R 進入取代狀态,直到《ESC》為止。

s 删除遊标

所在之字元,并進入輸入模式直到《ESC》。

S 删除遊标所在之該行資料,并進入輸入模式直到《ESC》。

 光标的移動

m<a-z> 設定書簽<a-z>

‘<a-z> 移至書簽<a-z>處

0 移至該行之首

$ 移至該行之末。

e 移動到下個字的最後一個字母

w 移動到下個字的第一個字母。

b 移動到上個字的第一個字母。

^ 移至該行的第一個字元處。

H 移至視窗的第一行。

M 移至視窗的中間那行。

L 移至視窗的最後一行。

G 移至該檔案的最後一行。

+ 移至下一列的第一個字元處。

- 移至上一列的第一個字元處。

:n 移至該檔案的第 n 列。

n+ 移至遊标所在位置之後的第 n 列。

n- 移至遊标所在位置之前的第 n 列。

<Ctrl><g> 顯示該行之行号、檔案名稱、檔案中最末行之行号、遊标所在行号占總行号之百分比。

(Vim) 光标移動基本用法小解:

(這隻要組合上邊的功能就可以明白了,不用再一一講解了吧!)

ge b w e

← ← ---→ --→

This is-a line, with special/separated/words (and some more).

←- ←-- -----------------→ ---→

GE B W E

 視窗的移動

<Ctrl><f> 視窗往下卷一頁。

<Ctrl><b> 視窗往上卷一頁。

<Ctrl><d> 視窗往下卷半頁。

<Ctrl><u> 視窗往上卷半頁。

<Ctrl><e> 視窗往下卷一行。

<Ctrl><y> 視窗往上卷一行。

 剪切、複制、删除

Operator + Scope = command

 Operator

d 剪切

y 複制。

p 粘帖,與 d 和 y 配和使用。可将最後d或y的資料放置於遊标所在位置之行列下。

c 修改,類似delete與insert的組和。删除一個字組、句子等之資料,并插入建立資料。

 Scope

e 由遊标所在位置至該字串的最後一個字元。

w 由遊标所在位置至下一個字串的第一個字元。

b 由遊标所在位置至前一個字串的第一個字元。

$ 由遊标所在位置至該行的最後一個字元。

0 由遊标所在位置至該行的第一個字元。

 整行動作

dd 删除整行。

D 以行為機關,删除遊标後之所有字元。

cc 修改整行的内容。

yy 使遊标所在該行複制到記憶體緩沖區。

 取消前一動作(Undo)

u 恢複最後一個指令之前的結果。

U 恢複遊标該行之所有改變。

(vim) u 可以多次撤消指令,一次撤消一個操作,直至本次操作開始為止。

(vim) Ctrl+r 可以恢複撤消前内容,按多次可恢複多次。

 查找與替換

/字串 往遊标之後尋找該字串。

?字串 往遊标之前尋找該字串。

n 往下繼續尋找下一個相同的字串。

N 往上繼續尋找下一個相同的字串。

% 查找“(”,“)”,“{”,“}”的配對符。

s 搜尋某行列範圍。

g 搜尋整個編輯緩沖區的資料。

:1,$s/old/new/g 将檔案中所有的『old』改成『new』。

:10,20s/^/ / 将第10行至第20行資料的最前面插入5個空白。

(vim)

/字元串 後邊輸入查詢内容可儲存至緩沖區中,可用↑↓進行以往内容選擇。

另外:将光标移動在標明單詞下方按*,則可以選中此單詞作為查詢字元,可以避免輸入一長串字元的麻煩。

 (vim) 大小寫替換

首先用按v開啟選擇功能,然後用↑↓←→鍵來標明所要替換的字元,若是小寫變大寫,則按U;反之按u;

如果是選擇單詞,則可以在按v後,按w,最後按U/u,這樣就可以将字元随意的改變大小寫了,而不用删除後重新敲入。

 資料的連接配接

J 句子的連接配接。将遊标所在之下一行連接配接至遊标該行的後面。

 環境的設定

:set all 可設定的環境變量清單

:set 環境變量的目前值

:set nu 設定資料的行号。

:set nonu 取消行号設定。

:set ai 自動内縮。

:set noai 取消自動内縮。

(vim)

:set ruler 會在螢幕右下角顯示目前光标所處位置,并随光移動而改變,占用螢幕空間較小,使用也比較友善,推薦使用。

:set hlsearch 在使用查找功能時,會高亮顯示所有比對的内容。

:set nohlsearch 關閉此功能。

:set incsearch 使Vim在輸入字元串的過程中,光标就可定位顯示比對點。

:set nowrapscan 關閉查找自動回環功能,即查找到檔案結尾處,結束查找;預設狀态是自動回環

 ex指令

 讀寫資料

:10,20w test 将第10行至第20行的資料寫入test檔案。

:10,20w>>test 将第10行至第20行的資料加在test檔案之後。

:r test 将test檔案的資料讀入編輯緩沖區的最後。

:e [filename] 編輯新的檔案。

:e! [filename] 放棄目前修改的檔案,編輯新的檔案。

:sh 進入shell環境,使用exit退出,回到編輯器中。

:!cmd 運作指令cmd後,傳回到編輯器中。

 删除、複制及搬移

:10,20d 删除第10行至第20行的資料。

:10d 删除第10行的資料。

:%d 删除整個編輯緩沖區。

:10,20co30 将第10行至第20行的資料複制至第30行之後。

:10,20mo30 将第10行至第20行的資料搬移至第30行之後。

繼續閱讀