不知不覺使用vim已經有一些時間了,也算得上真正掌握使用技巧了吧。想不起來當初為什麼去學習這個編輯器,也不記得怎麼學會使用編輯檔案,只記得當初按完所有的鍵盤按鍵都沒有退出vim。一顆種子要經過多少風雨才能長成參天大樹,一條小溪要經過多少高山河流才能匯入大海。我們平常學習一樣東西,要經過多少困難,多少挫折,只有自己最清楚。
vim模式
普通編輯器都可以直接開啟檔案進行編輯、儲存、使用快捷鍵等等,vim也具備這些功能,但是有些功能要在特定模式下才能使用。也是因為這些模式,讓vim學習路線變得特別比較陡峭。vim具有多種模式,每種模式都有特定功能,有時你需要某些功能時,特意切換到指定模式下操作。使用鍵盤就可以隨意切換模式,讓vim不依賴滑鼠操作,使用最小化組合鍵的操作,編輯效率大大提高。
普通模式
使用vim開啟檔案,進入普通模式,也是vim預設模式。在這個模式下,可以移動游標,複製、剪下、貼上、刪除檔案,在這個模式下輸入按鍵全部都是命令快捷鍵。比如你想進行複製操作,yy 複製當前行,p 貼上游標下面,dw 刪除乙個單詞。使用a 切換到插入模式,還有其他的快捷鍵也能做到,: 切換到命令模式,ctrl + v 進入選擇模式。
插入模式
左下角顯示-- insert --,表明vim正處於插入模式。這個模式會讀取鍵盤輸入,顯示在螢幕內,大部分編輯器開啟就處於插入模式。使用esc 可以重新進入普通模式,但是輸入字元不會儲存到檔案中。
可視模式
這個模式主要功能,可以使用移動命令,擴大高亮的文字區域。輸入命令將直接作用於選中文字區域。這就相當於你用滑鼠選中一段文字區域,可以使用可以使用命令進行,複製、剪下、修改操作,但是vim並不需要滑鼠。
選擇模式
這個模式要在可視模式下才能進入,可以直接使用退格鍵或者空格鍵刪除選中文字區域,或者直接輸入新的文字,替換選中高亮區域進入插入模式。
命令模式
在普通模式下輸入: ,被解析成命令模式,:後面接命令,回車直接執行命令。例如上圖,:q回車直接退出vim編輯器。一般退出vim,需要在命令模式下輸入:wq,保持退出。
ex模式
在普通模式使用q 命令進入ex模式,這和命令列模式比較相似,在使用":visual"命令離開ex模式前,可以一次執行多條命令。這個命令自己使用得很少,只是從google上知道這些。
平常在使用vim主要是在普通模式、插入模式、可視模式、命令模式進行操作,掌握這裡基本就可以熟悉使用vim了。
vim命令快捷鍵
全域性移動
h 向左移動 ←
j 向下移動 ↓
k 向上移動 ↑
l 向右移動 →
掌握這些快捷鍵,移動游標得時候,手機基本不會離開核心鍵盤區,有沒有像w,a,s,d移動角色的感覺?。
gg 快速移動到開頭
g 快速移動文字結尾
ctrl - f 向下翻頁 即 pagedown 翻頁
ctrl - b 向上翻頁 即 pageup 翻頁
命令模式:n 移動指定行數n
行內移動
w 或者 w 移動到下乙個單詞(word)
b 或者 b 移動到上乙個單詞
e 移動下乙個單詞結尾
^ 移動到當前行第乙個非空字元
0 移動到行首
$ 移動到行尾
f 在行內正向查詢char字元,游標會移動到目標char上
f 在行內反向查詢char字元,游標會移動到目標char上
; 在行內正向重複搜尋char字元,同上
, 在行內搜尋上個乙個char字元,反向搜尋,同上
進入插入模式
要想編寫文字內容,還必須在插入模式下進行操作,以下命令由普通模式進入到插入模式
i 進入插入模式,在當前游標下輸入
o 在當前游標下面新建空白行插入字元
a 在行尾插入,a$ => a
i 在行首插入, i^ => i
o 在游標上面新建空白行插入
s 刪除當前游標字元,進入插入模式
刪除d 刪除字元(delete),d本身沒有任何涵義,但是它可以跟其他命令組合,完成一些快速操作。
x 刪除當前字元
dd 刪除當前行
dw 從游標開始刪除整個單詞(delete word)
db 從游標往前刪除到乙個字元,反向移動刪除,如果
dbx 反向刪除整個單詞
d$ 從當前位置刪除到行結尾
d^ 反向刪除到行開頭
ndd n 表示刪除行數,2dd 刪除兩行
ddn 同上
了解vim操作
vim的強大很大程
度上源自操作符與動作命令相結合。在本節,我們將看到它是如何工作的,並考慮其寓義 --vim實用技巧第2版
操作符 + 動作命令 = 操作
d 命令可以對乙個字元dl、乙個完整單詞daw或
一整個段落dap進行操作,它作用的範圍由動作命令決
定。c、y 以及其他一些命令也類似,它們被統稱為操作符(operator)。
vim的操作符命令 命令
用途c修改(change)
d刪除(delete)
y複製到暫存器
g~反轉大小寫
gu反轉小寫
gu反轉大寫
增加縮排
減小縮排
自動縮排
看著上面刪除操作,是不是很容易理解操作符 + 動作命令 的模式,比如我們已經知道daw刪除整個單詞,gu反轉大寫,我們就可以使用guaw反轉整個單詞,guap 反轉整個段落大寫
學會舉一反三
ea 在單詞後面插入
cw 修改整個單詞
c$ 修改從游標到行尾的內容
c^ 修改從游標到行首的內容
yw 複製從游標開始到詞尾的字元
y^ 複製從游標到行首的內容
y$ 複製從游標到行尾的內容
nyy 複製n行
vim複製剪下操作
由於vim中copy快捷鍵已經被change修改占用了,只能使用y代表複製(yank),貼上(put)使用p,d其實是將內容剪下到暫存器中,剪下實現刪除操作。ddp 看起來是將兩行位置互換,其實先剪下當前行到暫存器中,p貼上到游標下的位置。主要記住使用命令y + 動作指令 或者 d + 動作指令,都是將文字暫存到暫存器中,使用p 或者p 進行貼上。進行乙個小demo練習,將變數field替換下面的函式引數foo。
let field = method();
fun(foo)
思路: 先使用yw複製field欄位,下移動foo中,dw刪除foo,p貼上。但是你會發現貼上結構居然還是foo。這是因為dw將刪除文字放入暫存器中,覆蓋了上面copy的變數。我們平常複製,剪下的文字都會暫存再無名暫存器中。
認識無名暫存器
在vim不使用單一暫存器進行複製、剪下、貼上,而是為這些操作提供多組暫存器。當使用刪除、複製與貼上命令時,可以明確指定它們中的某乙個進行操作。
在vim中的刪除、複製、貼上都是使用暫存器,可以使用"方式命名暫存器。平時我們使用dd,yy命令,不指名暫存器名稱預設使用無名暫存器。倘若沒有指定要使用的暫存器,vim將預設使用無名暫存器,它可以用雙引號表示(參見 :h quote_quote )。無名暫存器可以使用""表示,比如""yy 相當於yy,""p 相當於p
數字暫存器
"[0-9]表示數字暫存器,數字越小表示最早在暫存器內容。例如"0表示第乙個進入暫存器文字,"1表示第二個進入暫存器內容,類似值棧結構,先進後出排列。可以使用:reg 檢視暫存器中內容。
比如上面的例子我們可以使用"0p 貼上field 變數,就不害怕被覆蓋的情況。
系統暫存器
在win系統中,可以在任意地方ctrl c複製文字,vim是否可以貼上非vim中複製內容?當然是可以的。"+表示系統暫存器,可以讀取系統vim之外的系統貼上板中的內容,可以貼上內容,複製到系統貼上板中去。ubuntu上需要安裝vim-gnome,才可以正常使用系統暫存器。
貼上p 將暫存器中的文字貼上到游標之後
p 將暫存器中的文字貼上到游標之前
使用貼上命令前面+暫存器名稱,就可以直接使用專用暫存器中的內容了,例如"+p直接貼上系統剪貼簿中的內容。
在插入模式使用 + 暫存器名稱貼上字元文字。例如可以使用"貼上無名暫存器中內容。
VIM學習 暫存器
1.檢視暫存器 reg 無名暫存器,進行刪除 複製操作時賦值 0 複製專用暫存器,進行複製操作時賦值 1 9 存放最近使用的剪下,刪除操作的內容 如果未指定編號,9個暫存器會對內容進行輪流存放,即有新的內容時,將 1的內容推到 2,2到3,3到4 8到9,原有9的內容被清除 a z 命名類暫存器,分...
VIM基礎概念(暫存器)
於 現在已經可以熟練使用vim的大多數基本命令 功能來進行專案 的開發了,但是在專案的開發過程中,依然會感覺到一些操作效率比較低,比如通過h j k l來進行游標的大範圍移動這類操作,顯然vim提供了更高效的命令操作方式。最近經常需要完成的工作就是需要在 之間來回的複製 貼上 搜尋和替換,常用的d ...
VIM操作技巧
這部分說的是,可以在vim窗格裡直接使用的。筆者的使用環境是windows下在cmd視窗執行 利用hjkl進行上下左右移動w e按照單詞往後移動 移動到指定行 快速行首 gg 快速移動到行尾 gg 移動到指定行 方法一 行號 gg,如移動到第3 假設存在 行的指令是 3gg 方法二 冒號 行號 回車...