【问题标题】:How do I create a Delete-Line Keyboard shortcut in Xcode 8? The Xcode 3 solutions do not work anymore如何在 Xcode 8 中创建删除行键盘快捷键? Xcode 3 解决方案不再起作用
【发布时间】:2011-08-15 14:24:57
【问题描述】:

在以前的Xcode 版本中,可以创建一个键绑定来删除当前行。有不同的解决方案,例如在这里进行了描述:

Xcode: Delete line hot-key

Xcode duplicate/delete line

http://bigdiver.wordpress.com/2009/09/11/configure-homeend-key-bidings-on-mac-os-x/

http://www.betadesigns.co.uk/Blog/2010/02/03/custom-xcode-shortcuts/

所有解决方案都包括修改以下文件之一:

~/Library/Application Support/Xcode/Key Bindings/*.pbxkeys
~/Library/KeyBindings/DefaultKeyBinding.dict
~/Library/KeyBindings/PBKeyBinding.dict

Xcode 4 中现有快捷方式的一个很好的资源是 http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html 。有很多关于删除的列表,但没有列出“删除行”。

但是,自 Xcode 4 以来,这些解决方案确实有效。

更新: 问题仍然与Xcode 5.1.1 相同

更新: 问题仍然与Xcode 6.1 GM Seed 2 相同

更新: 截至 2016 年 4 月 26 日,仍适用于 Xcode 版本 7.3 (7D175)

更新: 六年后,Xcode 8.3 有了一个内置的解决方案。请参阅下面的答案。

【问题讨论】:

  • 同时我决定用keyboardmaestro.com创建一个键盘宏。
  • 我想下面列出了一些解决方案。我个人使用的是 Keyboard Maestro 宏。

标签: xcode macos xcode4 xcode8 keyboard-shortcuts


【解决方案1】:

貌似Xcode 8.3终于添加了Delete Line命令?

默认情况下,没有为其分配键盘快捷键,因此您需要自己添加一个:

  1. 打开 Xcode > 首选项 > 键绑定
  2. 搜索Delete Line
  3. Key 列中添加键盘快捷键(例如,controloptionD

【讨论】:

  • 哇!不错的收获!没想到会发生这种事!
  • 有没有人知道还有什么变化?
  • @Klaas me too man,没想到会看到这个!我在 Xcode 8.2.1 和 Xcode 8.3.2 IDETextKeyBindingSet.plist 文件之间运行了一个差异,检测到的唯一变化是上面的这个 Delete Line 命令:(
  • @FelixTurner 你试过新的 Xcode beta 2 了吗?
  • 我在 Xocde 9 Beta 中找到了解决方法。请看下面我的回答。 stackoverflow.com/a/45868495/1287336
【解决方案2】:

我为 Xcode 9 找到了一个临时解决方法。

打开 Xcode/Content/Frameworks/IDEKit.framework/Resources/IDETextK‌​eyBindingSet.plist 并添加以下行。

它模仿了 Xcode 8 中发生的动作,但支持有限。它只能删除一行,但我很满意。我希望这将很快得到解决。

<key>Customized</key>
<dict>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:, moveDown:, deleteBackward:</string>
</dict>

重启Xcode后,您可以在Key Bindings中看到自定义项,如下所示。

绑定使用!

编辑) 我认为下面的一个比原来的更好。

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

【讨论】:

  • Xcode 9 正确答案在这里。它适用于 Xcode 9 版本 9.0 (9A235)
  • 为什么这会在 Xcode 9 中中断?这对我有点用。我必须替换现有 Delete Line 字符串值的值,而不是添加自定义键。
【解决方案3】:

试试这个:

  1. 首先打开Xcode->Preferences

  2. 选择键绑定

  3. 搜索删除段落

  4. 删除段落更改为您的快捷方式

【讨论】:

  • 我不知道为什么其他人不使用这个简单的解决方案。请投票给它,因为其他的要复杂得多。这也是您应该这样做的方式:通过键绑定
  • 在 Xcode 版本 9.0 (9A235) 中执行 Delete Paragraph 没有任何反应。你在 Xcode 9 中测试过吗?
【解决方案4】:

首先打开Xcode->Preferences

选择键绑定

然后搜索删除

Delete The End Of Line更改为您的快捷方式(我更喜欢CMD + D

就是这样

【讨论】:

  • 嗯...这不会删除整行。
  • 你应该将光标设置在行首
  • 好,这个和ctrl-k一样
【解决方案5】:

XCode 5 和 6 的简单解决方案:

安装 alcatraz:http://alcatraz.io/ 然后用它来安装“XCodePlus delete line”插件:

Window &gt; Package manager

还有lots of other awesome plugins

【讨论】:

    【解决方案6】:

    Rhubarb 的答案是正确的并且有效,但有一件事,plist 文件中有更简单的命令。 遵循Rhubarb 的所有指示,但是

    而不是

    <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
    

    在下面使用

    <string>selectLine:, delete:</string>
    

    这样更清楚,排除任何故障的可能性。

    我想写这篇评论,但我的“声誉”不允许我这样做。

    【讨论】:

    • 将您的解决方案与this answer 混合可以解决问题。确实感谢
    【解决方案7】:

    我用BetterTouchTool,很酷:

    【讨论】:

    • 不错的选择,修改 plist 并不总是好的。并且容易丢失设置。帮助 Apple 使其适合。
    • 解决问题的非常好的选择。不幸的是,这不是一个原子动作,所以如果你想撤销,你必须按 Cmd Z 两次(两次删除)。窗口管理器也很有用(我也推荐 Spectacle)。
    • BTT 是一个非常棒的工具。此外,只要 Apple 有您可以结合起来做您正在寻找的操作的操作,这种方法就可以很好地证明未来。
    • 我没有考虑过使用 BTT(因为我已经在使用了!)比在应用程序中编辑内容要好得多。另外,您可以在机器之间同步配置,这是我需要的。
    【解决方案8】:

    知道了!这适用于 XCode 4.3 到 4.5,不需要额外的应用程序并且是 XCode 特定的。

    这个方案和here描述的Duplicate Line命令基本一样:

    编辑 plist 文件

    位于 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

    注意:

    • 链接的答案建议为此使用 XCode,但我发现这会使 XCode 崩溃
    • 此路径适用于 Lion - 它可能因其他操作系统版本而异
    • 您可能需要 sudo 或更改权限才能编辑此文件
    • 编辑前关闭 XCode

    添加一个新的&lt;dict&gt; 元素

    在此文件底部的 &lt;dict&gt; 结尾处添加此文本

        <key>Custom</key>
        <dict>
          <key>Delete Current Line In One Hit</key>
          <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string> 
        </dict>
    

    注意:

    • 这是现有的&lt;dict&gt;,所以在这之后有一个&lt;/dict&gt;&lt;/plist&gt;
    • 这会将命名操作“一键删除当前行”与字符串中的三个关键操作相关联。我在这里尝试了不同的选项以获得正确的组合。例如,如果您尝试 moveToBeginningOfLine、deleteToEndOfLine 而不是反之亦然,那么在空行上使用它会删除该行整个下一行。这是不愉快的

    保存并打开 XCode

    在 XCode 中添加新的键绑定

    linked answer 中查看屏幕截图或执行以下操作:

    1. 打开 XCode 首选项
    2. 选择键绑定
    3. 点击全部
    4. 在搜索框中键入“删除”并搜索“一键删除当前行”
    5. 添加您的新绑定。

    应该这样做,但有一个警告。我永远无法让 XCode 保存 新绑定。 here 描述了同样的问题,尽管我的解决方法略有不同:

    1. 创建默认绑定的副本(点击绑定窗口左下方的 + 按钮并创建副本)
    2. 在副本中设置新绑定
    3. 关闭首选项对话框(这就是变体!)
    4. 再次打开首选项,复制旧副本并删除旧副本。

    多么冗长,嗯?但它有效。现在我已映射 Ctrl+D 以删除 Lion 上 XCode 4.3 中的整个当前行。

    【讨论】:

    • 更新:我发现这个解决方案令人恼火的一个限制是它一次只删除一行,即使你选择了一大堆。我的自然倾向是选择 3 行并按 ctrl+D 并将它们全部擦除 - 但事实并非如此。
    • 请注意,如果您安装了新版本的 XCode,这将不会保留,而您通常的键绑定自定义将保留。 (我通过重命名旧的 XCode.app 并重新安装新的来“升级”)。实际的键绑定在 ~/Library... 所以它们被保留了,但是这个新条目不是
    • 是的,它在 Xcode 5 中工作并保存了键绑定,因此可能会鼓励其他人认为值得费心:)
    • @Rhubarb 要通过在这些行中选择文本并点击快捷方式来一次删除多行,只需在命令序列前面添加一个delete:delete:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:。如果您将其编辑到您的答案中,那就太好了。
    • 这适用于 Xcode 6.2 (6C86e),而且我也不需要解决方法来使 Xcode“保存”键绑定。耶! :)
    【解决方案9】:

    如果您是 Keyboard Maestro 用户,只需创建一个执行以下操作的宏:

    • 命令左箭头
    • 向下箭头键
    • 删除

    我将它分配给 Command-D,并使其仅在 Xcode 中可用。

    【讨论】:

    • 我正在使用 Better Touch Tool,您应该也可以在其中分配它。
    【解决方案10】:

    经过大量搜索,我得出了以下解决方案:

    按住control键,然后按AKK

    (注意:第二个K删除空行)。

    其实是两个命令的组合:Move to Beginning of Paragraph & Delete to End of Paragraph。您还可以使用/设置其他键,也可以使用/设置/更改其他命令的键绑定,例如Move to Beginning of Line & Delete to End of Line。我使用了上述(默认)键绑定,因为它们适合我。

    编辑:

    要删除多个连续行,首先按住control键,然后按A (只是转到段落/行的开头),然后按住 K 直到所有行都被删除(这将起作用,因为光标仍然在开头)。

    只是为了让任务变得简单(对我来说),我为Delete to End of Paragraphhome/end 设置了 commandD 转到段落的开头/结尾。

    【讨论】:

    • 不错的解决方案,但我真的在寻找一个捷径。例如,如果我想删除 TextWrangler 中的 5 行,只需按 5 次 cmd-d。奇怪的是Xcode中没有使用cmd-d...
    • @Klaas,请查看我的更新答案。这可能不是您所期望的,但它仍然是一个很好的解决方案。
    • 一旦你的回答得到一些支持,我会接受它,因为 Xcode 4 不会很快包含这个。
    • xCode 太糟糕了! - 使用 android studio 的 Android 开发者。
    • 有史以来最长的快捷键 CTRL+A+K+K 删除当前行
    【解决方案11】:

    好像现在不能做...如果我错了,请随时纠正我...但这是我的新解决方案...

    转到 xcode 首选项,然后转到键绑定选项卡。复制默认设置,这样当我提出的建议破坏了你将使用的东西时,你就不会生我的气。

    找到两个相邻且未用于您使用的任何命令的键...“;”,“'”也许。(我不将命令 n 用于新文件,所以我选择了 n,m)

    将第一个键设置为“移动到行首”,第二个键设置为“删除到行尾”

    然后使用该序列删除一行...

    alternate 会设置一些东西来选择行,然后使用 delete。

    【讨论】:

      【解决方案12】:

      如果您不介意在其他应用程序中使用该键绑定,您可以尝试在通用 Cocoa 键绑定中进行设置。 This有解释。

      【讨论】:

      • 我已经试过了,但是全局键绑定在 XCode 4 中不起作用。我在 TextMate 中测试了它们,它们在那里工作。所以我做了正确的修改。
      【解决方案13】:

      看起来 XCode 现在使用 plist 文件而不是 dict 文件,并且新格式不支持向键绑定添加多个命令。似乎也没有办法添加自定义命令以绑定到任何一个。我发现让某些东西起作用的唯一方法是为单独的操作设置键绑定,例如^D 用于deleteToEndOfLine:,然后^L 用于moveToBeginningOfLine:,给你^L+^D 给你综合效果。

      【讨论】:

      • 已经有一些默认值来处理这个问题。 ^k 表示“删除到行尾”,cmd-delete 表示“删除到行首”。
      • 在常规(全局)keybindings.dict 文件中,我们将单独的命令放入一个数组中,这样就可以了。
      猜你喜欢
      • 2011-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多