vim 經常使用快捷鍵(整理版)

最經常使用:html

x 刪除後面的字符 X 刪除前一個字符  刪除3個字符就是3x  編程

dd:刪除一行   D 刪除到行尾vim

J:刪除換行符,使下一行並上來。     nJ:鏈接後面的n行spa

u:撤銷上一次操做      U:撤銷當前行的全部修改插件

ctrl+r:對撤消的撤消htm

I 在行首插入 
a 在光標後插入blog

A 在行末插入ip

o:在當前行的下面另起一行,並變爲插入模式ci

O:在當前行上面另起一行,變爲插入模式字符串

vim中Nyy能夠複製光標後的N行。有時咱們不容易得出行數,這時能夠用作標記的方法來制定複製範圍: 
  1. 在開始行上輸入ma做一個標記a 
  2. 移動到結束行,輸入y'a會複製當前行到標記a之間的文本。d'a會刪除。 
或者是v進入可視模式,再13G跳轉到相應行,y便可。

將光標放在 { 處,而後輸入v%就能夠把大括號中內容選定

若是光標放在第一個s上,想刪除到「(」爲止,則輸入dt(就能夠了,t(的做用是跳到下一個"("前。

%: 移動到與制匹配的括號上去(),{},[],<>等

fx 向右跳到本行字符x處(x能夠是任何字符)

若是你要重複鍵入一個短語或一個句子, 也有一種快捷的方法。Vim有一種記錄宏的機制。你鍵入"qa"開始把一段宏記錄入寄存器變量`a'中。
按下來你能夠象日常同樣鍵入你要的操做, 只是這些操做都會被Vim記錄進它命名爲`a'的宏中, 再次再下"q"鍵, 就結束了宏`a'的錄製。當你要重複執行你剛纔記錄的那些操做時只要使用"@a"命令。共有26個可用的寄存器供你記錄宏。 使用宏你能夠重複多個不一樣的操做。而不只僅是插入文本了。若是你要進行某種重複的操做, 記着要用這一招呀。

:abbr hte the

:abbr hw Hello World

輸入先面的單詞時,自動用後面的替換。

 

b、3b、w、3w:向前\後移動幾個單詞,標點也算一個單詞。相應的大寫狀態爲不含標點,即只把空格和換行符做爲單詞間隔符。

$:移動到行尾  3$:移動到3行後的行尾

^:移動到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f:搜索命令,小寫時向後搜索(用來定位)如 fx:定位到下一個x上。   Fx:定位到上一個x上,重複時,可用;或,  不過 , 表示反方向

%:跳到相對應的括號上,編程時經常使用

33G:跳轉到33行   此時按``能夠返回到原來行

gg:文件頭   G: 文件尾

30%:跳轉到文件的30%處

"H"意爲Home, "M"爲Middle, "L"爲Last.  當前屏幕的上中下位置,大小寫皆可

Ctrl+G:顯示當前位置

 

ctrl+u\d  向上\下滾動半屏

ctrl+e\y  向上\下滾動一行

ctrl+b\f  向上\下滾動一屏  這個比較實用,記住。

zz:將當前行滾動於屏幕中間,方便查看上下文  zt置頂,zb置尾

/string  查找string,回車後,按n鍵能夠跳到下一個,N上一個,另外按/鍵後,按上下鍵能夠找到之前查找的記錄,一樣的 :也有記錄

?/string 同上,默認向上查找

:set ignorecase 大小寫無關

:set noignorecase 大小寫敏感

* :查找下一個光標所在單詞  #是查找上一個

 

 

一、vim ~/.vimrc 進入配置文件

若是不知道vimrc文件在哪,可以使用 :scriptnames 來查看

set nu      #行號

set tabstop=4  #一個tab爲4個空格長度

set ai  #設置自動縮進

syntax on   #高亮

二、基本(命令模式下

空格鍵 向右移動一格

x 刪除後面的字符 X 刪除前一個字符  刪除3個字符就是3x  

dd:刪除一行   D 刪除到行尾 

caw:改寫單詞  c 至關於 d 變爲編輯模式

J:刪除換行符,使下一行並上來。     nJ:鏈接後面的n行

u:撤銷上一次操做      U:撤銷當前行的全部修改

ctrl+r:對撤消的撤消

i 在光標前插入

I 在行首插入 
a 在光標後插入

A 在行末插入

o:在當前行的下面另起一行,並變爲插入模式

O:在當前行上面另起一行,變爲插入模式

Ctrl+o:臨時變成命令模式(一次而已)

:e!:放棄更改,而後至關於從新打開

:help:幫助,可用ZZ退出幫助窗口

vim中Nyy能夠複製光標後的N行。有時咱們不容易得出行數,這時能夠用作標記的方法來制定複製範圍: 

  1. 在開始行上輸入ma做一個標記a 

  2. 移動到結束行,輸入y'a會複製當前行到標記a之間的文本。d'a會刪除。 

或者是v進入可視模式,再13G跳轉到相應行,y便可

:10,20y    回車便可,相應的刪除也是如此     :10,20d     (此方法比上面兩種方法更簡單)

:10,20 m 30    把10行到20行的內容,剪切到30行以後

:10,20 co 30   把10行到20行的內容,複製到30行以後

將光標放在 { 處,而後輸入v%就能夠把大括號中內容選定

若是光標放在第一個s上,想刪除到「(」爲止,則輸入dt(就能夠了,t(的做用是跳到下一個"("前。

ctrl +n 自動補全 ctrl + p 也同樣

:ab hw hello world  用一個縮寫字符串代替一個長的字符串,此處用 hw 代替 hello world

%: 移動到與制匹配的括號上去(),{},[],<>等

' 移動到上一次的修改行

fx 向右跳到本行字符x處(x能夠是任何字符)
Fx 向左跳到本行字符x處(x能夠是任何字符)
tx 和fx相同,區別是跳到字符x前
Tx 和Fx相同,區別是跳到字符x後

# 到與當前單詞相同的上一個單詞上, * 到與當前單詞相同的下一個單詞上

若是你要重複鍵入一個短語或一個句子, 也有一種快捷的方法。Vim有一種記錄宏的機制。你鍵入"qa"開始把一段宏記錄入寄存器變量`a'中。
按下來你能夠象日常同樣鍵入你要的操做, 只是這些操做都會被Vim記錄進它命名爲`a'的宏中, 再次再下"q"鍵, 就結束了宏`a'的錄製。當你要重複執行你剛纔記錄的那些操做時只要使用"@a"命令。共有26個可用的寄存器供你記錄宏。 使用宏你能夠重複多個不一樣的操做。而不只僅是插入文本了。若是你要進行某種重複的操做, 記着要用這一招呀。

:abbr hte the

:abbr hw Hello World

輸入先面的單詞時,自動用後面的替換。

三、移動:

b、3b、w、3w:向前\後移動幾個單詞,標點也算一個單詞。相應的大寫狀態爲不含標點,即只把空格和換行符做爲單詞間隔符。

$:移動到行尾  3$:移動到3行後的行尾

^:移動到行首,0也是

+:移到下一行的行首

-: 移到上一行的行首

f:搜索命令,小寫時向後搜索(用來定位)如 fx:定位到下一個x上。   Fx:定位到上一個x上,重複時,可用;或,  不過 , 表示反方向

%:跳到相對應的括號上,編程時經常使用

33G:跳轉到33行   此時按``能夠返回到原來行

gg:文件頭   G: 文件尾

30%:跳轉到文件的30%處

"H"意爲Home, "M"爲Middle, "L"爲Last.  當前屏幕的上中下位置,大小寫皆可

Ctrl+G:顯示當前位置

set number:設置顯示行號,set nonumber:關閉顯示

:set ruler 設置在窗口右下角顯示行號,與上面的好處是,節省空間

ctrl+u\d  向上\下滾動半屏

ctrl+e\y  向上\下滾動一行

ctrl+b\f  向上\下滾動一屏  這個比較實用,記住。

zz:將當前行滾動於屏幕中間,方便查看上下文  zt置頂,zb置尾

/string  查找string,回車後,按n鍵能夠跳到下一個,N上一個,另外按/鍵後,按上下鍵能夠找到之前查找的記錄,一樣的 :也有記錄

?/string 同上,默認向上查找

:set ignorecase 大小寫無關

:set noignorecase 大小寫敏感

* :查找下一個光標所在單詞  #是查找上一個

:set hlsearch  高亮顯示查找結果

:set nohlsearch  取消高亮

:nohlsearch  去掉當前顯示的高完(一次性)

 `` 上次光標停靠的行

% 匹配到相應括號處

>>   向右移動本行一段距離     <<   向左移動本行一段距離    3<<    把下面3行(包括本行),向左移動一段距離     :20,30>>  把20行到30行向右移動一段距離

 

 

四、小幅改動:

:%s/str1/str2/g   替換每一行的 str1爲 str2

:10,20s/str1/str2/g   替換從行10到行20之間的 str1爲 str2

:10,$s/str1/str2/g   替換從行10到最後一行之間的 str1爲 str2

:s/str1/str2/g   替換當前行的 str1爲 str2

.  重複執行命令 

:10,$ w test2.cpp     取行10到最後一行內容,保存到test2.cpp

:r class/User.hpp    讀取文件中的內容,插入到當前行的後面

dw:刪除一個單詞(光標後部分)  不如:daw實用    d4w:刪除4個單詞    d$:刪除當前光標到行尾    d^:刪除當前光標至行首       d換成c效果是同樣的,只是操做完會變成insert模式   dnw: 刪除N個單詞   dnj: 向下刪除n行      dnk: 向上刪除n行 

X:刪除左邊的字符,至關於<-鍵,x刪除當前字符  D:至關於d$  C:至關於c$  s:至關於c1  S:至關於cc

r:替換當前字符,但不會進入insert模式    3r:把後面3個字符替換掉    R:替換模式

.:重複上一次操做

v:進入Visual模式    V:進入可視行模式,好比 Vjjd 刪除3行  Ctrl+v:可視塊模式

P:粘貼至光標前    p:粘貼至光標後    3P:粘貼3次      "2p     粘貼最後第二次的刪除的內容

yy:複製一行  yaw: 複製一個單詞,光標在單詞任意位置    ynw: 複製N個單詞       ynj: 向下複製n行          ynk: 向上複製n行  

自動縮進:

:set cindent(全部的set均可以簡寫爲se,雖然只節省了一個字符, 譯者注) 須要注意的是cindent控制縮進量是經過shiftwidth選項的值, 而不是經過tabstop 的值, shiftwidth的默認值是8(也就是說, 一個縮進爲8個空格, 譯者注), 要改變默認的設置, 可使用":set shiftwidth=x"命令, 其中x是你但願一個縮進量表明的空格的數目.

 { = 到前一個空行上
} = 到下一個空行上

 

 五、VIM的一些插件:

c.vim :若是是用root帳號的,把文件複製到/usr/share/vim/vim70中解壓沒有用的,不存在 $HOME/.vim 這個目錄,沒辦法,只能新建個目錄,而後把壓縮包cp到這個目錄,再unzip便可。在 ~/.vimrc 中 寫入 filetype plugin on 

 

:e!   返回上次保存後的狀態

Ctrl+z:暫停vi,回到Unix提示符,再輸入fg便可回到vi。

 ^回到行首,光標位於行首字母處;0回到行首,光標位於行首字母前。$回到行尾,光標位於行尾字母處。

nb:向前移動n個單詞,nw:向後移動n個單詞。光標位於單詞的第一個字母處。 nw這個操做很慢,不知何故。 以空格、標點符號與單詞的分界爲分隔符。(幾個連續的標點視爲一個單詞)

一樣的,也可使用nB,nW,只是這裏只使用空格作爲分隔符。

相換兩個相鄰字母的位置:x、p

s:刪除一個字符,並進入編輯模式。 S:刪除一整行,進入編輯模式,至關於cc。   ns:刪除後面n個字符,並進入編輯模式。

~:更改字母的大小寫,同時光標進入到下一個字符。  n~:把後面n個字母的大小寫狀態改變。

dw:刪除單詞後面部分     db:刪除單詞前面部分。  若是要刪除整個單詞(光標位於單詞中間的話),能夠 dbw\wdb

de:相似於dw,刪除單詞後面的部分(只刪除到本單詞結尾,dw會刪除掉單詞後面的空格)   dE:刪除的範圍包括標號在內的單詞結尾。

e:至關於w,向後移動一個單詞。不一樣的是,w移動到單詞第一個字符上,e移動到單詞最後一個字符上。  因此ea,能夠給本單詞追加內容。

D:d$ 的簡寫,一樣的,C:c$的簡寫。

U:會恢復一整行原先的面貌,即最原始的樣子。

Y:至關於yy,不一樣於D與C的操做方法。

.:重複上一個命令。

除了O/o,插入命令(A,a,I,i)接受數值參數,如:5Ihello,而後按ESE鍵。會在行首輸入5個鏈接的hello

nr:替換後面n個字符。

nJ:合併下面的n行(從本行算起)。

ynl:向後複製n個字符。

e/E:到單詞的結尾。

 

滾動整屏:

^f:向前(下)一整屏

^b:向後(上)一整屏

^d:向前(下)一半屏

^u:向後(上)一半屏

z,Enter:將光標所在行移動到屏幕頂部(同於zz)

z.:將光標所在行移動到屏幕中間

z-:將光標所在行移動到屏幕尾部

nz,Enter:將第n行移動到屏幕頂部,一樣的,z. 與 z- 前也能夠加數字。

 

在屏幕中移動:

H、M、L分別移動到屏幕的頂部、中間和尾部。

nH、nL 移動到距離屏幕頂部和頂部n行的位置。

 

 Enter:到下一行的第一個字符。

+:到下一行的第一個字符。

-:到上一行的第一個字符。

n|:移動到當前行的第n列

e:移到單詞的結尾

E:移到單詞的結尾(忽略標點符號)

(   )   {   }  [[  ]] 這幾個對編程做用不大,可忽略。

d/it:向後刪除到it以前的位置(不刪it)。    d?it:向前刪除到it以前的位置(刪除it)。

 

 fx:本行中向右搜索x,光標置於x上。  Fx:向左搜索。; 重複上一個搜索命令,方向相同。   ,重複上一個搜索命令,方向相反。

tx:同fx,只是光標置於x以前。 Tx相似。

dfi:向右刪除第一個i的位置(包括i)  dti:同dfi,只是不包括i

Ctrl+G 查看當前行信息

nG跳轉後,可以使用``回到上一次的位置,''功能同樣,不過只是回到前次位置所在行的開頭,而不是肯定的位置上。

 

刪除包含keyword字符串的行: :g/keyword/d

刪除空行::%s/^\n$//g

 

參考:http://www.cnblogs.com/tianyajuanke/archive/2012/04/25/2470002.html

相關文章
相關標籤/搜索