純鍵盤開發實戰(MouselessProgramming)

zjunothing發表於2018-05-10

作為一個踐行Mouseless Programming的開發者,來談談自己在日常工作中是如何做到「幾乎」不用滑鼠的。

在說具體的「技巧」之前,先聊一聊純鍵盤開發的幾個原則:

  1. 動機, 動機要單純,純鍵盤開發不是為了耍酷, 你的動機應該是提高「效率」:)
  2. 鍵盤只是工具,思想才是關鍵, 程式碼和問題先想清楚再下手,想清楚遠比寫的快重要!
  3. 鍵盤不要經常換, 選擇一款適合自己的,然後用熟它就好!什麼黑軸、茶軸,filco、cheryy等等的都是浮雲啊,折騰這些是在浪費生命啊。
  4. 使用統一的一套快捷鍵, 快捷鍵一致,可以無縫切換,減少不同軟體不同快捷鍵的記憶成本。比如vi的一套快捷鍵,各種IDE和文字編輯器都會有vi模式或外掛,chrome也有外掛支援vi快捷鍵瀏覽網頁。
  5. 快捷鍵不要刻意去記, 經常用到的功能,才去查它的快捷鍵,在使用過程中去記,記住常用的即可。

下面就來聊聊具體的(奇)技(淫)巧吧:

鍵盤設定

  1. 原則:雙手不要離開主鍵區。也就是雙手幾乎一直在asdf,jkl;鍵區。 比如你去按方向鍵,這樣就是雙手離開了主鍵區。
  2. 重新對映方向鍵: 上一條提到不要去按鍵盤上的方向鍵(太遠了),所以需要重新對映一下方向鍵,使用hammerspoon工具,可以全域性重新對映方向鍵,我傾向使用 【ctrl-hjkl】來作為方向鍵,相信大部分vim黨都會這麼對映吧,用熟之後還是很舒服的。
  3. ctrl鍵和Cap鍵的鍵位互換:Cap鍵佔據了一個很好的位子(左手小拇指一劃就能碰到),然而卻沒什麼卵用(大寫用Shift+字母啊)。而Ctrl鍵使用的頻率太高了,卻藏的太遠,所以強烈強烈建議互換ctrl和Cap按鍵的位置,換完之後熟悉一天你就不會再想換回來的,相信我。mac上提供了很便捷的方式修改這兩個按鍵,入口在 【系統設定】-> 【鍵盤】:kdd-1.gif

    • 說下題外話,其實早期的一些鍵盤的ctrl鍵就是在現在的Caps鍵的位置的,特別是Unix/Linux系統的鍵盤,因為重度使用Ctrl鍵,如Ctrl-c:終止命令,Ctrl-d:EOF等,所以ctrl鍵必須要在一個很方便按到的位置。
      2.jpg
    • 如果你使用的是這款鍵盤—HHKB,那麼恭喜,你就不用設定了,它壓根兒就沒有Caps鍵。另外安利一下這款鍵盤,它非常小巧,攜帶方便,而且可以直接架在筆記本的鍵盤區替換筆記本鍵盤。 唯一的缺點就是: 貴
      123.png
  4. 可以設定多個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之後幾乎不會在手動滑鼠調整視窗。看一下快捷鍵就一目瞭然了。
    4.jpg
  • Ternimal管理:tmux(當然iterm,zsh等是標配啦)。tmux的一個好處是可以管理多個會話,儲存會話以便後續再重連,以及方便的複製模式,在複製模式下可以用vi快捷鍵移動指標選中頻幕內容,然後複製選中的內容。
    5.jpg
  • 瀏覽網頁:Cvim 或 Vimium。 上手非常簡單:https://youtu.be/t67Sn0RGK54
  • 釘釘聊天:抱歉,這個目前無能為力。。。。釘釘快捷鍵設定只提供了最基本的幾個功能。。
    456.png

Vim

這是個很大的話題,就不展開講了,總之學vim貴在堅持。稍微提幾點:

  1. 要整體性地瞭解vim中的一些概念:編輯模式、移動命令、檔案管理、檔案間跳轉、緩衝區列表、暫存器、巨集、查詢替換等等。
  2. 學會使用幫助。 在vim中輸入 :h help, 好好看一下vim中的help應該如何使用。
  3. 一些外掛

    • vimwiki, 個人首推,可以搭建自己的一個wiki知識庫, 純vim環境書寫文件,語法類似markdown。並且建立文件,文件之間的跳轉都非常非常方便。而且文件可以渲染成html,可以自己寫一些CSS樣式定製渲染。
    • ctrl-p: 快速查詢檔案
    • nerdTree: 目錄
    • 外掛推薦、排名: https://vimawesome.com/
  4. 強烈推薦書籍:《Practical Vim》 https://book.douban.com/subject/10599776/ ,書寫的很好,看中文版的即可,因為是實操性的東西,很好理解。每天看5個Item,一個月即可看完。

IntelliJ

Jetbrain系列的IDE的快捷鍵還是設計的非常好的,而且他們家不同型別的IDE使用的快捷鍵是同一套,不管你用IntelliJ 寫Java,Pycharm寫Python 還是Goland 寫Go或者其他的系列,他們的很多快捷鍵都是相通的。下面重點說說IntelliJ中的常用操作如何做到無滑鼠。

  1. 首先裝上IdeaVim外掛,這樣大部分的檔案內編輯就可以純鍵盤了。
  2. Navigation:

    • ⌘+o, ⌘+⇧+o: 定位檔案
    • ⌘+E, ⌘+⇧+E:最近瀏覽編輯過的檔案
    • ⌘-1,2,3,4…: 不同panel間切換
    • ⌘+⇧+F12: 編輯頁全頻展示
    • ⌘+⇧+a: 查詢action
    • ⌘+⌥+b: 從介面向下跳到實現
    • ⌘+u: 從實現向上跳回介面
  3. 編輯

    • ⌥+⏎:修改提示,還可以自動宣告變數
    • ⌘+n: 在 project-panel 中,新建檔案
    • ⌘+shift+n: 臨時測試可以使用 scratch-file, 不會放入到專案,會自動刪除
    • ⌘+n:在檔案內,可以生成 setter、getter、toString 等
    • ⌘+⏎+L: 格式化code
    • ⌘+-: 收起當前方法實現
    • ⌘+⇧+-:收起期所有方法實現
    • ⌘+y: quick definition, 不離開編輯頁
  4. 程式碼提交

    • ⌘+K: commit程式碼
    • ⌘+⇧+K:push程式碼。
      另外需要說明的一點是,提交程式碼會出現多個button讓你選擇,這時候可以使用Tab來切換選中的button,用空格來確認選擇,這樣整個提交程式碼的過程就都能純鍵盤操作了。

當然IntelliJ的快捷鍵還有很多很多,我的建議是不用刻意去記,使用過程中經常用到的功能,可以去查詢一下對應的快捷鍵,如果沒有的話,也可以自己去定義相應的快捷鍵,比如我自己設定的兩個常用的快捷鍵,一個是定位當前編輯檔案所在的目錄:
7.jpg
這樣我就能在Project這個panel中使用⌘+⌃+S 快速定位到我目前在編輯的檔案

另外一個很常用的快捷鍵是重新匯入jar包:8.jpg
這樣每次我編輯完pom之後,只要按一下⌘+I,就可以重新匯入依賴了(不開auto import是因為自動import它不知道我何時編輯完了,就一直再重新匯入,嚴重拖慢速度)

對於哪些是自己經常使用的功能,可以檢視IntelliJ中的 【Help】 -> 【Productivity Guide】, 會列出你最近常用的功能,以及使用次數,這樣就能根據自己使用情況去 KeyMap裡搜一搜對應的快捷鍵啦
9.jpg

總結

最後還是要強調一下,純鍵盤開發的目的是效率,不要為了純鍵盤而純鍵盤,就像很多人投入太多精力研究Vim或者Emacs一樣,其實說到底它只是一個編輯器,沒必要花費太多的精力在上面,玩的再溜又如何,能幫你升職加薪嗎,能解決實際業務問題嗎? 磨刀不誤砍柴工,使用好自己的工具,產出有價值的結果,不要陷入到研究工具的誤區裡去。


相關文章