是否有一个Xcode的键盘图,它会使它的行为与JetBrains的产品相同? (IntelliJ键映射)
我尝试使用谷歌搜索,但谷歌在这种情况下是完全没用的,因为它在搜索“将intellij键绑定到xcode中时”将相反的结果呈现(将Xcode键映射导入IntelliJ产品)。
我不希望看到自己手动重新分配所有绑定:)
答案 0 :(得分:2)
我刚刚创建了一个存储库,并将部分IntelliJ绑定迁移到了xCode模板(包括自定义重复行)。随意看一下,尝试一下并不断改进。遗憾的是,我们实现此目标的唯一方法是手动完成。
https://github.com/FrangSierra/Xcode-IntelliJ-Keybinds
还有另一个主题为深色IntelliJ的存储库,以防万一您觉得有趣!
https://github.com/FrangSierra/Xcode-IntelliJ-Dark-Color-Theme
答案 1 :(得分:1)
我使用AppCode 2019.2和Xcode 10对此进行了测试。我首先尝试找到两个IDE在磁盘上将其键盘映射文件保存在何处。
Xcode将其键盘映射文件保存在Library ▸ Developer ▸ Xcode ▸ UserData ▸ KeyBindings
中并作为.idekeybindings
文件。在TextEdit中打开它发现它是一个plist格式的文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
我发现它为空感到有些惊讶,但决定尝试通过设置自定义按键绑定来手动触发更新。再次打开文件表明Xcode仅存储键绑定的差异:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Menu Key Bindings</key>
<dict>
<key>Key Bindings</key>
<array>
<dict>
<key>Action</key>
<string>orderFrontAboutPanel:</string>
<key>Alternate</key>
<string>NO</string>
<key>CommandID</key>
<string>Xcode.IDEKit.CmdDefinition.AboutXcode</string>
<key>Group</key>
<string>Xcode Menu</string>
<key>GroupID</key>
<string>Xcode.IDEKit.MenuDefinition.Main</string>
<key>GroupedAlternate</key>
<string>NO</string>
<key>Keyboard Shortcut</key>
<string>~`</string>
<key>Navigation</key>
<string>NO</string>
<key>Title</key>
<string>About Xcode</string>
</dict>
</array>
<key>Version</key>
<integer>3</integer>
</dict>
</dict>
</plist>
然后,我们转向Intellij平台。幸运的是,对于这些because Intellij already documented them密钥文件,我不必做很多事情。
用于Intellij的键盘映射位于~/Library/Preferences/IntelliJIdea2019.2/keymaps
下。就我而言(使用AppCode),它在~/Library/Preferences/AppCode2019.2/jba_config/mac.keymaps/
下,令我惊讶的是,它也是空的。尝试设置手动键绑定的行为与我在Xcode中看到的行为类似:
<keymap version="1" name="Default for macOS copy" parent="Mac OS X 10.5+">
<action id="EditorBackwardParagraph">
<keyboard-shortcut first-keystroke="shift ctrl meta alt back_quote" />
</action>
</keymap>
不幸的是,上述链接的同一文档也证实了这一点,其中指出:
每个键映射文件仅包含相对于父键映射的差异。
因此,除非您自定义每个键绑定,否则当前无法将键绑定从一个导出到另一个。当然,you can do it manually,但正如您所说的那样,适得其反。