本文主要描述鍵盤快捷鍵柱徙、Emacs keybindings和Vim mode等帶來的效率提升,以及這些提升的意義奇昙。
友情聲明:我不直接使用Emacs或Vim护侮,我只是使用它們當(dāng)中我知道和喜歡的部分。
零储耐、前言
每次當(dāng)你將手從鍵盤的主區(qū)域(廣義的Home row keys)移動(dòng)到方向鍵羊初,或者改為使用鼠標(biāo)來點(diǎn)擊軟件界面時(shí),效率都有所下降什湘。因?yàn)椋?/p>
- 移動(dòng)你的手需要時(shí)間长赞;
- 移動(dòng)你的手消耗了你大腦的注意力(判斷手到了方向鍵、鼠標(biāo)沒有)闽撤;
- 移動(dòng)鼠標(biāo)得哆、判斷鼠標(biāo)光標(biāo)是否到達(dá)需要的位置同樣消耗你大腦的注意力;
- 用鼠標(biāo)點(diǎn)擊菜單哟旗,需要時(shí)間尋找菜單項(xiàng)贩据,消耗了時(shí)間。
看到這闸餐,相信你也猜到了饱亮,本文正是要強(qiáng)調(diào)應(yīng)該節(jié)約時(shí)間,減少注意力的消耗绎巨。
一近尚、鍵盤快捷鍵
最常見的鍵盤快捷鍵是(以Windows系統(tǒng)為例):
Ctrl + C : 復(fù)制
Ctrl + V : 粘貼
在復(fù)制一個(gè)文件時(shí),使用Ctrl + C
這比起“將手移動(dòng)到鼠標(biāo)场勤,然后再去點(diǎn)擊菜單”要快了至少6倍(假設(shè)按Ctrl + C
需要0.3秒戈锻,而后者需要2秒)。
對(duì)于程序員來說和媳,除了復(fù)制粘貼格遭,還有如下常用的操作:
- 將光標(biāo)移動(dòng)到行尾
- 復(fù)制、刪除光標(biāo)所在的那一行代碼
- 跳到指定行號(hào)的那行
- 切換窗口到上一個(gè)或者旁邊的Tab
- 切換到上一個(gè)app留瞳、指定的app
- 將選定的一行或者多行代碼注釋掉
- 啟動(dòng)構(gòu)件(Build)
- ...
時(shí)間消耗估算
按粗略估計(jì)拒迅,假設(shè)上述操作平均每次多消耗1秒,每分鐘出現(xiàn)2次,一天實(shí)質(zhì)工作6小時(shí)璧微,那么一天就多消耗:
1秒 * 2 * 60 * 6 = 720 秒 = 12 分鐘
那么一年下來就多消耗:
12分鐘 * 22 * 12 = 3168 分鐘 = 52.8 小時(shí) ≈ 6.6 工作日
當(dāng)然作箍,相信大多數(shù)程序員或多或少也會(huì)記住和使用常見的快捷鍵,所以真實(shí)數(shù)據(jù)未必有上述估算那么觸目驚心前硫。
關(guān)于快捷鍵的建議
關(guān)于快捷鍵胞得,我建議程序員們找到所使用的Editor、IDE或其他軟件的快捷鍵表屹电,逐個(gè)試一下阶剑,并且復(fù)習(xí)、練習(xí)那些常用但又一下子記不住的快捷鍵危号。
如:
- IntelliJ IDEA Reference Card (注:當(dāng)年我在Android Studio上花了2個(gè)小時(shí)試驗(yàn)這些快捷鍵)
- Xcode Keyboard Shortcuts
- Sublime Text Keyboard Shortcuts: Windows/Linux and OSX
- Atom Keyboard Shortcuts
- Mac keyboard shortcuts (注:強(qiáng)烈建議macOS用戶看看)
- ...
二牧愁、Emacs Keybindings
簡單來說,就是使用Ctrl + P / N / B / F
分別代替了方向鍵的上下左右——一下子為右手減少了至少12厘米的行程外莲。
這在macOS中是默認(rèn)開啟的猪半,即意味著所有Editor、IDE中甚至輸入框控件中都可以使用苍狰。而Ubuntu Linux上則需要手工操作一下(詳見:Emacs-like keybindings system-wide?)办龄。至于Windows,我就沒有研究過了淋昭。
當(dāng)然,這當(dāng)中還有其他一些有用的組合鍵:
按鍵 | 效果 |
---|---|
Ctrl + A | 移到行首(段首) |
Ctrl + B | 左移 |
Ctrl + D | 向右刪除 |
Ctrl + E | 移到行尾(段尾) |
Ctrl + F | 右移 |
Ctrl + H | 向左刪除 |
Ctrl + K | 向右刪除至行尾(段尾) |
Ctrl + N | 下移 |
Ctrl + O | 光標(biāo)后插入新行(注:有別于回車) |
Ctrl + P | 上移 |
Ctrl + T | 交換光標(biāo)旁邊的兩個(gè)字符 |
Ctrl + V | 類似Page Down |
Ctrl + Y | 粘貼先前由 Ctrl + K 刪除的文本 |
(注:我沒有學(xué)習(xí)過Emacs安接,只是知道上述組合鍵)
三翔忽、Vim Mode
小測試
請(qǐng)先自我測試一下,以下場景你是不是通過Home盏檐、End或者方向鍵等方式來實(shí)現(xiàn)的呢:
- 光標(biāo)在行首歇式,需要將其移動(dòng)到第4個(gè)單詞尾部
- 光標(biāo)在行首,需要將其移動(dòng)到第一個(gè)左小括號(hào)的位置之后胡野,以便輸入新文本
- 將光標(biāo)移動(dòng)到所在單詞的下一次出現(xiàn)的位置(例如材失,在switch單詞上,移動(dòng)到下一個(gè)switch中)
- 想將當(dāng)前行代碼重復(fù)4次硫豆,以便作微小修改 (field1, field2, field3之類)
- 想刪除3行代碼
如果用Vim mode的話龙巨,很容易就達(dá)到了。按鍵分別如下:
- 3w e (3次按鍵)
- f ( a (3次按鍵)
- * (1次按鍵熊响,無論兩個(gè)單詞間相隔多少行)
- yy 3p (4次按鍵旨别,僅包含復(fù)制粘貼,未包含修改動(dòng)作)
- 3dd (3次按鍵)
Vim mode的優(yōu)點(diǎn)
它真正的優(yōu)點(diǎn)汗茄,在你沒有親身體驗(yàn)之前秸弛,是很難向你言傳的。只能概括如下:
對(duì)于同樣的操作,它減少按鍵的次數(shù)递览、操作的時(shí)間叼屠,減少了大腦用于判斷光標(biāo)移動(dòng)位置等的分神、消耗绞铃,最終大大地提高了效率环鲤。
如果你等不急的話,先看看這個(gè)教程中的動(dòng)畫演示吧:
我的Vim mode之路
對(duì)于Vim mode憎兽,我頗有相見恨晚的感觸冷离。曲折經(jīng)歷如下:
- 2001年學(xué)習(xí)Linux時(shí)學(xué)過Vim(或稱Vi),當(dāng)時(shí)只是記住了有Normal mode纯命、Insert mode之類的區(qū)別西剥、HJKL是使用光標(biāo)的、退出時(shí)頗為麻煩亿汞;(聽說有人為了退出Vim瞭空,不惜使用Ctrl+Z,然后kill掉Vim)
- 2006年有同事給我演示GVim(Vim的Windows版本)疗我,當(dāng)時(shí)也沒覺得它有什么威力咆畏;
- 直至2015年,有位老同事(真的“老”吴裤,他生于五十年代)在吃飯之余給我演示Chrome瀏覽器中如何使用Vimium這個(gè)插件做到看網(wǎng)頁不用鼠標(biāo)——正是這實(shí)實(shí)在在的演示打動(dòng)了我旧找,令我痛下決心去學(xué)習(xí)Vim mode——學(xué)習(xí)了之后才發(fā)現(xiàn),不少Editor麦牺、IDE支持Vim mode钮蛛。
Vim教程
鑒于我的經(jīng)歷,這里我也就給你搬運(yùn)一下帶有演示的Vim教程剖膳,希望它們能給你帶來足夠的震撼和學(xué)習(xí)動(dòng)力:
- 世界上最牛的編輯器: Vim 1 (原創(chuàng)動(dòng)圖演示所有例子!)
- 世界上最牛的編輯器: Vim 2 (原創(chuàng)動(dòng)圖演示所有例子!)
- 世界上最牛的編輯器: Vim 3 (原創(chuàng)動(dòng)圖演示所有例子!)
另外也推薦看看“酷殼 CoolShell”上的Vim系列文章魏颓。
支持Vim Mode的軟件
很多軟件都有支持Vim mode的插件,甚至原生支持吱晒,這也足見其實(shí)用程度:
- Android Studio (基于IntelliJ IDEA)
- Atom
- IntelliJ IDEA系列 (PHPStorm, PyCharm, WebStorm等)
- Sublime Text
- Chrome插件: Vimium
- Firefox 插件: Vimium-FF
- ...
四甸饱、上述三者于復(fù)利的關(guān)系
復(fù)利是什么?簡單來說仑濒,就是1.01的100次方
就約等于37.78叹话,即是:微小的增長隨著時(shí)間的推移而累計(jì),越到后面收益的增長越大躏精,且呈指數(shù)式增長渣刷。
上文中僅僅是快捷鍵一項(xiàng)中的估算(強(qiáng)調(diào):是估算),一年就可以節(jié)省6.6個(gè)工作日了矗烛,還沒有算上Emacs Keybindings和Vim Mode呢辅柴。
如果這勢頭累計(jì)20年……不算下去了箩溃,不少人在討論35歲的程序員何去何從呢。 ??
參考(注碌嘀,本文目的不是討論投資涣旨、理財(cái)):
復(fù)利是什么,為什么愛因斯坦說它是宇宙最厲害的東西之一(復(fù)利應(yīng)該屬于投資理財(cái))股冗?
五霹陡、結(jié)語
工欲善其事,必先利其器——鑒于復(fù)利的效應(yīng)止状,建議立志當(dāng)個(gè)好程序員的朋友盡早實(shí)踐本文的3點(diǎn)建議烹棉。