純鍵盤開發實戰(MouselessProgramming)
作為一個踐行Mouseless Programming的開發者,來談談自己在日常工作中是如何做到「幾乎」不用滑鼠的。
在說具體的「技巧」之前,先聊一聊純鍵盤開發的幾個原則:
- 動機, 動機要單純,純鍵盤開發不是為了耍酷, 你的動機應該是提高「效率」:)
- 鍵盤只是工具,思想才是關鍵, 程式碼和問題先想清楚再下手,想清楚遠比寫的快重要!
- 鍵盤不要經常換, 選擇一款適合自己的,然後用熟它就好!什麼黑軸、茶軸,filco、cheryy等等的都是浮雲啊,折騰這些是在浪費生命啊。
- 使用統一的一套快捷鍵, 快捷鍵一致,可以無縫切換,減少不同軟體不同快捷鍵的記憶成本。比如vi的一套快捷鍵,各種IDE和文字編輯器都會有vi模式或外掛,chrome也有外掛支援vi快捷鍵瀏覽網頁。
- 快捷鍵不要刻意去記, 經常用到的功能,才去查它的快捷鍵,在使用過程中去記,記住常用的即可。
下面就來聊聊具體的(奇)技(淫)巧吧:
鍵盤設定
- 原則:雙手不要離開主鍵區。也就是雙手幾乎一直在asdf,jkl;鍵區。 比如你去按方向鍵,這樣就是雙手離開了主鍵區。
-
重新對映方向鍵: 上一條提到不要去按鍵盤上的方向鍵(太遠了),所以需要重新對映一下方向鍵,使用
hammerspoon
工具,可以全域性重新對映方向鍵,我傾向使用 【ctrl-hjkl】來作為方向鍵,相信大部分vim黨都會這麼對映吧,用熟之後還是很舒服的。 -
ctrl鍵和Cap鍵的鍵位互換:Cap鍵佔據了一個很好的位子(左手小拇指一劃就能碰到),然而卻沒什麼卵用(大寫用Shift+字母啊)。而Ctrl鍵使用的頻率太高了,卻藏的太遠,所以強烈強烈建議互換ctrl和Cap按鍵的位置,換完之後熟悉一天你就不會再想換回來的,相信我。mac上提供了很便捷的方式修改這兩個按鍵,入口在 【系統設定】-> 【鍵盤】:
- 說下題外話,其實早期的一些鍵盤的ctrl鍵就是在現在的Caps鍵的位置的,特別是Unix/Linux系統的鍵盤,因為重度使用Ctrl鍵,如Ctrl-c:終止命令,Ctrl-d:EOF等,所以ctrl鍵必須要在一個很方便按到的位置。
- 如果你使用的是這款鍵盤—HHKB,那麼恭喜,你就不用設定了,它壓根兒就沒有Caps鍵。另外安利一下這款鍵盤,它非常小巧,攜帶方便,而且可以直接架在筆記本的鍵盤區替換筆記本鍵盤。 唯一的缺點就是: 貴
- 說下題外話,其實早期的一些鍵盤的ctrl鍵就是在現在的Caps鍵的位置的,特別是Unix/Linux系統的鍵盤,因為重度使用Ctrl鍵,如Ctrl-c:終止命令,Ctrl-d:EOF等,所以ctrl鍵必須要在一個很方便按到的位置。
-
可以設定多個keyboard-profile。不同的profile下,按鍵的意義不同。舉個例子,hhkb沒有F1-F12按鍵,需要用Fn+1-12 才能表示F1-F12,程式設計師除錯,經常用F6–F12 的,所以用組合鍵非常麻煩。此時就可以建另外一個debug-keyboard-profile,讓1-12表示F1-F12的含義,這樣就不用每次除錯都按組合鍵了。可以藉助
Karabiner
工具來實現多個profile的定義
常用操作
下面介紹 Mac上的常用操作怎麼使用鍵盤來做到。
- 開啟應用、開啟檔案、查詢檔案等: Alfred。普通的開啟應用、開啟檔案,基本上都能滿足,再也不用滑鼠點選底下的Dock來開啟應用,也幾乎不用點選Finder來開啟檔案了。重度使用者可能會編寫一些工作流,比如直接搜stackoverflow,搜maven中央倉庫等等。
- 視窗管理:Spectacle。經常需要用滑鼠移動視窗,調整視窗大小? 有了Spectacal之後幾乎不會在手動滑鼠調整視窗。看一下快捷鍵就一目瞭然了。
- Ternimal管理:tmux(當然iterm,zsh等是標配啦)。tmux的一個好處是可以管理多個會話,儲存會話以便後續再重連,以及方便的複製模式,在複製模式下可以用vi快捷鍵移動指標選中頻幕內容,然後複製選中的內容。
- 瀏覽網頁:Cvim 或 Vimium。 上手非常簡單:https://youtu.be/t67Sn0RGK54
- 釘釘聊天:抱歉,這個目前無能為力。。。。釘釘快捷鍵設定只提供了最基本的幾個功能。。
Vim
這是個很大的話題,就不展開講了,總之學vim貴在堅持。稍微提幾點:
- 要整體性地瞭解vim中的一些概念:編輯模式、移動命令、檔案管理、檔案間跳轉、緩衝區列表、暫存器、巨集、查詢替換等等。
- 學會使用幫助。 在vim中輸入 :h help, 好好看一下vim中的help應該如何使用。
-
一些外掛
- vimwiki, 個人首推,可以搭建自己的一個wiki知識庫, 純vim環境書寫文件,語法類似markdown。並且建立文件,文件之間的跳轉都非常非常方便。而且文件可以渲染成html,可以自己寫一些CSS樣式定製渲染。
- ctrl-p: 快速查詢檔案
- nerdTree: 目錄
- 外掛推薦、排名: https://vimawesome.com/
- 強烈推薦書籍:《Practical Vim》 https://book.douban.com/subject/10599776/ ,書寫的很好,看中文版的即可,因為是實操性的東西,很好理解。每天看5個Item,一個月即可看完。
IntelliJ
Jetbrain系列的IDE的快捷鍵還是設計的非常好的,而且他們家不同型別的IDE使用的快捷鍵是同一套,不管你用IntelliJ 寫Java,Pycharm寫Python 還是Goland 寫Go或者其他的系列,他們的很多快捷鍵都是相通的。下面重點說說IntelliJ中的常用操作如何做到無滑鼠。
- 首先裝上IdeaVim外掛,這樣大部分的檔案內編輯就可以純鍵盤了。
-
Navigation:
- ⌘+o, ⌘+⇧+o: 定位檔案
- ⌘+E, ⌘+⇧+E:最近瀏覽編輯過的檔案
- ⌘-1,2,3,4…: 不同panel間切換
- ⌘+⇧+F12: 編輯頁全頻展示
- ⌘+⇧+a: 查詢action
- ⌘+⌥+b: 從介面向下跳到實現
- ⌘+u: 從實現向上跳回介面
-
編輯
- ⌥+⏎:修改提示,還可以自動宣告變數
- ⌘+n: 在 project-panel 中,新建檔案
- ⌘+shift+n: 臨時測試可以使用 scratch-file, 不會放入到專案,會自動刪除
- ⌘+n:在檔案內,可以生成 setter、getter、toString 等
- ⌘+⏎+L: 格式化code
- ⌘+-: 收起當前方法實現
- ⌘+⇧+-:收起期所有方法實現
- ⌘+y: quick definition, 不離開編輯頁
-
程式碼提交
- ⌘+K: commit程式碼
- ⌘+⇧+K:push程式碼。
另外需要說明的一點是,提交程式碼會出現多個button讓你選擇,這時候可以使用Tab來切換選中的button,用空格來確認選擇,這樣整個提交程式碼的過程就都能純鍵盤操作了。
當然IntelliJ的快捷鍵還有很多很多,我的建議是不用刻意去記,使用過程中經常用到的功能,可以去查詢一下對應的快捷鍵,如果沒有的話,也可以自己去定義相應的快捷鍵,比如我自己設定的兩個常用的快捷鍵,一個是定位當前編輯檔案所在的目錄:
這樣我就能在Project這個panel中使用⌘+⌃+S 快速定位到我目前在編輯的檔案
另外一個很常用的快捷鍵是重新匯入jar包:
這樣每次我編輯完pom之後,只要按一下⌘+I,就可以重新匯入依賴了(不開auto import是因為自動import它不知道我何時編輯完了,就一直再重新匯入,嚴重拖慢速度)
對於哪些是自己經常使用的功能,可以檢視IntelliJ中的 【Help】 -> 【Productivity Guide】, 會列出你最近常用的功能,以及使用次數,這樣就能根據自己使用情況去 KeyMap裡搜一搜對應的快捷鍵啦
總結
最後還是要強調一下,純鍵盤開發的目的是效率,不要為了純鍵盤而純鍵盤,就像很多人投入太多精力研究Vim或者Emacs一樣,其實說到底它只是一個編輯器,沒必要花費太多的精力在上面,玩的再溜又如何,能幫你升職加薪嗎,能解決實際業務問題嗎? 磨刀不誤砍柴工,使用好自己的工具,產出有價值的結果,不要陷入到研究工具的誤區裡去。
相關文章
- Flutter完整開發實戰詳解(二十、 Android PlatformView 和鍵盤問題)FlutterAndroidPlatformView
- mac mini純鍵盤操作連線藍芽滑鼠Mac藍芽
- iOS上開發的一個安全鍵盤iOS
- touchpad 開源鍵盤
- ChatGPT開發實戰ChatGPT
- Python開發實戰Python
- postcss開發實戰CSS
- iPhone開發實戰iPhone
- 安卓開發 點選空白處收起鍵盤安卓
- Flutter完整開發實戰詳解(二、快速開發實戰篇)Flutter
- 12.2 實現鍵盤模擬按鍵
- helm實戰之開發Chart
- 實戰Flash遊戲開發遊戲開發
- flask 專案開發實戰Flask
- Angular4 實戰開發Angular
- 鍵盤快捷鍵
- MVPArms官方首發一鍵生成元件化,體驗純傻瓜式元件化開發MVP元件化
- win10開啟螢幕鍵盤快捷鍵 螢幕鍵盤怎麼調出來Win10
- Flutter完整開發實戰詳解(二、 快速開發實戰篇) | 掘金技術徵文Flutter
- 超實用Mac快捷鍵盤點Mac
- RAG應用開發實戰02-相似性檢索的關鍵 - Embedding
- Android開發之監聽軟鍵盤狀態(彈出收回)Android
- 【Qt開發】實現系統托盤,托盤選單,托盤訊息QT
- 實戰|如何使用雲開發實現照片附件上傳開發
- Spring Cloud 純乾貨,從入門到實戰SpringCloud
- 【快捷鍵】—— 鍵盤篇
- 專案實戰介面開發SpringBootSpring Boot
- 【Flutter】開發之實戰Widget(四)Flutter
- Taro + 小程式雲開發實戰
- 電腦軟鍵盤怎麼開啟 快速調出軟鍵盤的方法教程
- Mac鍵盤突然失靈怎麼辦?別急,教你開啟輔助鍵盤Mac
- 直播app開發搭建,純javascript實現圖片放大鏡效果APPJavaScript
- 基於Neptune開發板的鍵盤藍芽模組DIY指南藍芽模組
- 安卓日常開發記錄-鍵盤的相關處理方式安卓
- PAT1029 舊鍵盤(java實現)Java
- win10虛擬鍵盤快捷鍵怎麼開啟Win10
- 實戰·使用taro+雲開發快速開發小程式
- 鍵盤亂鍵怎麼處理 電腦鍵盤按鍵錯亂