在我的工作中,我總是在尋求能提高生産力,和讓開發更有趣的方法。當你在bash上飛快輸入一系列的指令,你知道你的朋友會花兩倍的時間來做這一些列操作,沒有什麼比這個讓人感覺更好的了。你是否曾經:
心裡默默地埋怨你的同僚,為了到指令行的頭部,不斷地按左方向鍵。但其實你可以隻需要按下ctrl + a就能達到目的 ?
看到某人一次又一次輸入相同的指令,而你可以隻需要在它面前加一個! ?
當你的朋友羅列他使用的ide的各種優點的時候,你是否會翻白眼,因為你知道你可以使用vim完成同樣的功能?
如果是這樣的話,下面這些小提示就很适合你。
聲明:這篇文章不是對vim,git和其他終端的偏見。我無意挑起終端和ide的戰争,隻是想告訴一些對我來說很有趣的招數。
<a target="_blank"></a>
如果你已經使用git很長一段時間了,你很可能遇到過原子送出這個概念了。本質上,這個概念指一次送出隻包含相關操作,不包含邏輯上不相關的事情。例如,你對一個類的改動和相關的單元測試應該在一個送出中,而對另一個不同類的操作你應該放在另一個送出中。
但是,如果在一個檔案中包含多個不相關操作的時候應該怎麼辦,或者你會想要把他們放在多個送出中,這樣你可以單獨對他們進行revert操作?或者你在一個檔案中寫了很多log日志的語句,但是你不希望将這些語句送出到項目中去怎麼辦?通常人們使用的git指令是達不到這個要求的:
git add的 -p (代表patch)參數對于這種場景是非常有用的。這個會告訴git add,我想要做一個特殊的add操作,并且這個指令有個非常好的互動界面能讓我們明确指定我們想要操作檔案中的哪個部分。git會将所有的變動自動分塊,你可以使用y或者n來通過或者拒絕這個分塊,或者你也可以使用s将它切成更細粒度的塊。如果git不能自動将變動分成你希望的塊的話,你可以使用e(edit)選項來指定更多細節。

補充說明:一些評論指出,-p參數也可以和其他的一些指令,比如git check –,在一起使用。是以你可以将檔案的一部分恢複回來,而保持其他的部分的變化。很友善吧!
這是vim的殺招之一,并且我發現很多人(即使是vim的大師)都不是很經常使用。假如你是個馬虎的使用者(當ssh進入一個空間的時候使用vim去編輯一些配置檔案),這招會潛在幫到你很多的。很多人聲稱他們不能放棄ide的特性原因就是ide的智能提示這項功能,這個功能能自動完成變量和函數的名字。這些特性是非常受歡迎的,因為它不會讓我們因為拼寫而出現錯誤,也縮短了編譯/運作/調試的周期。許多人沒有意識到直接從vim的黑盒子中也有類似的功能,而且是不需要任何插件的。
在insert模式下,你可以按下ctrl-n鍵下移建議的自動完成下拉框(這個下拉框vim是從目前緩沖中擷取,如果有的話,也會從tags中擷取),或者按下ctrl-p鍵來上移(如果記不住助記符的話,記着這兩個分别是代表“next”和“previous”)。如果隻有一個可能的自動完成條目,vim就會繼續輸入,然後插入這個唯一的條目。非常友善且有效率,特别當你的代碼中有大量的長變量/方法/常量名稱的時候。
ctrl-p/ctrl-n可以和下個招數一起協同工作,具體使用和上面章節說的一樣
使用vim的人都知道打開一個遠距離目錄中的檔案是很麻煩的(可以使用:e 來減緩麻煩程度,但是仍然不能瞬間做到)。如果你正好是在一個team中工作,或者在一個大項目中工作,迅速完成這個事情對你的工作來說是至關重要的。
是否有曾經在終端輸入過一個指令,然後當你再次輸入前幾個字的時候,你會突然發現,你希望有個更簡便的方法能自動補充完整個指令,以便你能編輯或者再次運作它?如果是這種情況的話,那麼,告訴你個好消息:你可以!隻需要按下ctrl+r 然後輸入你想要查詢的東西。終端将會将你想要的填充進去,如果有多個選擇的話,你可以按下反複按下ctrl+r來進行選擇。當你發現了你需要的指令,你可以使用通常的操作來操作這個指令(如果你使用标準的bash鍵綁定的話,你可以使用ctrl+a,ctrl+e,方向鍵等。)。試試吧!如果你不記得你要ssh的機器,使用這個方法你會感覺到很友善。
history| grep $command 對你來說也非常有用的,如果你隻是想要檢視最近運作的指令的話。
要制作一個宏,在normal模式下按下q,然後按下其他的按鍵來“命名”宏(通常我使用q)。vim将會開始記錄你的鍵盤操作,vim将會記錄你的鍵盤操作,知道你按下了q來儲存宏。你可以在normal模式下使用@-letter來重放,是以我通常使用@-q。你也可以在@重放指令前加個數字,這樣,你可以一遍又一遍重複執行你的宏(就像許多vim使用者,已經非常習慣來這樣做了)。如果你非常習慣使用vim的花哨的操作指令(例如,使用/搜尋來定位),然後你隻需要一些小小的聯系,你就可以很快地操作大量的宏了,你會将你的還在依靠滑鼠進行操作的同僚遠遠甩在後面了。
原文釋出時間為:2013-11-16
本文來自雲栖社群合作夥伴“linux中國”