標籤:
1、vim ~/.vimrc 進入設定檔
如果不知道vimrc檔案在哪,可使用 :scriptnames 來查看
set nu #行號
set tabstop=4 #一個tab為4個空格長度
set ai #設定自動縮排
syntax on #高亮
2、基本
空格鍵 向右移動一格
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
輸入先面的單詞時,自動用後面的替換。
3、移動:
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行向右移動一段距離
4、小幅改動:
:%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是你希望一個縮排量代表的空格的數目.
{ = 到前一個空行上
} = 到下一個空行上
5、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跳轉後,可使用``回到上一次的位置,‘‘功能一樣,不過只是回到前次位置所在行的開頭,而不是確定的位置上。
vim 常用快速鍵