XCode Text Editor note
寫程式最常用到的就是Editor,使用時間最常所以要加快寫程式的速度,
Editor的熟悉度有相當的影響,通常沒有好用的IDE環境下小弟的首選
Editor是VIM,主要是他的編輯功能實在太強大,ㄧ有些時候也會用
Emacs比如再OSX下的macVim不知道為什麼就是不好用,又怪怪的可是
Aquamacs就相當好用,這時候當然使用Aquamacs拉。
開發Cocoa程式也可以使用vim或是emacs,不過這種依附在龐大Framework
的程式開發,一個專門的IDE可以提供的方便性絕對值得我們離開慣用的
Editor來使用,這邊介紹一些比較好用的特性。
常用熱鍵
- Cmd+double click (⌘double click):跳到定義
- {}前後double click: 選取block
- cmd+option+up (⌘⌥↑): head file 和 implement file 間切換
- cmd+shift+d (⌘⇧D): 快速開檔
Focus Follow Selection
Xcode 提供的一個滿實用的功能,可以再 View->Code Folding->Focus Follow Selection
開啟或關閉,開啟後Xcode會自動判斷目前游標所在位置的程式和上下文的關係
,比如function,if block等等。 (參考下圖)
Fold
Fold 這功能幾乎都有,可以直接再Xcod text editor案右鍵從menu選擇
這邊把比較常用的熱鍵列出,小弟以為手不要離開鍵盤使用熱鍵才是家快速度的
不二法門,因此每次使用奇怪功能我一定要確認是否有hot key可以使用。
| Description |
Key |
symbol |
| Fold method |
ctrl+cmd+up |
⌃⌘↑ |
| unfold method |
ctrl+cmd+down |
⌃⌘↓ |
| fold comment |
ctrl+shift+cmd+up |
⌃⇧⌘↑ |
| unfold comment |
ctrl+shift+cmd+down |
⌃⇧⌘↓ |
Scope Edit
Scope edit 就是方便的 symbol rename,先點兩下要改名的symbol (變數,method name...)
然後到 Edit->Edit All in Scope (或是熱鍵 ctrl+cmd+t [⌃⌘T])修改,可以看到
整個scope中都修改了,假如想在修改前檢查,可以使用命令 Edit->Select next placehold
(或是熱鍵 ctrl+/ [⌃/])跳至下一個。
Text macro
Textmate上面的超好用的功能code snippet其實xcode也是有的,再xcode editor中輸入for
然後按下esc(⎋)可以看到列舉的code complete選項
選擇 for loop 就可以看到 xcode已經幫你打好大部分的code,你要做的只剩填上該填的部份
即可,和Scope Edit一樣你可以使用(ctrl+/ ⌃/)來遊走每一個要填的欄位。
列舉內建的縮寫
| Text macro name |
prefix |
| if Block |
if |
| if/else Block |
ifelse |
| Else if Block |
elseif |
| for Loop |
for |
| for i Loop |
fori |
| While Loop |
while |
| do-while loop |
do |
| switch block |
switch |
| case block |
case |
| Enum definition |
enum |
| strunt definition |
struct |
| union definition |
union |
| type definition |
typedef |
| printf() |
printf |
| #pragma mark |
pm |
| Pragma Mark |
pragma |
| #import |
pim |
| #import(framework) |
pimf |
| #import(system) |
pims |
| #include |
pin |
| #include(system) |
pins |
| #if block |
pif |
| #ifdef block |
pifd |
| #if/else |
pife |
| #ifdef/else |
pifde |
| #if 0 |
pifz |
| copyright comment |
copyright |
| comment selection |
comment |
| separator comment |
cseparator |
| Try/Catch block |
@try |
| Catch block |
@catch |
| finally block |
@finally |
| NSLog() |
log |
| alloc/init call |
a |
| array declaration |
aa |
| Mutable Array decl |
ma |
| Array for Loop |
fora |
| Array Foreach Loop |
fore |
| nit Definition |
init |
| dealloc Definition |
dealloc |
| bind:defined |
bind |
| @interface defined |
@interface |
| @implementation |
@implemen |
| @protocol |
@protocol |
| NSString |
nss |
| NSMutableString |
nsms |
| NSArray |
nsa |
| NSMutableArray |
nsma |
| NSDictionary |
nsd |
| NSMutableDictionary |
nsmd |
Run Shell Command
選取遇執行的指令,案熱鍵ctrl-r (⌃r)
ex: 選取ls
執行後 (ctrl + R)