vim折騰記
在選擇編輯器上面,我是一個糾結的人,曾經年少的我執著地追求一款萬能的編輯器,可以支援所有編輯語言,靈活可定製,可純粹用鍵盤操作。符合這種條件的編輯器,非vim莫屬。
在投入vim陣營之前,我對其是敬而遠之的。第一次使用vim,我的第一感覺是:
"挖槽,這是什麼鬼?行號沒有,文法高亮沒有,自動提示也沒有,這跟txt有什麼區別... 趕緊退出,靠,怎麼還退不出?這反人類的東西還被譽為編輯器之神?“
後來看了大神們對於vim的配置,才知道vim原來還可以這麼玩,推薦閱讀 老司機亂談編輯器之神,這篇文章讓我驚歎於vim的牛逼,感覺vim無所不能,開始想象著自己學會vim後,在其他人都用各種ide的情況下,我將vim視窗最大化,鍵指如飛,猶如彈鋼琴的藝術家。這個裝逼的情境,想想都覺得飄飄然...
在各種酷炫功能的吸引下,我開始沉迷於如何折騰vim
vim裝逼外掛程式
裝逼是人類的剛需
vim的學習曲線比較陡峭,如果你是純粹的小白,強烈推薦 簡明 VIM 練級攻略,跟著此文練習幾天,vim最基本的功能就熟悉了。
對vim有初步的認知後,要進一步系統地學習vim,《Vim實用技巧(第2版)》是不二選擇
Vim實用技巧(第2版)
掌握vim的基礎命令後,我就開始了折騰vim的辛酸血淚史,一開始是自己配置.vimrc
,後來看到網上有很多現成的配置,如號稱vim終極配置的 spf13-vim,國內的 spacevim 將vim配置得如同開箱即用的ide
在嘗試各種vim配置後,沒有哪一個配置是真正用得稱手的,總有些坑在等著我,而且將vim打造得如此複雜,總感覺格格不入,貌合神離,且並沒有ide好用。
既然如此,為何要去折騰vim? 直接用ide不就行了?
可是習慣了vim的模式切換,鍵位操作,再也無法去用ide那些奇奇怪怪的快速鍵組合。
最終的解決方案就是用 jetbrains全家桶,然後安裝ideavim
外掛程式,既能享受ideIntegration Environment的便利,又得繼續使用強大的vim, 而且jetbrains全家桶已經囊括了主流程式設計語言,不管是寫PHP(phpstorm), 還是擼python(pyCharm), 又或者是玩golang(GoLang),都有對應的ide,但使用起來就如同在用同一款編輯器
vim常用命令
vim是學不完的,即使是用了vim十年的老手,也不敢說完全掌握了vim。但常用的vim指令並不是很多,以下列舉我常用的指令:
游標移動
- 0 到行頭
- ^ 到本行第一個不是blank的位置
- $ 到行尾
- g_ 到本行最後一個不是blank的位置
- NG 到第N行 或者是 :N
- w 到下一個單詞的開頭
- e 到下一個單詞的結尾
- % 匹配括弧移動
-
- 和 # 匹配游標當前所在的單詞,移動游標到下一個/上一個匹配單詞
- f{char} 到下一個{char}
- t{char} 到{char}前的一個字元
- Nf{char} 在當前行尋找第N個出現的{char} 如:3fa
- F 和 T 與 f 和 t 反方向
- dt{char} 刪除{char}之前的所有內容
- ; 與 , 跳到下/上一個由f/F, t/T尋找的字元
替換
- :%s/原文本/替換的內容/g 全文替換
- :10,20/原文本/替換的內容/g 指定行號替換
指定行數操作
- :10,20y 複製10至20行
- :10,20d 刪除10至20行
高效操作
- . 重複上一次的命令
- N<command> 重複某個命令N次
2dd 刪除2行3p 粘貼文本3次100idesu[ESC] 會寫下100個 desu
跳轉
- ctrl + o 回到上一處
- ctrl + i 回到下一處
書籤
- ma 設定當前檔案的書籤
- mA 設定通用檔案的書籤
- `a 跳到書籤a
- `A 跳到書籤A
- :marks 查看當前所有書籤
宏操作
- 首先,按下 q,然後按下你想要儲存的寄存器,任何小寫字母都可以。比如我們來把它儲存到 q 這個寄存器中。按下 qq,你會發現命令列裡已經顯示了 "recording @q"。
- 如果你已經錄製完成,那麼只需要再按一次 q 就可以結束錄製。
- 如果你想調用剛才錄製的宏,只需要 [count]@q
- 如果你想調用上一次使用的宏,只需要 [count]@@
執行個體:一個插入字串 "abc" 後換行的宏,重複調用十次:
qqiabc<cr><esc> # <cr> 表示斷行符號鍵q10@q
Tip: 如果是windows系統,ide啟用vim外掛程式的體驗不太好,因為ctrl既是vim的功能鍵,又是windows功能鍵,兩者會有衝突,用著不是很爽。mac的功能鍵是command鍵,避免了衝突問題
如果覺得本文對你有所協助,點個贊,或者賞杯咖啡錢,你的認可對我很重要