作者:gnuhpc http://blog.csdn.net/gnuhpc/
1.移動游標
在當前行裡面有效移動游標,注意這些字母都可以配合刪除、移動等操作。
fx:移動游標到當前行的下一個 x 處。很明顯,x 可以是任意一個字母,而且你可以使用 ; 來重複你的上一個 f 命令。
tx:和上面的命令類似,但是是移動到 x 的左邊一個位置。(這真的很有用)
Fx:和 fx 類似,不過是往回找。
% 跳轉到配對的括弧去
[[ 跳轉到代碼塊的開頭去(但要求代碼塊中'{'必須單獨佔一行)
w:游標往前移動一個詞。
b:游標往後移動一個詞。
0:移動游標到當前行首。
^:移動游標到當前行的第一個字母位置。
$:移動游標到行尾。
):移動游標到下一個句子。
( :移動游標到上一個句子。
'' 跳轉到游標上次停靠的地方, 是兩個', 而不是一個"
gd 到達游標所在處函數或者變數的定義處。
gf 跳轉到相應的標頭檔。無法找出標頭檔的解決方案是:set path+=xxx,xxx是標頭檔所在目錄。
K 在 Man 裡面尋找游標當前所在處的詞。
Ctrl+b:向下移動一屏。
Ctrl+f:向上移動一屏。
G:到檔案尾
numG:移動游標到指定的行(num)。(比如 10G 就是到第 10 行)
gg:到檔案首
H:移動游標到螢幕上面
M:移動游標到螢幕中間
L:移動游標到螢幕下面
*:讀取游標處的字串,並且移動游標到它再次出現的地方。
#:和上面的類似,但是是往反方向尋找。
j 向下
k 向上 k
l 向右 h l ==> hjkl <=>左下上右
h 向左 j
2.尋找
/pattern:從游標開始處向檔案尾搜尋pattern
?pattern:從游標開始處向檔案首搜尋pattern
n:在同一方向重複上一次搜尋命令
N:在反方向上重複上一次搜尋命令
:s/源串/目標串/g 替換當前行中所有合格字串
:行號1,行號2s/源串/目標串/g 在指定行中進行替換
:%s/源串/目標串/g 全文替換
ma:在當前游標的位置標記一個書籤,名字為 a。書籤名只能是小寫字母。你看不見書籤的存在,但它確實已經在那裡了。
`a:到書籤 a 處。注意這個不是單引號,它一般位於大部分鍵盤的 1 的左邊。
`.:到你上次編輯檔案的地方。這個命令很有用,而且你不用自己去標記它。
:marks 查看標記列表
3.複製粘貼剪下
有效移動大段的文本
v:按字元選擇。
V:按行選擇。這在你想拷貝或者移動很多行的文本的時候特別有用。
Ctrl +v:按塊選擇。
vi[ 選擇一對 [] 中的所有字元
vi( 選擇一對 () 中的所有字元
vi< 選擇一對 <> 中的所有字元
vi{ 選擇一對 {} 中的所有字元
vit 選擇一對 HTML/XML 的標籤內部的所有字元
在選擇模式的時候使用上面所述的方向鍵和命令(motion)。比如,vwww,會高亮游標前面的三個詞。Vjj 將會高亮當前行以及下面兩行。
一旦你高亮了選區,你或許想進行一些操作:
d:剪貼選擇的內容到剪貼簿。
y:拷貝選擇的內容到剪貼簿。
c:剪貼選擇的內容到剪貼簿並且進入插入模式。
如果你很清楚的知道你想拷貝或者剪下什麼,那你根本就不需要進入可視選擇模式。這樣也會節省時間:
d{motion}:剪下 motion 命令跨過的字元到剪貼簿。比如,dw 會剪下一個詞而 dfS 會將從當前游標到下一個 S 之間的字元剪下至剪貼簿。
y{motion}:和上面類似,不過是拷貝。
c{motion}:和 d{motion} 類似,不過最後進入插入模式。
dd:剪下當前行。
yy:拷貝當前行。
cc:剪下當前行並且進入插入模式。
D:剪下從游標位置到行尾到剪貼簿。
C:和 D 類似,最後進入插入模式。
x:剪下當前字元到剪貼簿。
:和x類似,不過最後進入插入模式。
y+w 複製游標所在的位置到整個單詞所在的位置
使用多重剪貼簿
很多編輯器都只提供了一個剪貼簿。VIM 有很多。剪貼簿在 VIM 裡面被稱為寄存器(Registers)。你可以列出當前定義的所有寄存器名和它們的內容,命令為":reg"。最好使用小寫字母來作為寄存器的名稱,因為大寫的有些被 VIM 佔用了。使用寄存器的命令為雙引號 "。
比如:我們要拷貝當前行到寄存器 k。你應該按 "kyy。(你也可以使用 V"ky。為什麼這樣也可以呢?)現在當前行應該已經存在了寄存器 k 裡面直到你又拷貝了一些東西進入寄存器 k。現在你可以使用命令 "kp 來粘貼寄存器 k 裡面的內容到你想要的位置。
"ayy 將當前行複製到寄存器 a 中
"ap 將寄存器 a 中的內容粘貼到游標之後
l :registers 查看所有寄存器的內容
l 通常情況下,寄存器 + ( " + Shift+= )對應X下的剪貼簿。您在其它程式中複製的內容,可以使用 "+p 粘貼到Vim中;您在Vim中,可以使用 "+y 將內容複寫到剪貼簿,再粘貼到其它程式中
l 沒有指定寄存器時,Vim使用“無名寄存器”儲存內容
4.刪除(c命令和d命令就差一個插入操作)
c{motion}:刪除 motion
命令跨過的字元,並且進入插入模式。比如:c$,這將會刪除從游標位置到行尾的字元並且進入插入模式。ct!,這會刪除從游標位置到下一個歎號(但不包
括),然後進入插入模式。被刪除的字元被存在了剪貼簿裡面,並且可以再粘貼出來。
例如:cw:刪除游標所在處的詞並插入。(c —— change)
d{motion}:和上面差不多,但是不進入插入模式。
vim中常用的刪除文本命令:
c+c 刪除所在行,並插入
d+d 連按兩次d,可將游標所在的行刪除,若連續刪除,可以按住d不放
d+w 刪除游標所在的單詞,若是游標在兩字之間,則刪游標後的一個詞
D 將游標所在行後面所有的單詞刪除
x 將游標所在位置後一個字元刪除
X 將游標所在位置前一個字元刪除
daw 刪除游標下的普通單詞以及其後的空格
ciW 刪除游標下的以空格分隔的“單詞”並進入插入模式 (i 表示 inner,不刪除單詞後的空格)
ci[ 刪除一對 [] 中的所有字元並進入插入模式
ci( 刪除一對 () 中的所有字元並進入插入模式
ci< 刪除一對 <> 中的所有字元並進入插入模式
ci{ 刪除一對 {} 中的所有字元並進入插入模式
cit 刪除一對 HTML/XML 的標籤內部的所有字元並進入插入模式
5.插入
vim中命令列模式切換到輸入模式,進行插入:
i:在當前字元的左邊插入
I:在當前行首插入
a:在當前字元的右邊插入
A:在當前行尾插入
o:在當前行下面插入一個新行
O:在當前行上面插入一個新行
:ab 替代符 原始資訊--自訂縮減符號。例如 :ab mymail warmbupt@gmail.com 以後在任意處輸入mymail然後按空格就可以插入這個資訊了
6.修改
r 修改游標所在字元
R 修改游標所在位置的字元,可以一直替換字元,知道按下ESC鍵
u 表示複原功能
U 取消對行所作的所有改變
>> 縮排所有選擇的代碼
<< 和上面類似,但是反縮排
:1,20s/^/\/\//g 連續行注釋,注釋第1行到第20行。(其中"^"表示在行首插入,"//"為要插的字元(要轉義),"g"表示執行替換時不確認)
:r 檔案名稱 直接將其他檔案或命令執行內容匯入當前檔案中(在注釋中寫入當前系統核心資訊,只需:r !uname -a)
v% = 在一遍的括弧處按此按鍵組合,括弧中內容選定並按照C語言格式縮排,游標會自動跳到XXXX()函數的定義處, 變數, 結構, 宏, 等等, 都可以的。
v是visual模式,%是跳到與其匹配的地方,=為源檔案格式化。
xp 前後交換兩個字元
ddp 上下交換兩行(這兩個挺好理解的)
增加註釋:(一個操作應用在多行)Ctrl + v
定位到開始行,然後選定需要的行,然後執行 I 命令,然後輸入 # 或 //,然後按
Esc鍵兩次,即可把注釋操作應用到所有選定的行,記住選定不能使用v指令,而應該使用Ctrl + v
(清除註釋請參考上面的方法)(v是按行選定,Ctrl + v 是按照列選定)
:line1,line2s!\s*//.*!! 去掉line1到line2之間的//注釋
:line1,line2s!\s*/\*\_.\{-}\*/\s*! ! 去掉line1到line2之間的/* */注釋
:s%/^M//g 將DOS格式文本轉成Unix格式文本,其中^M 必須是同時按 Ctrl+V+M ,表示斷行符號。
7.檔案操作
e 建立新的檔案
n 載入新的檔案
w 寫檔案,它是儲存到臨時檔案中,直接退出,並沒有儲存到檔案中的
w! 如果想寫唯讀檔案,使用它強制寫入檔案
q! 不問你是否儲存檔案,強制退出
set 可以設定vim的某些特性。取消設定,使用 set none
Z+Z 儲存並退出vim
8.宏
可以將一系列的動作記錄為一個宏,然後執行它
q<宏名稱> 開始錄製宏。宏名稱為一個字元
q 錄製中按下“q”鍵,結束錄製
@<宏名稱> 執行宏
可以使用 :registers(寄存器列表) 命令查看已記錄的宏
9.統計:
全文字數:g+Ctrl+G
文章行數和當前位置佔總行數的百分比:Ctrl+g
10.Tips in VIM
Tips:
1,當你不知道你是處於編輯方式還是命令方式時,可以使用Esc鍵退出命令方式,然後進行操作。
2,在使用vim時,萬一發生了系統掉電或者突然關機時,可以使用恢複命令,如編輯file檔案時突然斷電或系統崩潰後的恢複命令:$ vi file -r
3,啟動vim的時候使用vim -u /root/vimrc.vim,並且使用:vertion可以查看到系統vimrc設定檔,使用者vimrc設定檔等的路徑
4,想查看設定的快速鍵,輸入:map即可看到。
如果要取消此快速鍵,只需輸入命令::unmap ^P
5,&XXX為否定XXX這個變數,在寫vimrc的function時可以使用,例如開關高亮顯示的函數為:
function ToggleHLSearch()
if &hls
set nohls
else
set hls
endif
endfunction
調用函數用::call ToggleHLSearch()
6,縮減語::ab sammail sam@163.com 在輸入模式下錄入"sammail",再敲任意字母符號或者斷行符號空格, "sam @ 163.com"
7,執行UNIX/Linux命令不需退出Vim/Vi :!命令
8,:h quickref 翻到VIM Quick Reference頁(有用!)。
9,環境變數%表示當前檔案名稱。
10,# 加密(小心使用,不要忘了密碼)
:X : 然後vim會提示你輸入密碼
:wq(只有儲存密碼才生效)
11,使用數字也是 VIM 強大的而且很節省時間的重要特性之一。在很多 VIM 的命令之前都可以使用一個數字,這個數字將會告訴 VIM 這個命令需要執行幾次。比如:
* 3j 將會把游標向下移動三行。
* 10dd 將會刪除十行。
* y3″ 將會拷貝從當前游標到第三個出現的引號之間的內容到剪貼簿。
數字是擴充 motion 命令範圍非常有效方法。
12,g 統計字數
附:VIM模式總結(http://denven.blog.hexun.com/11922673_d.html)
Part1. 六種基本模式 :
1.Nomal Mode 普通模式 可以輸入所有普通的編輯命令,啟動編輯後預設處於普通模式,接受編輯命令。
2.Insert Mode 插入模式 輸入的內容會插入到當前緩衝區。這是我們最熟悉的普通編輯器的編輯模式。
3.Visual Mode 可視模式 與普通模式相似,但移動游標時游標會擴充高亮地區,非游標命令則可作用於高亮地區。
我將它分為三種具體的情況來理解。(圖中$表示行尾)
3.1. 普通可視模式。 按 v 進入,不單獨針對行或列,作用範圍為游標最初位置與游標當前位置間的內容。
....cursor starts here|---------------------------------------------------------------$|
+-------------------------------------------------------------------------------------------$|
|---------------------------------------------------------------------------------------$|
+---------------------------------------|the cursor stops here,maybe some content continued
3.2. 可視“行”模式。按 V 進入,游標移動作用與游標所在的整行內容。
如果游標開始位置所在行行號為i,選定時行號為j。
則作用內容為[i,j]行的內容。:
+----------------------------------------------------------starts here|--------------$|
|----------------------------------------------------------------------------------------$|
|-------------------------------------------------------------------------------------------$|
+---------------------------------------$|the cursor stops here
3.3 可視“塊”模式。 按 CTRL-V 進入,gVim 則按 CTRL-Q(大寫) 進入。
選定範圍為游標最初點和游標移動後所在位置決定的矩形區塊內。
cursor begin|-------------+ +----------------| end
|-------------| |----------------|
|-------------| |----------------|
|-------------| |----------------|
+-------------| end begin |----------------+
exmaple 1 example 2
4.Command Mode 命令列模式 在底行可以輸入一行命令,也可稱作底行模式完成。按冒號進入命令列模式。我通常把它當作時普通模式的特例。因為可執行檔命令太少。
5.Ex Mode Ex編輯器模式 以: 開始Ex模式,與命令列模式類似,但是命令完成後,會繼續停留在該模式下。
6.Select Mode 選擇模式 gVim中滑鼠選中的部分會在底下提示為“選擇”。
Part2. 五種附加模式:
1. 操作符等待模式:我尚未理解所謂的操作符指什麼。
2. 替換模式:可以認為是插入模式的特殊情況。
在插入模式下,按 即回到一種臨界的普通模式,這時可以切換其他模式,可以執行命令,但是完成命令後會立即返回至插入模式。例如:
3. 插入普通模式 按 後執行一次編輯命令(即使是非a,i,A,I,o,O之類的命令)後進入插入模式。
4. 插入可視模式 按 後不執行編輯命令,而按鍵進入可視模式,可視選擇後執行一條命令(同上)就返回到插入模式。
5. 插入選擇模式 按 後可以用滑鼠進行選擇,選擇結束(點擊滑鼠)就返回插入模式。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/gnuhpc/archive/2010/02/01/5276368.aspx