【问题标题】:Xcode: Delete line hot-keyXcode:删除行热键
【发布时间】:2010-10-03 09:07:48
【问题描述】:

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

【问题讨论】:

  • 并不是说编辑不恰当,但到目前为止,在使用这个网站时,我只阅读了帖子的标题(尤其是当我浏览没有任何“新”帖子时我的标签”应用了。因此,将应用程序的标题置于问题中会引起 Xcode 程序员的注意。想法?
  • 这有用吗? Xcode duplicate/delete line
  • 查看stackoverflow.com/a/13049587/1771222 重现eclipse的删除行CTRL+D行为。

标签: objective-c xcode keyboard-shortcuts


【解决方案1】:

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

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

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

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

我相信如果您只想将它​​应用于 Xcode,您可以将文件命名为 PBKeyBinding.dict,但我自己没有尝试过。您可以在here 和here 阅读有关此系统的更多信息。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

【解决方案3】:

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

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

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

【讨论】:

  • 请注意,我尝试了“向上移动”和“向下移动”,但不幸的是,它们的故障和反应迟缓,真的不值得使用。
  • 在 Xcode 4 中,这是在 Xcode => Preferences... => Key Bindings 下,但我没有看到“删除行”。
  • 很好很简单,但你必须删除 ⌘d 的默认用法(首选项、键绑定、编辑->排序->添加到书签)。在初始加载之后,它已经足够快了。
【解决方案4】:

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

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

所以要从头开始删除一个完整的行,你可以使用 ^a^k^k。

【讨论】:

    【解决方案5】:

    这对我有用(Xcode 4.4.1):

    与此处描述的步骤相同:Xcode duplicate line(Halley 的回答)

    但不是:

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

    用途:

    selectLine:, moveToBeginningOfLine:, deleteToEndOfLine:

    【讨论】:

      【解决方案6】:
      <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 > 首选项 > 键绑定]
      • 搜索“Delete..”并创建新的快捷方式。

      【讨论】:

      • +1。这适用于 Xcode 6。我只是将键序列更改为 moveToBeginningOfLine:, deleteToEndOfLine:, deleteBackward:。
      【解决方案7】:

      如果您在 Xcode 7.2 中的现代 Xcode(我曾经是)中遇到问题,则可以执行 Opena mentioned here with screenshots 或 in text form via Velthune's answer 的操作。由于我想要一个更直接的命令,我将命令简化为:

      selectLine:, delete:, moveToBeginningOfLine:
      

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

      Here's a screenshot of what I ended up with

      【讨论】:

        【解决方案8】:

        对于 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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-01-29
          • 1970-01-01
          • 2020-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-07
          • 2020-06-03
          相关资源
          最近更新 更多