作者 | 簡書 / Onefishum
編者按:之前我們發了一些很基礎的 Vim 教程,有同學說了,你這都是無聊的水文,學習 Vim 就應該總結規律,才能學會。愚也以為然,於是求得轉載。本文對 Vim 的普通樣式(Normal)做了一番總結,可能其中還有一些不足或疏漏,但是這個思路非常好,請大家無論是拋磚還是拋玉,請大家輕拍~~^_^
前言
已經受不了網上無數 Vim 的教學,基本都是片湯話,抄來抄去。做為一名技術人員,應該能深入的去瞭解一個軟體,然後總結出來經驗和規律,而不是記錄一個流水帳,這才是最佳的學習方式。計算機與人不同,能處理的東西一般都具有一定的規則性,無規則存在機率性的東西,不是計算機處理的強項,尤其對於軟體設計來,良好的規律性,能大幅提升軟體的可操作性。
對於 Vim 來講,這個號稱神器的東西,定不能放棄這種規律,結果讓一些磚家講的反而如同垃圾,需要死記硬背一堆命令,實則是沒有真正瞭解 Vim,精華的東西卻很少見。之所以稱之神器,肯定不是簡簡單單的增刪改查,透過命令組合,可以大幅提升文字編輯的速度,遠比常規的滑鼠操作快,達到手不離鍵盤。
本文僅僅總結一下普通樣式下 Vim 的一些規律性。
直接上硬貨
普通樣式下通用命令格式(在該樣式下,大部分文字命令基本跳不出這個範圍):
[範圍]命令[作用域][物件]
範圍(可忽略)
一般存在以下幾種:
2y
、2gg
、2d
、2fh
(找查當前行,第 2 個 h
的位置)。20,30y
、20,30d
。命令(必填)
這部分沒有什麼可以說的,網上的片湯文章已經很多了一般來講,就是增刪改查複製粘帖之類的。
作用域(可忽略)
這個作用域,一般來講,是指後面的[物件]
範圍,一般可以是數字或者一些“動詞”。
數字:
d2w
、y2w
、f2,
動詞:
測試用例:
setopt(ch, "this is a test", 1);
a
(包含)如果游標在括號內,刪除包含括號在內的內容。
da)
,很神奇的包含括號在內的內容全部都被刪除了,這比在傳統的編輯器中,慢慢的按 del
鍵一個個來刪,和用滑鼠選擇來刪,要精準、快速得多。可以私下試試所有成對字元,例如:"
、'
、]
、}
等。例如:比較經典的
daw
,在語意上可以理解為刪除一個單詞,它與dw
的區別在於,dw
只能刪除當前游標到單詞的結尾,而daw
,則會刪除整個單詞。i
(內嵌)有了包含,就會有內嵌。例如
""
內的內容(不包括 ""
),例如di"
(Vim 下可以參考幫助 :h text-object
)
物件(一般需組合作用域)
符號物件:
成對的符號,如上面所舉 "
、'
、)
、}
、]
,其中 )
也可以用 b
來表示dab
,}
也可以用 B
。
文字物件:
w
單詞W
字串s
句子p
段落總結
本文作者是一個學理出身的,可能文字功底並不是很好。中心思想,只是希望大家使用計算機時,能儘量拋棄死記硬背,應該從中能找到規律性的東西,理解一個軟體。透過以上文章,希望大家能在規律的基礎進行排隊組合,從而達到更好的效果。
碼農和大拿的區別:思想。
推薦
《Vim 實用技巧》,這本書有電子版的,質量還不錯。但真心推薦買一本,不貴但全書實貨滿滿,空閑時看看,應該每次都能有一些收穫,這本書更多註重的是思想,應該是我見過最好的 Vim 叢書,沒有之一。