Vim使用總結

2021-09-08 00:01:39 字數 4381 閱讀 3822

前言

vim是乙個超級牛的編輯器,可以說是專為程式設計師設計的編輯器,強大的有些不可思議

vim的牛b之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在於這些命令大都可以進行組合

, 比如,9yy命令表示複製9行內容,9表示要複製的行數,同樣100dd表示刪除100行,當數字和命令合作的時候,就比單純的命令更強大,同樣,c命令 表示擦除,w表示word即單詞,那麼cw就表示擦除乙個單詞,c5w就表示刪除5個單詞等等。將這些簡單命令合成在一起,就可以發揮出難以想象的強大功 能,而且可以使你的編輯工作充滿樂趣。

高階一些的編輯器,都會包含巨集功能,vim當然不能缺少了,在vim中使用巨集是非常方便的:

:qx開始記錄巨集,並將結果存入暫存器x

q退出記錄模式

@x稍微解釋一下,當在normal模式下輸入:qx後,你對文字的所有編輯動作將會被記錄下來,再次輸入q即退出了記錄模式,然後輸入@x對剛才記錄 下來的命令進行重複,此命令後可跟數字,表示要重複多少次,比如@x20,可以重複20次。這個在文字的批處理中是非常有用的。

在vim眾多的外掛程式中,有乙個叫minibuffer的外掛程式,就是下面所說的標籤頁功能了,可以支援同時編輯多個檔案。

:tabe fn

在乙個新的標籤頁中編輯檔案fn

gt切換到下乙個標籤頁

gt切換到上乙個標籤頁

:tabr

切換到第乙個標籤頁

:tabl

切換到最後乙個標籤頁

:tabm [n]

把當前tab移動到第n個tab之後

對,正如你所想象的那樣,跟eclipse, ue等的標籤頁是乙個意思!

ctrl+w s

水平分割視窗

ctrl+w w

切換視窗

ctrl+w q

退出當前視窗(由於同時有多個檔案,此命令不會影響其他視窗)

ctrl+w v

垂直分割視窗

vim在儲存之前不會對檔案做實際的修改,只是載入到緩衝區中,對檔案的編輯其實是對緩衝區的編輯,直到:w時才會存入物理檔案。

:e file

把file載入到新的緩衝區中

:bn跳轉到下乙個緩衝區

:bd刪除緩衝區(關閉檔案)

:sp fn

分割視窗,並將fn載入到新的視窗中

:w將緩衝區寫入檔案,即儲存修改

:wq儲存修改並退出

:x儲存修改並退出

:q退出,如果對緩衝區進行過修改,則會提示

:q!強制退出,放棄修改

/pattern

向後搜尋字串pattern

?pattern

向前搜尋字串pattern

n下乙個匹配(如果是/搜尋,則是向下的下乙個,?搜尋則是向上的下乙個)

n上乙個匹配(同上)

:%s/old/new/g

搜尋整個檔案,將所有的old替換為new

:%s/old/new/gc

搜尋整個檔案,將所有的old替換為new,每次都要你確認是否替換

dd刪除游標所在行

dw刪除乙個字(word)

x刪除當前字元

x刪除前乙個字元

d刪除到行末

yy複製一行,此命令前可跟數字,標識複製多行,如6yy,表示從當前行開始複製6行

yw複製乙個字

y$複製到行末

p貼上貼上板的內容到當前行的下面

p貼上貼上板的內容到當前行的上面

]p有縮排的貼上,vim會自動調節**的縮排

"a將內容放入/存入a暫存器,可以支援多貼上板

附:比如常用的乙個暫存器就是系統暫存器,名稱為+,所以從系統貼上板貼上到vim中的命令為"+p,注意此處的+不表示操作符,二十乙個暫存器。

在vim中移動游標跟其他的編輯器中有很大的區別,不過一旦學會了,就會飛速

h,j,k,l

上,下,左,右

ctrl-f

上翻一頁

ctrl-b

下翻一頁

%跳到與當前括號匹配的括號處,如當前在處

w跳到下乙個字首,按標點或單詞分割

w跳到下乙個字首,長跳,如end-of-line被認為是乙個字

e跳到下乙個字尾

e跳到下乙個字尾,長跳

b跳到上乙個字

b跳到上乙個字,長跳

0跳至行首,不管有無縮排,就是跳到第0個字元

^跳至行首的第乙個字元

$跳至行尾

gg跳至檔案的第一行

gd跳至當前游標所在的變數的宣告處

[n]g

跳到第n行,如0g,就等價於gg,100g就是第100行

fx在當前行中找x字元,找到了就跳轉至

;重複上乙個f命令,而不用重複的輸入fx

tx與fx類似,但是只是跳轉到x的前乙個字元處

fx跟fx的方向相反

),(跳轉到上/下乙個語句

*查詢游標所在處的單詞,向下查詢

#查詢游標所在處的單詞,向上查詢

`.跳轉至上次編輯位置

h移動游標到當前螢幕上最上邊的一行

m移動游標到當前螢幕上中間的一行

l移動游標到當前螢幕上最下邊的一行

ma把當前位置存成標籤a

`a跳轉到標籤a處

r替換乙個字元

j將下一行和當前行連線為一行

cc刪除當前行並進入編輯模式

cw刪除當前字,並進入編輯模式

c$擦除從當前位置至行末的內容,並進入編輯模式

s刪除當前字元並進入編輯模式

s刪除游標所在行並進入編輯模式

xp交換當前字元和下乙個字元u撤銷

ctrl+r重做.

重複上乙個編輯命令

~切換大小寫,當前字元

g~iw

切換當前字的大小寫

guiw

將當前字變成大寫

guiw

將當前字變成小寫

>>

將當前行右移乙個單位

<<

將當前行左移乙個單位(乙個tab符)

==自動縮排當前行

i從當前游標處進入插入模式

i進入插入模式,並置游標於行首

a追加模式,置游標於當前游標之後

a追加模式,置游標於行末

o在當前行之下新加一行,並進入插入模式

o在當前行之上新加一行,並進入插入模式

esc退出插入模式

v進入可視模式,單字元模式

v進入可視模式,行模式

ctrl+v

進入可視模式,列模式

o跳轉游標到選中塊的另乙個端點

u將選中塊中的內容轉成大寫

o跳轉游標到塊的另乙個端點

aw選中乙個字

ab選中括號中的所有內容,包括括號本身

ab選中{}括號中的所有內容

ib選中括號中的內容,不含括號

ib選中{}中的內容,不含{}

>

塊右移<

塊左移y

複製塊d

刪除塊~

切換塊中內容的大小寫

vim 刪除

x    刪除游標下的字元 ("dl" 的縮寫)

x    刪除游標前的字元 ("dh" 的縮寫)

d    從當前位置刪除到行尾 ("d$" 的縮寫)

dw    從當前位置刪除到下乙個單詞開頭

db    從當前位置刪除到前乙個單詞的開頭

diw    刪除游標上的單詞 (不包括空白字元)

daw    刪除游標上的單詞 (包括空白字元)

dg    刪除到檔案末

dgg    刪除到檔案首

"dl"    刪除字元 (縮寫: "x")            |dl|

"diw"    刪除內含單詞                *diw*

"daw"    刪除乙個單詞                *daw*

"diw"    刪除內含字串 (見 |word|)        *diw*

"daw"    刪除乙個字串 (見 |word|)        *daw*

"dd"    刪除一行                |dd|

"dis"    刪除內含句子                *dis*

"das"    刪除乙個句子                *das*

"dib"    刪除內含 '(' ')' 塊            *dib*

"dab"    刪除乙個 '(' ')' 塊            *dab*

"dip"    刪除內含段落                *dip*

"dap"    刪除乙個段落                *dap*

"dib"    刪除內含 '' 大塊            *dib*

"dab"    刪除乙個 '' 大塊            *dab

VIM使用總結

一 關於如何搭建成ide可以參考下面兩篇文章 2.vi vim使用高階 目錄 add 把vim打造成ide 整理,修訂 對si比較熟悉的,可以看看下面這篇,有si和vim功能的對比 從source insight到vim 二 新建乙個工程需要執行的操作 1.cscope rbq 生成cscope.i...

Vim使用總結

前言vim是乙個超級牛的編輯器,可以說是專為程式設計師設計的編輯器,強大的有些不可思議 不過其學習曲線稍顯陡峭,前兩天在網上找到乙個小圖表,比較全,如果對錶中所列的命令學習熟悉以後,處理日常的文字就已經足夠,所以貼出來,大家參考參考。vim的牛b之處不在於其功能之繁多,更不在於其學習曲線之陡峭,而在...

vim使用總結

1.vim 將檔案從dos格式轉換到unix格式 vim file.txt set fileformat unix w2.刪除文字中的 m 三種行尾格式如下 unix n dos r n mac r 這意味著,如果你試圖把乙個檔案從一種系統移到另一種系統,那麼你就有換行符方面的麻煩。因為ms dos...