我正在寻找一种方法来映射一些热键以在 Xcode 中“删除我的光标所在的行”。我在文本键绑定中找到了“删除到行尾”和“删除到行首”,但是无论我选择了什么,我都想念如何完全删除该行。TextMate 将此功能映射到 Ctrl+Shift+D,如果可能的话,我想要同样的东西。有任何想法吗?
8 回答
谢谢你的帮助,阿什利。经过一些实验,我映射了我最喜欢的 TextMate 命令(重复行、删除行)。我创建了文件~/Library/KeyBindings/PBKeyBinding.dict并添加了以下内容:
{
"^$K" = (
"selectLine:",
"cut:"
);
"^$D" = (
"selectLine:",
"copy:",
"moveToEndOfLine:",
"insertNewline:",
"paste:"
);
}
添加的“deleteBackward:”在删除该行的内容后备份该行。您也可以只使用“selectLine:”。
因为我并不总是在同一个 xcode 上工作,所以我不想安装脚本。
Xcode 使用一些 emacs 命令的子集。我使用这种方法来快速删除一行。^k (control-k) 从光标处删除到行尾。这样做两次也会删除回车并占用下一行。^a 将您带到行首。
因此,要从头开始删除完整的行,您可以使用 ^a^k^k。
我一直在寻找解决方案,并尝试了 Ashley Clark 的解决方案,但事实证明,使用包含的名为 delete Line 的用户脚本有一个更简单的选项。
- 打开看起来像卷轴的“帮助”左侧的奇怪菜单。
- 选择编辑用户脚本...
- 单击键绑定选项卡
- 展开文本部分
- 双击“删除行”旁边的 ⌘ 列,然后键入您的热键。它可能会警告您从其他命令中窃取了它,但这很好。
完毕!如果您像我一样是 Eclipse 迷,您可以对 Move Line Up 和 Move Line Down 执行相同的操作。
<key>Custom Keyword Set</key>
<dict>
<key>Delete Current Line In One Hit</key>
<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
</dict>
我建议在您的文件IDETextKeyBindingSet.plist中创建您的自定义字典。
所以:
- 关闭 Xcode;
- 打开终端;
- sudo nano /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
- 添加新的自定义部分,例如顶部的代码;
- 保存、退出和打开 Xcode;
- [Xcode > 首选项 > 键绑定]
- 搜索“删除..”并创建新的快捷方式。
对于 Xcode 9.0(beta),将自定义键字典插入 IDETextKeyBindingSet.plist 对我来说工作正常。如果 XCode 已经打开,则需要重新启动,下次启动后,您将在 KeyBindings 菜单下找到新的自定义快捷方式。
<key>Customized</key>
<dict>
<key>Delete Rest Of Line</key>
<string>deleteToEndOfLine:</string>
<key>Delete Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:</string>
<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, moveToBeginningOfLine:, paste:</string>
</dict>
这对我有用(Xcode 4.4.1):
与此处描述的相同步骤:Xcode 重复行(Halley 的回答)
但不是:
selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:
采用:
selectLine:, moveToBeginningOfLine:, deleteToEndOfLine:
如果您在 Xcode 7.2 中的现代 Xcode(我曾经是)解决方案中遇到问题,请通过 Velthune 的回答执行 Opena在此处使用屏幕截图或文本形式提到的内容。由于我想要一个更直接的命令,我将命令简化为:
selectLine:, delete:, moveToBeginningOfLine:
当然,在 Xcode 的 Preferences >> Key Bindings 中,你可以直接在 Key 栏下找到命令双击,然后给它自己的 Ctrl+Shift+D 绑定。