19

我正在寻找一种方法来映射一些热键以在 Xcode 中“删除我的光标所在的行”。我在文本键绑定中找到了“删除到行尾”和“删除到行首”,但是无论我选择了什么,我都想念如何完全删除该行。TextMate 将此功能映射到 Ctrl+Shift+D,如果可能的话,我想要同样的东西。有任何想法吗?

4

8 回答 8

30

谢谢你的帮助,阿什利。经过一些实验,我映射了我最喜欢的 TextMate 命令(重复行、删除行)。我创建了文件~/Library/KeyBindings/PBKeyBinding.dict并添加了以下内容:

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );
    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:"
    );
}

添加的“deleteBackward:”在删除该行的内容后备份该行。您也可以只使用“selectLine:”。

于 2009-01-26T00:17:01.427 回答
14

您可以设置适用于所有 Cocoa 应用程序的系统范围的键绑定文件。

做你想做的事情应该是这样的:

在您的主文件夹中,Library/KeyBindings/DefaultKeyBinding.dict

{
    "^D" = (
        "moveToBeginningOfLine:",
        "deleteToEndOfLine:",
    );
}

我相信如果你只希望它适用于 Xcode,你可以命名文件PBKeyBinding.dict,但我自己没有尝试过。您可以在此处此处阅读有关此系统的更多信息。

于 2009-01-25T17:34:26.357 回答
11

因为我并不总是在同一个 xcode 上工作,所以我不想安装脚本。

Xcode 使用一些 emacs 命令的子集。我使用这种方法来快速删除一行。^k (control-k) 从光标处删除到行尾。这样做两次也会删除回车并占用下一行。^a 将您带到行首。

因此,要从头开始删除完整的行,您可以使用 ^a^k^k。

于 2011-11-19T11:51:16.673 回答
8

我一直在寻找解决方案,并尝试了 Ashley Clark 的解决方案,但事实证明,使用包含的名为 delete Line 的用户脚本有一个更简单的选项。

  • 打开看起来像卷轴的“帮助”左侧的奇怪菜单。
  • 选择编辑用户脚本...
  • 单击键绑定选项卡
  • 展开文本部分
  • 双击“删除行”旁边的 ⌘ 列,然后键入您的热键。它可能会警告您从其他命令中窃取了它,但这很好。

完毕!如果您像我一样是 Eclipse 迷,您可以对 Move Line Up 和 Move Line Down 执行相同的操作。

于 2010-04-04T00:50:59.807 回答
4
<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 > 首选项 > 键绑定]
  • 搜索“删除..”并创建新的快捷方式。
于 2014-10-31T08:12:46.327 回答
1

对于 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>
于 2017-06-17T11:27:50.700 回答
0

这对我有用(Xcode 4.4.1):

与此处描述的相同步骤:Xcode 重复行(Halley 的回答)

但不是:

selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:

采用:

selectLine:, moveToBeginningOfLine:, deleteToEndOfLine:

于 2012-09-01T15:48:55.490 回答
0

如果您在 Xcode 7.2 中的现代 Xcode(我曾经是)解决方案中遇到问题,请通过 Velthune 的回答执行 Opena在此处使用屏幕截图或文本形式提到的内容。由于我想要一个更直接的命令,我将命令简化为:

selectLine:, delete:, moveToBeginningOfLine:

当然,在 Xcode 的 Preferences >> Key Bindings 中,你可以直接在 Key 栏下找到命令双击,然后给它自己的 Ctrl+Shift+D 绑定。

这是我最终得到的截图

于 2016-01-09T04:14:30.750 回答