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...