天天看點

Vim的使用技巧---世上最好用的編輯器

願把每一件事做好

vim是一個模式化的編輯器,它一共有三種模式,編輯模式(指令模式)、輸入模式、末行模式。

三種模式之間的切換如下圖:

Vim的使用技巧---世上最好用的編輯器

vim.png

從圖中可以看出,可以在編輯模式下可以随意切換到輸入模式和末行模式,而輸入模式和末行模式隻能切換回編輯模式(指令模式)。

編輯模式(指令模式):

當使用vim編輯檔案時預設是在編輯模式下,按zz可以從編輯模式下退出vim,編輯模式的操作如下:

Motion Command

j :光标向下移動,一次移動一行。

k:光标向上移動,一次移動一行。

h:光标向左移動。

l:光标向右移動。

w:将光标移至下一個單詞的詞首

e:将光标移至目前或下一個單詞的詞尾

b:将光标移至目前或前一個單詞的詞首

0:将光标移至行首(絕對行首)

^:将光标移至行首的第一個非空白字元

$:絕對行尾

G:将光标移至最後一行

gg:将光标移至第一行

Ctrl+f:向下翻一頁

Ctrl+b:向上翻一頁

Ctrl+d:向下翻半頁

Ctrl+u:向上翻半頁

數字+[motion] 可以實作更快捷的跳轉例如:

#h:光标向左移動#位

#j :光标向下移動#行

#k:光标向上移動#行

#l:光标向右移動#行

#w:自光标所在位置單詞起,向後移動到第#個單詞的詞首

#e:自光标所在位置單詞起,向後移動到第#個單詞的詞尾

#b:自光标所在位置單詞起,向前移動到第#個單詞的詞尾

#G:将光标移至第#行

Edit Command

i:在目前光标所在字元的前面,轉為輸入模式

a:在目前光标所在字元的後面,轉為輸入模式

o:在目前光标所在行的下方,建立一行,并轉為輸入模式

I:在目前光标所在行的行首,轉換為輸入模式

A:在目前光标所在行的行尾,轉換為輸入模式

O:在目前光标所在行的上方,建立一行,并轉為輸入模式

.:重複前一次編輯操作

x:删除光标處字元

r:替換光标處字元

R:替換模式,相當于windows的insert模式

dd:删除一行

yy:複制一行

p:将此前删除或者複制了的文字粘貼到目前光标上一行。

P:将此前删除或者複制了的文字粘貼到目前光标下一行。

c:同d指令,隻是删除後進入輸入模式。

u:撤銷上一次操作

Ctrl+r:撤銷上一次撤銷

v:可視化操作,按字元選取

V:可視化操作,按行選取

數字+[edit]+[motion] 可以實作更快捷的操作例如:

#x:删除自光标起向後第#個字元。

#dw:删除自光标起第#個單詞,光标位于第#+1個單詞詞首

#de:删除自光标起第#個單詞,光标位于第#個單詞詞尾

#db:删除光标所在單詞以及前#-1個單詞 共#個單詞

#dd:删除包括目前光标所在行在内的#行

#d$:删除光标至行尾的所有字元

#d^:删除光标至行首第一個非空白字元的所有字元

#d0:删除光标至絕對行首的所有字元

輸入模式 :

進入輸入模式就可以對檔案進行編輯,按ESC可以回退到編輯模式(指令模式)。

末行模式 :

在編輯模式下按:可以切換到末行模式,末行模式的操作如下:

General Command

:q 不儲存退出

:wq 儲存退出

:x 儲存退出

:q! 不儲存退出 強行

:w 儲存

:w 路徑 :将檔案另存到另一個檔案

:w! 強行儲存 (管理者)

:r 路徑 :把檔案讀入目前光标位置

:! COMMAND:可執行shell指令

:#:輸入行号,回車即可跳轉到第#行

:StartADD,EndADDd:删除從StartADD開始至EndADD的所有文字;d表示删除

:StartADD,EndADDw 路徑:把從StartADD開始至EndADD的所有文字另存到另一個檔案中去;w表示寫

其中,StartADD和EndADD可以被替換為下面幾種通配符

. :表示目前行

$ :表示最後一行

+#:向下的#行

$-1:倒數第二行

例如:.,$d 表示删除從目前行起到最後一行。.,+2d 表示删除包括目前行以及向下的兩行。

Search Command

/PATTREN:順序周遊

?PATTERN:倒序周遊

n:下一個比對項

N:上一個比對項

Replace Command

:StartADD,EndADDs @PATTERN@string@gi:表示查找從StartADD開始至EndADD中所有比對的項,并把它替換為string;g表示全部替換(預設隻替換第一次比對到的項),i表示忽略大小寫

可以把StartADD,EndADD替換為%,表示全文搜尋替換

Configuration Command

set nu :顯示行号

set nonu:取消行号顯示

set ic :顯示忽略或區分大小寫字元

set ai:設定自動縮進

set noai:取消設定自動縮進

set hlsearch:查找到的文本高亮顯示

set nohlsearch:取消高亮顯示查找到的文本

syntax on :文法高亮

上面的配置隻對目前打開的vim生效,關閉之後再此打開又恢複到原樣,如果想一直生效,可以去/etc/vimrc或者~/.vimrc(沒有可建立)檔案裡進行配置

打開檔案

打開一個檔案

vim +# :打開檔案,并定位光标于第#行。

vim + :打開檔案,并定位光标于最後一行。

vim + /PATTERN :打開檔案,并定位光标于第一次被PATTERN比對到的行的行首。這裡PATTERN指的是正規表達式。

打開多個檔案
vim [option] FILE1 FILE2 FILE3..

-o:水準分割顯示檔案

-O:垂直分割顯示檔案

Ctrl+w+方向鍵可在分屏模式下切換光标

如果不加參數打開多個檔案

在末行模式下可進行下列操作

:next 切換至下一個檔案

:prev 切換至前一個檔案

:last 切換至最後一個檔案

:first 切換至第一個檔案

:qa 全部退出

Ctrl+w+s: 水準拆分視窗顯示

Ctrl+w+v: 垂直拆分視窗顯示

是不是感覺指令很多,不太容易記?哈哈哈,反複練習就很快能記住了。加油!!!

繼續閱讀