将IntelliJ键绑定导入Xcode

Hon*_*fus 23 macos xcode keymapping intellij-idea key-bindings

Xcode的键盘图是否与JetBrains的产品相同?(IntelliJ键映射)

我尝试使用谷歌搜索,但谷歌在这种情况下是完全无用的,因为它在搜索"将intellij键绑定到xcode"时,以相反的方式呈现结果(将Xcode键映射导入IntelliJ产品).

我不想看到自己手动重新分配所有绑定:)

Fra*_*cia 6

我刚刚创建了一个存储库,其中部分 IntelliJ 绑定已迁移到 xCode 模板(包括自定义重复行)。请随意查看、尝试并不断改进。遗憾的是,我们实现这一目标的唯一方法是手动完成。

https://github.com/FrangSierra/Xcode-IntelliJ-Keybinds

还有另一个具有深色 IntelliJ 颜色主题的存储库,以防你们中的任何人发现它有趣!

https://github.com/FrangSierra/Xcode-IntelliJ-Dark-Color-Theme


Jee*_*ter 4

TL;DR:这对于两个编辑器处理键绑定的方式来说似乎是不可能的。

\n\n
\n\n

我使用 AppCode 2019.2 和 Xcode 10 对此进行了测试。我首先尝试查找这两个 IDE 在磁盘上保存键盘映射文件的位置。

\n\n
\n\n

Xcode 将其键盘映射文件保存为\xe2\x81\xa8Library\xe2\x81\xa9 \xe2\x96\xb8 \xe2\x81\xa8Developer\xe2\x81\xa9 \xe2\x96\xb8 \xe2\x81\xa8Xcode\xe2\x81\xa9 \xe2\x96\xb8 \xe2\x81\xa8UserData\xe2\x81\xa9 \xe2\x96\xb8 \xe2\x81\xa8KeyBindings\xe2\x81\xa9文件.idekeybindings。在 TextEdit 中打开它会显示它是一个 plist 格式的文件:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict/>\n</plist>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有点惊讶地发现它是空的,但决定尝试通过设置自定义键绑定来手动触发更新。再次打开文件显示 Xcode 只存储键绑定的差异:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n    <key>Menu Key Bindings</key>\n    <dict>\n        <key>Key Bindings</key>\n        <array>\n            <dict>\n                <key>Action</key>\n                <string>orderFrontAboutPanel:</string>\n                <key>Alternate</key>\n                <string>NO</string>\n                <key>CommandID</key>\n                <string>Xcode.IDEKit.CmdDefinition.AboutXcode</string>\n                <key>Group</key>\n                <string>Xcode Menu</string>\n                <key>GroupID</key>\n                <string>Xcode.IDEKit.MenuDefinition.Main</string>\n                <key>GroupedAlternate</key>\n                <string>NO</string>\n                <key>Keyboard Shortcut</key>\n                <string>~`</string>\n                <key>Navigation</key>\n                <string>NO</string>\n                <key>Title</key>\n                <string>About Xcode</string>\n            </dict>\n        </array>\n        <key>Version</key>\n        <integer>3</integer>\n    </dict>\n</dict>\n</plist>\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以,理论上,如果我们从 Intellij 获取键绑定,并将它们格式化为像 Xcode 那样,应该没问题

\n\n
\n\n

然后我们转向Intellij平台。幸运的是,我不需要花太多时间寻找这些关键文件,因为 Intellij 已经记录了它们

\n\n

Intellij 的键盘映射位于 下~/Library/Preferences/IntelliJIdea2019.2/keymaps。就我而言(使用 AppCode),它位于下面~/Library/Preferences/AppCode2019.2/jba_config/mac.keymaps/,令我惊讶的是,它也是空的。尝试设置手动按键绑定会导致与我在 Xcode 中看到的类似行为:

\n\n
<keymap version="1" name="Default for macOS copy" parent="Mac OS X 10.5+">\n   <action id="EditorBackwardParagraph">\n     <keyboard-shortcut first-keystroke="shift ctrl meta alt back_quote" />\n   </action>\n</keymap>\n
Run Code Online (Sandbox Code Playgroud)\n\n

不幸的是,上面链接的同一文档也证实了这一点,其中指出:

\n\n
\n

每个键盘映射文件仅包含相对于父键盘映射的差异。

\n
\n\n
\n\n

因此,除非您将每个键绑定都自定义,否则目前无法将键绑定从一个键绑定导出到另一个键绑定。当然,您可以手动执行此操作,但正如您所说,这会适得其反。

\n