Key Mapping Interchange between IDEs
I use 5 of the Jet Brains products and I'm _constantly_ trying to fix my key mappings between each of them to be consistent with the set I memorized a dozen years back.
I completely understand that not all key mappings make sense in all IDEs. However, the bulk of the commands are the same across IDEs.
I've tried exporting/importing key mappings from and into phpStorm, Rider, AppCode, DataGrip and WebStorm every way I can think of and in both directions. I've tried using a settings repository in git. I've tried configuring Toolbox to set the same configuration folder for all applications.
If you guys could *please* tell me how to do this correctly it would be greatly appreciated.
I don't care if it is some complex solution where I have to hook my own code into your stack somehow. Just tired of having this problem.
Please sign in to leave a comment.
Please can you specify what problems sharing keymaps between IDEs (using Settings repository) you have faced?
The fundamental problem statement is this:
If I set up a keyboard shortcut for "Split Vertical" as "^S,V" in WebStorm, I then have to go assign it manually in Rider, DataGrip, RubyMine, AppCode, PHPStorm, and PyCharm.
I've tried synchronizing settings through a git repository, and I've tried exporting and importing settings. I've tried creating "custom keymaps" and that has also failed.
The following is a detailed walk through on one of the many attempts I've made to get the keybindings synchronizing between the IDEs.
0) Freshly install WebStorm and Rider, select the "Do not import settings" option on initial startup
1) Open WebStorm, Open Preferences, Navigate to Keymap
2) Create a copy of "Mac OS X 10.5+" and name it "Adam-Custom"
3) Assign the keyboard short cut "^S, V" to "Split Vertically"
4) Open the File Menu and select 'Settings Repository'
5) In the dialog that opens, input the repository path
6) Select the "Overwrite Remote" option, then close WebStorm
7) Open Rider
8) Open the File Menu and select 'Settings Repository'
9) Provide the same repository path
10) Select the "Overwrite Local" option
11) Open Preferences and navigate to Keymap
12) When I open the Keymap drop down list and look for "Adam-Custom", it is not present
I've also tried the above steps by just modifying the built in key mappings like "Mac OS X 10.5+"
Even though "Mac OS X 10.5+" exists in both Rider and WebStorm, changes to one key mapping are not synchronized to the key mapping of the same name in the other IDE.
Consider that one of JetBrain's advantages is that nearly every function of the software can be key mapped. I love that aspect. So long as I was only using one of your IDEs, this problem never came up. Now that I've decided I like your product enough to replace all of my IDEs with your tools, I have this issue.
I'm really hoping that I have missed something obvious and that there is a simple fix to this.
Looks similar to https://youtrack.jetbrains.com/issue/IDEA-147760
When I hit "Overwrite Local" for the first time, settings are actually synchronized (files copied to current IDE configuration dir), but aren't applied (i.e. I can't see my keymaps, etc. when I open preferences). Restarting the IDE or running "Overwrite Local" for the second time fixes the issue
I run into the same problem as Adamlenda. I use several Jetbrains product and love the ability to remap keys. But I have to do this for every product:
- Webstorm
- Goland
- Pycharm
- Datagrip
It quickly adds up.
As a user I want to have my keymapping shared between all ide's.
I found that, after syncing the settings repository, by pressing "overwrite local", I needed to select the keyboard mapping. For example, if in one tool I had made a keymap called "default-copy", then in the second tool, after syncing, I had to go into settings and select the "default-copy" keymap. (The same is true for the color scheme.)
I have never gotten this to work, it is downright embarrassing at this point.
They have the best IDE's in the market, and they have never been able to make this seemingly simple thing work.
I'm seriously considering switching this shit is driving me crazy.
charles sanders
It is a pain in the but for sure. I've got it working using the settings repo solution.
The built-in settings sharing feature has never worked right for me.
At this point, I have even setup additional "read only" repos for sharing settings within specific teams w/o messing with my globally shared settings.
Hit me up on Skype (adam.lenda) and I'll try to help you through it.
--Adam
@Cluengo thank you that worked for me. (https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000553984/comments/360000303240)
It seems PyCharm was in fact syncing to my settings repository (which is an export of my IntelliJ settings), but it was not then automatically choosing the custom keymap. This actually makes sense since you're just saving all of your settings to the settings repository, without a concept of the "currently active" keymap but it does seem to be creating a common gotchya even for very experienced users like myself and others posting here.
Vote for have a better support tackling this issue https://intellij-support.jetbrains.com/hc/en-us/community/posts/360004134900-IntelliJ-Platform-and-Fragmentation-Issues
I just use PHPStorm and PyCharm (on Mac and Linux), and doesn´t understand why I have to use two Keyboard Shortcuts on some actions. For example:
Delete Complete Line (Mac)
And there are others, like Run, Select Word, Find Next, Close Tab, and etc
Would be nice to remember just one keyboard map
The trick for me with syncing me keymap is what @... mentioned: simply syncing the settings wasn't enough, I needed to select the custom keymap from the dropdown in the keymap settings. My IDE didn't pick up automatically that I wanted to use the custom keymap. It was still using the default. Thanks for the tip Cluengo!
I managed to transfer settings manually between PhpStorm and Goland:
copy file from
to
(IDEs installed via JetBrains Toolbox)
To find correct file path, here is what you need to do: create keymap with bright name like COPYME (I also added one random key mapping for sure but it must not be mandatory), then use shell's find to search for file COPYME.xml, this is the folder where your keymap must be in, in the other IDE path must be similar, otherwise you can repeat COPYME trick.
So copy from one into another and you are done. Keymappings file contains only reassigned keys, the rest is inherited from parent scheme (see file contents, it is easy understandable).
Warning! After you copied file into target IDE's folder, restart that IDE, then it will see new keymap in dropdown list of available keymaps.
I tried to use settings repo, but the need to reset whole settings is too brutal, so I rather copy-paste configs once, since I dont need to change them often. But If you really need, you can do same trick with settings repo: when you press "File -> Manage IDE settings -> Restore default settings" IDE will make backup copy of all your settings (and shows where it is on your filesystem), so you get folder with config files to copy from. When using Settings repo it seems like it uses some different paths for some configs, you can investigate them by these COPYME trick that I described above.
I find this solution Argon mentioned actually works! You can easily find the .xml file using Everything.
Maybe it is too late to write a solution to this problem, but I've figured out a simple and fast way to do that. So firstly open the IDE you want to transfer keymaps settings from and go to File→Manage IDE Settings→Export Settings (on macos, on Windows it may differ) and tick only the “keymaps” and “keymaps schemes” options. Then you can simply go to your another IDE and repeat this action again but now choose “import settings” and choose those you'd exported before. Maybe the best way so far to deal with this issue, I'm not sure.
The previous comment kind of worked for me. But the keymap my keymap was based on was missing. Letting the IDE install it when the absence was detected and then reimporting got my keymap working.
See my comment on the other thread describing a possible solution