Xcode 4 idekeybindings为一次击键提供多个命令

Xcode 4 idekeybindings为一次击键提供多个命令,xcode,xcode4,Xcode,Xcode4,正在拼命地定制Xcode 4键绑定 我正在编辑user.idekeybindings文件(xcode有时会在打开时修改该文件,然后尝试通过key bindings接口进行更新时将其清除-可爱) 我的理解是,提供一组命令(选择器)而不是一个字符串应该执行所有这些命令 <key>Text Key Bindings</key> <dict> <key>Key Bindings</key> <dict>

正在拼命地定制Xcode 4键绑定

我正在编辑user.idekeybindings文件(xcode有时会在打开时修改该文件,然后尝试通过key bindings接口进行更新时将其清除-可爱)

我的理解是,提供一组命令(选择器)而不是一个字符串应该执行所有这些命令

<key>Text Key Bindings</key>
<dict>
    <key>Key Bindings</key>
    <dict>
        <key>@L</key>
        <string>selectLine:</string>
        <key>@d</key>
        <array>
            <string>selectLine:</string>
            <string>deleteBackward:</string>
        </array>
    </dict>
    <key>Version</key>
    <integer>3</integer>
</dict>
文本键绑定
按键绑定
@L
选择行:
@d
选择行:
向后删除:
版本
3.
在这种情况下,我的selectLine:for命令-shift-l可以正常工作

我的command-d向我发出嘟嘟声,但失败了。如果我删除数组中的任一命令,但将其留在数组中,则该命令有效(不管是哪个命令)。但一旦我把它们结合起来,它就惨败了


有人知道我做错了什么吗?缺少关于如何实现这一点的知识令人沮丧。

仅仅因为可以向xml结构中添加一个包含两个函数的数组,并不意味着Xcode在解析文件时正在查找它


如果读取文件的代码检查了值是数组还是字符串,然后执行了一些循环,这将按照您认为应该的方式运行。我猜Xcode正在读取与键相关的值,看到它不是一个字符串,然后用那美妙的嘟嘟声为您唱小夜曲。

您想要做的是完全可能的。(至少在XCode 10中,这是我在撰写本文时使用的代码)

不要将命令放入数组中:

<array>
  <string>selectLine:</string>
  <string>deleteBackward:</string>
</array>

选择行:
向后删除:
只需将它们放入一个字符串条目中,并确保它们以逗号分隔,如下所示:

<string>selectLine:, deleteBackward:</string>
selectLine:,deletebackup:

干杯

您以前可以使用XCode 3实现这一点。我不是凭空说出来的。:)当我有一个包含1个命令的数组时,它会读取并执行它。当我向数组中添加第二个命令时,它会阻塞。虽然Xcode 4支持Xcode 3文件,但它是为Xcode 4重写的。如果你有一个项目文件只与两个项目文件中的一个一起工作,我会提交一个bug。项目文件?这与这里的问题无关。@Bob My bad,但这并没有改变任何事情,它仍然是一个重新实现的遗留格式。我不想让苹果的法律部门来找我,所以我故意不去深入研究问题的细节。我花了一个夏天在Xcode 4上工作;