刚开始使用 Xcode 是因为它优美的界面, 且原生支持 C++. 后来机缘巧合开始开发 iOS 越发发现 Xcode 的强大: 线程堆栈, LLDB, Instruments, View Hierarchy, Memory Graph...
后来写 Python 时使用了 Vim, 一度痴迷于 Vim 强大的文本编辑能力, 于是每天都在寻找 Vim 插件, 试图用 Vim 代替 Xcode 进行日常开发. 直到有一天突然发现, 我想要的就是一个拥有强大文本编辑能力的 Xcode.
一切豁然开朗, 于是我开始着手配置 Xcode 的文本编辑功能...
先上一段日常开发常用的操作 GIF:
虽然没有 Vim 的模式切换, 但是也可以使用大部分文本操作, 这里主要用到的是:
- 删除: 完全删除单行, 删除单行到行首, 删除词组, 删除单词, 删除段落
- 替换: 替换单行, 替换词组
- 复制: 复制行尾词组, 复制词组, 复制单行.
另外还有向前删除单行, 向后删除单行, 全局替换, 剪切单行, 格式化粘贴单行等.
一. 系统自带快捷操作
首先 Xcode 原生自带的快捷键就非常实用了, CMD+,
打开Preferences->Code Binding->Text
可以看到常用的选择, 删除, 搜索等快捷操作, 如 Move Word Right
=> ⌥+→
: 光标向右按单词移动.
下面是比较常用的快捷操作:
Tips: 词组: someVariable 单词: some, variable
Operation | Default Key | Remark |
---|---|---|
Move Up | ^P, ↑ | 上移 |
Move Down | ^N, ↓ | 下移 |
Move to Beginning of Line | ⌘← | 移动到行首 |
Move to End of Line | ⌘→ | 移动到行末 |
Move to Beginning of Page | ⌘↑ | 移动到页面顶部 |
Move to End of Page | ⌘↓ | 移动到页面底部 |
Move Word Right | ⌥→ | 按单词右移 |
Move Word Left | ⌥← | 按单词左移 |
Selection | ⇧↑(↓←→) | 选中 |
Multiple Selection | ⇧⌘↑(↓←→) | 选中块 |
Delete Forward | ⌦ = Fn⌫ | 向后删除 |
Delete Subword Backward | ^⇧⌫ | 删除光标之前单词 |
Delete Subword Forward | ^⇧⌦ | 删除光标之后单词 |
Delete Word Forward | ⌥⌦ | 删除光标之后词组 |
Delete Word Backward | ⌥⌫ | 删除光标之前词组 |
Delete to Beginning of Text | ⌘⌫ | 删除到行首 |
Delete to End of Text | ⌘⌦ | 删除到行尾 |
Center Selection in Visible Area | ^L | 光标定位屏幕中央 |
Replace | ⌥⌘F | 替换 |
Replace All | 替换所有 |
二. 自定义快捷操作
实际使用时发现系统提供的删除只可以删除单词或词组某一方向的字符:
Deleteion System
所以, 决定自行添加快捷操作, 而 Xcode
本身就是一个OSX 应用程序, 所以我们可以找到相关文件去配置快捷操作, Application->Show Package Contents->Contents->Frameworks->IDEKit.framework->Resources->IDETextKeyBindingSet.plist
使用编辑器打开IDETextKeyBindingSet.plist
, 自行添加快捷操作:
如:
<key>Delete Current Word</key>
<string>moveLeft:, moveWordRight:, deleteWordBackward:</string>
效果为:
Deletion Custom
其中Cut Current Line
是显示在 Xcode 偏好设置内的快捷操作. moveToEndOfLine
是编辑器的文本操作相关的 API, 可以组合类似的 API 自定义操作.
下面是部分我自定义的操作, 也可以在这里查看完整版本:
编辑完成后, 重新打开 Xcode->Preferences->Key Bindings->Customized
, 为自定义的快捷操作添加快捷键
BTW
Xcode 还有很多好用的快捷方式, 如文件切换, 方法切换, 显示隐藏 Area, 快捷搜索, 多窗口切换等, 以及很多有趣的功能都可以探索.
另外也可以使用自定义的键盘进行辅助编程. 有兴趣的推荐尝试下 GH60 HHKB 配列.