Xcode 快捷鍵使用方法

于 Mac 工作效率的文章一直層出不窮,然而并非所有內容都適合程序員,比如某些 Unix 命令,其實使用頻率非常低。作為一名iOS 程序員,我嘗試著和大家分享一些能夠切實提高我們開發效率的小技巧。

我是無鼠標主義者,任何需要鼠標的操作在我看來都是極為低效的。Mac 的觸摸板非常好用,但是我依然在嘗試避免使用觸摸板。因為雙手保持在鍵盤區域更適合編程。雖然觸摸板不可能被避免(比如瀏覽網頁),但我希望至少在 Xcode 中不使用它。

所以,本文會和大家分享一些系統級快捷鍵,Xcode、Chrome、iTerm 等應用中的快捷鍵,以及常用的工具,比如 Vim 和 Git 的使用。這里面除了 Xcode,其他都是通用的,如果你不是 iOS 開發者,建議自行查閱相關 IDE 的快捷鍵。

綜述

一部分人可能認為,快捷鍵用起來很別扭,還不如自己用觸摸板(鼠標)來得方便。然而你應該意識到,使用觸摸板的效率是有上限的,當你熟悉快捷鍵后,速度遠比現在快得多。

這一點,在學習 vim 時尤其重要。你不應該關注完成一個命令需要多久,而應該關注需要多少個按鍵,你可以認為在形成肌肉記憶后,按鍵的思考時間為0。所以我們得出一個結論:

總時間 = 按鍵數 * 一個常數(表示單次按鍵時間)。

因此,評價 vim 中一個操作的優劣,通常用高爾夫分數來表示,它表示完整這個操作需要幾次按鍵。

但是!!!快捷鍵是提高效率的手段,但它不會提高代碼質量。既要堅持學習,也要適可而止,萬萬不可主次顛倒。

關鍵不在于你學會了多少快捷鍵,而是你有多少工作是可以通過快捷鍵來完成的,目的在于提高效率,僅此而已。

一種很強大,通用的的方法是 設置->鍵盤->快捷鍵->應用快捷鍵 然后精確匹配應用中的快捷鍵名,這個通常需要配合 CheatSheet 來實現。當你覺得某個快捷鍵不好用的時候,也可以通過這種方式去修改。

應用內快捷鍵替換

在設置快捷鍵時,需要避免全局快捷鍵和應用快捷鍵沖突,同時也要注意一些常用操作在多個應用內保持統一。

我建議將 Caps Lock 與 Ctrl 鍵對調,因為大小寫切換鍵的使用頻率非常低,而 Ctrl 的使用頻率顯然高于他,因此有必要將大小寫切換鍵放到最不容易觸碰到的地方。

下面我會介紹一些我常用的快捷鍵,它們大部分是系統自帶的,也有少部分是我自己定義的。

入門

絕大多數應用的 preference 頁面都是通過Command + ,打開的。

剪切,復制,粘貼,撤銷,重做,光標移動到行首和行尾,這些基礎操作必須掌握。

Snap

相信很多人都有這樣的煩惱:如果應用不全屏,那么桌面上顯示的窗口太多,每個窗口的顯示內容不夠多。如果應用全屏,那么切換應用是很麻煩的。要么用Command + Tab,要么手勢滑動,但無論哪一種,時間復雜度都是 O(n)。有沒有 O(1) 的方法呢?答案是使用神器:snap

我主要是以應用首字母或者關鍵字母作為標識,配合Command + Shift前綴:

Xcode:J

Chrome:K

iTerm:L

Markdown 相關:M

QQ:Y

微信:U

SoureceTree:S

MacVim:V

Evernote:E

Dock:1/2/3/4:因工作需要,我常用的是備忘錄,郵件,日歷,設置

;這個鍵我沒有啟用,但它實際上是一個非常方便的快捷鍵。

Dock 欄應用的選擇需要一定的權衡。顯然最快的方式是只按Command,但是這種全局快捷鍵會導致大量沖突。而Controll和Option鍵又非常難以觸摸,所以我選擇了Command + Shift作為所有應用的快捷鍵前綴。

注意避免字母o和f,它們在 Xcode 中有特殊的用處。

Snap

Xcode 快捷鍵

編譯、運行,Instruments,單元測試,暫停這些基本操作就不解釋了。我把一些自認為比較有用的命令加粗表示:

文件編輯

Command + [和Command + ]左右縮進

Command + Option + [和Command + Option + ]當前行上下移動

Command + Option + Left/Right折疊、展開當前代碼段

文件跳轉

Command + Control + Up/Down.h 和 .m 文件切換

Command + Control + Left/Right瀏覽歷史切換

Command + Control + j跳轉到定義處

Command + Option + j跳轉到目錄搜索

Command + 1/2/3/4/5跳轉到左側不同的欄目

Comannd + Shift + o文件搜索

搜索

Comannd + Shift + f全局搜索

Command + e搜索當前選中單詞

Command + g搜索下一個

tab

Command + t新建一個 tab

Command + w關閉當前 tab

Command + Shift + [和Command + Shift + ]左右切換 tab

Scheme

Command + shift + ,編輯 scheme,選擇 debug 或 release

調試

F6:跳到下一條指令

F7:跳進下一條指令(它會跳進內部函數,具體效果自測)

Control + Command + y繼續運行

其他

Command + k刪除 Console 中的內容

Command + d打開/關閉 控制臺(修改系統快捷鍵:Show/Hide Debug Area)

獲得更全面的快捷鍵介紹,請參考:這篇文章

Vim 常用快捷鍵

入門指南:簡明 Vim 練級攻略

在我的 git 上有一份 Vim 的配置,先下載到~/目錄下,然后建立軟連接:

rm .vimrcln-s.vim/.vimrc .vimrc

推薦一個 Mac 上的 Vim 軟件:MacVim,它比在終端中看 Vim 更好一些。打開 MacVim 后,輸入以下命令安裝插件:

:BundleInstall

進入輸入模式

i在光標前面進入輸入模式,a在光標后面進入輸入模式

I在行首進入輸入模式,A在行尾進入輸入模式

o在下一行行首進入輸入模式,O在上一行行首進入輸入模式

文本操作

yy復制當前行,dd剪切當前行,p復制。注意這里用的都是 Vim 自帶的剪貼板。

U撤銷,**Ctrl + r重做

x刪除光標所在的字母

cae或bce刪除當前光標所在的單詞,并進入編輯模式

數字+命令重復命令 n 次,比如3dd

光標移動

^到本行開頭,$到本行末尾

/111或111G跳轉到 111 行,gg第一行,G最后一行。

e移動到本單詞的結尾,w移動到下一個單詞的開頭。

%匹配當前光標所在的括號(小括號,中括號,大括號)

*查找與光標所在單詞相同的下一個單詞

f + 字母跳轉到字母第一次出現的位置,2fb跳轉到字母 b 第二次出現的位置

t + 字母跳轉到字母第一次出現的前一個位置,3ta跳轉到字母 a 第三次出現的前一個位置

f 和 t 換成大寫,表示反方向移動查找。dt + 字母表示刪除字母前的所有內容。

舉一反三

比如0y$,從行首復制到行尾,ye表示

從當前位置復制到本單詞結尾。

a或i

action可以是任何的命令,比如d,y,v等

object可以是w單詞,p段落,或者是一個具體的字母

a和i的區別在于i表示 inner,只作用于內部,不含兩端。

思考一下,有多少種方法可以刪除光標當前所在單詞?

答案:diw,daw,caw,ciw,bce,bde。

思考一下他們的原理,后兩者不太推薦(有可能跳到前一個單詞)。

如果是選中當前單詞呢?

除了以上基本語法,我還在整理一套 《Vim 基礎練習題》,等完成之后會與大家分享。

實戰

給多行添加注釋:

v:進入可視狀態

nj: 向下選擇n行, 或者輸入Shift ]跳到段尾

Command + /添加注釋

在 MacVim 中,git blame無比清晰:

Snap

Chrome

Command + l焦點移動到地址欄

Shift + Option + Delete/Left向左刪除/選中一個單詞(可以自定義為Ctrl-w)

Command + y搜索歷史

Command + 數字快速切換 tab

Command + shift + []左右切換 tab

Command + t/w新建/關閉 tab

Command + e/g搜索選中,前往下一個,或者用Command + f和回車。

可以看到,Chrome 中涉及到 tab 的操作應該與 Xcode 盡量保持一致。

iTerm2

Ctrl w刪除前一個單詞

Command + r清除屏幕上的內容

Command + t/w打開/關閉 tab

Command + 數字切換到第 n 個 tab

雙擊選中一個單詞,自動復制

iTerm 可以通過Command + shift + []來左右切換 tab,也可以通過Command + Left/Right切換,后者其實是多余的,而且不符合習慣。

所以參考這篇文章或者自行查閱 Google,在 Preference->Keys->Global Shortcut Keys 中,設置好Command加上左右鍵,和刪除鍵的對應操作。

Git

git的本質是對指針的操作。

掌握git的add、commit、stash、pull、fetch這些基本操作

理解什么是本地倉庫,什么是遠程倉庫,理解多人開發時的merge和conflict的概念

掌握分支的使用,掌握checkout命令的使用

熟練掌握git rebase操作,包括git rebase -i和git rebase --onto,掌握一種 git 工作流。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容