vim初步 基礎命令

2021-08-27 07:42:55 字數 4477 閱讀 8368

linux最常見常用的編輯器肯定是vi了,這個編輯器的歷史可以追溯到上個世紀unix的年代。

vim的意思是vi improved,顯然,是從vi發展過來的了,所以輸入方式相當的接近(並不完全一致)。這裡介紹的命令是基於vim 7.3的版本。

1. vim的模式

vim是分成各種各樣的模式的,各有各的作用,最常見的包括:普通模式,命令模式,插入模式,可視模式等

普通模式不用介紹了,就是開啟檔案時的模式,可以閱讀不能編輯,vim提供了一大堆快捷鍵幫助你控制游標,讓你可以快速的定位位置以及跳來挑去。

插入模式就是開始編輯,vim預設你是在閱讀並非是編寫,你必須主動通知它你要開始輸入他才會跳到編輯模式(否則**有那麼多快捷鍵好使呢),這點很多習慣windows下的ide編輯的人剛轉到vim是不習慣的,這個只能靠多使用來熟悉了。

命令模式是指在編輯器最下面一行可以輸入命令,讓編輯器做各種各樣的事情(你甚至可以執行shell命令),切換到這個命令需要輸入:,一般都是先狂按esc鍵然後輸入:來輸入命令。

可視模式是指輸入v之後進入的模式,這個可以方便的用來選中你需要的塊內容。

2. 各個模式下的常用命令

2.1 普通模式

這個模式下快捷鍵最多了,vim提供了相當強大的各種各樣的方法讓你閱讀**。

hjkl這四個是標準鍵,用來控制游標上下左右移動的,所有用vi的人都應該知道,如果你不習慣你應該多使用使用,沒其他的方法。這裡補一句,雖然網上的文章從沒看到過推薦,但上下左右鍵本身確實也可以控制游標,如果實在不習慣,那麼。。。

)移動游標到下乙個句子

(移動游標到上乙個句子

x 刪除當前字元,可以使用數字來修飾實現多個字元刪除

x 刪除游標左邊的乙個字元

d 刪除到行尾

c 修改到行尾

s 修改乙個字元

s 修改一整行

dd 刪除一行

cc 剪下當前行並進入插入模式

yy copy當前行

r 替換當前字元

r 進入替換模式,直到esc結束

. 重複最後一次的修改操作

u 撤銷上次操作 u 撤銷本行的所有操作

ctrl_r 恢復上次操作

w 跳到下乙個單詞的第乙個字元

b 跳到上乙個單詞的第乙個字元

e 跳到下乙個單詞的最後乙個字元

ge 跳到上乙個單詞的最後乙個字元

$ 跳到行末尾

^ 跳到行頭(第乙個非空格字元)

0 跳到行頭(第乙個字元)

f? 向後搜尋?字元,游標在?字元處

f? 向前搜尋?字元,游標在?字元處

t? 向後搜尋?字元,游標在?字元前

t? 向前搜尋?字元,游標在?字元前

% 匹配括號,如果有數字,比如:50%,則意思是跳到文章的50%的地方

g 跳到檔案尾,如果有數字,比如:33g,則意思是跳到33行

gg 跳到檔案頭

h 游標跳轉到螢幕上面

m 游標跳轉到螢幕中間

l 游標跳轉到螢幕下面

ctrl_g 顯示當前編輯資訊,在ruler關閉的情況下特別有用

ctrl_u 向上翻半屏

ctrl_d 向下翻半屏

ctrl_e 向上滾動一行

ctrl_y 向下滾動一行 (windows下不是這個意思)

ctrl_f 向上翻一屏

ctrl_b 向下翻一屏

ctrl_o 跳轉到較老的乙個地方

ctrl_i 跳轉到較新的乙個地方

zz 當前游標行移動螢幕中間

* 當前游標的字串向下搜尋,程式設計很有用

# 當前游標的字串向上搜尋,程式設計很有用

2.2 命令列模式

2.3 可視模式

這個其實和普通模式沒有太大區別,往往進入可視模式是為了選中一段區域,後續可以剪下/複製/貼上。

進入可視模式後,操作游標時,從起始點到當前光標點的內容會被高亮顯示,此時:

d:剪貼選擇的內容到剪貼簿。

y:拷貝選擇的內容到剪貼簿。

c:剪貼選擇的內容到剪貼簿並且進入插入模式。

o:可視模式下,o是移動到選中的另一端

選中之後的貼上命令:

p:貼上

p:貼上,但貼到游標前面

需要特別指出的是ctrl_v是按塊選擇,可以選擇乙個矩形塊並且矩形塊內文字會高亮,貼上也是成塊的,這個功能在複製**時非常強大

2.4 插入模式

i:在當前游標之處開始插入,當前游標處的字元會向後移動

i:在當前行首插入

a:在當前游標之後開始插入,當前游標處的字元是不移動位置的

a:在當前行尾插入

o:在當前游標的下一行建立乙個新行,並進入插入模式

o:在當前游標的上一行建立乙個新行,並進入插入模式

~:修改游標下字元的大小寫,並移動到下乙個字元。

c:刪除 motion 命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的字元並且進入插入模式。ct!,這會刪除從游標位置到下乙個嘆號(但不包括),然後進入插入模式。被刪除的字元被存在了剪貼簿裡面,並且可以再貼上出來。

d:和上面差不多,但是不進入插入模式。

y:和上面差不多,不過是拷貝

3. 其他

vim除了按步就班之外,還有不少方便靈活的小功能。

3.1 書籤

書籤可以比較方便的記錄位置供日後跳轉,並且在vim中沒有gui上的顯示,vim中書籤是單個小寫字母a~z

ma: 標記書籤a,其中a為書籤的名字,可以是a~z

`a:跳轉到書籤

'a: 跳轉到書籤所在行

`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它。

:marks取得所有的標記

另外還有一些特殊的標記,包括:

' 跳轉前的位置

" 最後編輯的位置

[ 最後修改的位置的開頭

] 最後修改的位置的結尾

這樣的書籤只能在本檔案編輯時使用,如果想在檔案中標記跳轉,那麼需要使用大寫的書籤,比如ma

3.2 暫存器

很多編輯器都只提供了乙個剪貼簿。vim 有很多。剪貼簿在 vim 裡面被稱為暫存器(registers)

:reg 列出當前定義的所有暫存器名和內容

使用暫存器的命令為雙引號 ",比如:我們要拷貝當前行到暫存器 k。你應該按 "kyy。然後可以使用命令 "kp 來貼上暫存器 k 裡面的內容到你想要的位置

3.3 錄製巨集

有時候,你會發現你自己在文章的每段或者每行都重複相同的一系列動作。vim 允許你記錄乙個巨集來完成你的特殊需要。

這個錄製分成3步走:

1. "q" 命令啟動一次擊鍵記錄,結果儲存到 指定的暫存器中。

暫存器名可以用 a 到 z 中任乙個字母表示。比如 qa,將會記錄並且把巨集存在暫存器 a 裡面。

2. 輸入你的命令

3. 鍵入 q(後面不用跟任何字元)命令結束記錄。

@register:使用存在暫存器 register 的巨集。比如 @a,將會使用存在暫存器 a 裡面的巨集

3.4鍵盤對映

對映可以使你把一系列 vim 命令繫結為乙個單鍵。假設你要用乙個大括號將乙個特定的單詞括起來。例如,把 "amount" 變成 ""。用 ":map" 命令,就可以讓 f5 來完成這個工作。命令如下:

:map i

在這個例子中,觸發器是乙個單鍵;它還可以是任何字串。但若你使用乙個已經存在的 vim 命令,該命令將不在有效。所以你最好避免出現這種情況。

乙個可用於對映的鍵是反斜槓。因為你很可能想定義多個對映,那就加上另乙個字元。你可以對映 "\p" 為在單詞兩端加園括號,而對映 "\c" 為加花括號,例如:

:map \p i(ea)

:map \c i

你需要在敲入\後,立即敲入p,以便 vim 知道它們組成乙個命令。

":map" 命令(無引數)列出當前已定義的對映,至少會包括普通模式下的那些。

3.5外掛程式

vim 可以通過外掛程式增強功能。外掛程式其實是乙個當 vim 啟動的時候能被自動執行的指令碼。

簡單地把外掛程式放到你 vim 的 plugin 目錄中就可以使它生效。unix下外掛程式目錄是~/.vim/plugin/

3.6分割視窗

這是vim乙個很強大的特性,使用起來非常非常的酷,參照檔案內容編碼時尤其有用

:split 分割視窗,這個是水平分割視窗的

:vsplit 分割視窗,這個是豎直分割視窗的

:close 關閉視窗

:only 僅編輯乙個視窗

ctrl-w w 命令可以用於在視窗間跳轉。

要擴大視窗:

ctrl-w +

要縮小視窗:

ctrl-w -

ctrl-w h 跳轉到左邊的視窗

ctrl-w j 跳轉到下面的視窗

ctrl-w k 跳轉到上面的視窗

ctrl-w l 跳轉到右邊的視窗

ctrl-w t 跳轉到最頂上的視窗

ctrl-w b 跳轉到最底下的視窗

當然,vim還有非常豐富的內容,有很多的外掛程式可以挑選,完成各種各樣的功能,如果挑選一下使用熟練的話,編輯起來必然事半功倍。

vim初步 基礎命令

linux最常見常用的編輯器肯定是vi了,這個編輯器的歷史可以追溯到上個世紀unix的年代。vim的意思是vi improved,顯然,是從vi發展過來的了,所以輸入方式相當的接近 並不完全一致 這裡介紹的命令是基於vim 7.3的版本。1.vim的模式 vim是分成各種各樣的模式的,各有各的作用,...

vim基礎命令

命令模式 i 游標前 a 游標後 o 下一行 i 行首 a 行尾 o 上一行 編輯 插入 模式 esc 命令模式 末行模式 esc或者ctrl 命令模式 yy 複製指定行 4yy 複製下面四行 p 貼上 dd 剪下指定行 2dd 剪下下面兩行 h 左j 下 k 上l 右 m 中間 l 底部 h 頂部...

vim基礎命令

不定時更新 i 普通插入 a 從下乙個字元處插入 o 從下一行插入 i 在本行首插入 a 在本行尾插入 o 游標處插入新行 x 刪除游標所在字元 nx 刪除後面n個字元 dd 用來刪除本行 dg 刪除到文尾 d 刪除到行尾 yy 複製本行 nyy複製從本行開始的往下n行 dd 剪下 p 向下貼上 p...