Xcode 4中的idekeybindings如何让一个按键触发多个命令

7

我正在努力定制Xcode 4的按键绑定。

我正在编辑用户.idekeybindings文件(当xcode在修改时打开并随后尝试通过按键绑定界面更新时,有时会将其清除 - 真可爱)

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

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

在这种情况下,我的selectLine:对于command-shift-l命令可以正常工作。
我的command-d会响铃并失败。如果我删除数组中的任一命令,但将其留在数组中,则该命令有效(无论哪个命令都可以)。但是,一旦我将它们组合起来,就会彻底失败。
有人知道我在这里做错了什么吗?缺乏关于如何做到这一点的知识令人沮丧。

1
另外,https://dev59.com/mFbTa4cB1Zd3GeqP7x01 - Steve
2个回答

0

仅仅因为你可以在 XML 结构中添加带有两个函数的数组,并不意味着 Xcode 在解析文件时会查找它。

如果读取文件的代码检查值是数组还是字符串,然后进行一些循环,这将按照您所期望的方式运行。我猜测 Xcode 正在读取与键相关联的值,看到它不是字符串,然后用那可爱的蜂鸣声向您致敬。


1
你以前可以用XCode 3来做到这一点。我不是凭空想象的。 :) 当我有一个包含1个命令的数组时,它会读取并执行。当我将第二个命令添加到数组中时,它就会出错。 - Bob Spryn
虽然Xcode 4支持Xcode 3文件,但它是为Xcode 4重写的。如果您有一个仅适用于其中一种的项目文件,则应提交错误报告。 - brysgo
1
项目文件?那跟这个问题没有真正的关系。 - Bob Spryn
@Bob,我的错,但这并没有改变任何事情,它仍然是一个重新实现的遗留格式。我不想让苹果公司的法律部门找上我,所以我故意没有深入研究问题的具体细节。我曾经花了一个夏天的时间在 Xcode 4 上工作。 - brysgo

0

您想要做的事情是完全可行的。(至少在我撰写本文时使用的XCode 10中是这样的)

不要将您的命令放入数组中:

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

将它们简单地放入一个字符串条目中,并确保它们用逗号分隔,如下所示:

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

干杯!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接