Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marcoieni/intellimacs
Spacemacs' like key bindings for IntelliJ platform.
https://github.com/marcoieni/intellimacs
ideavim intellij spacemacs vim
Last synced: 27 days ago
JSON representation
Spacemacs' like key bindings for IntelliJ platform.
- Host: GitHub
- URL: https://github.com/marcoieni/intellimacs
- Owner: MarcoIeni
- License: mit
- Created: 2019-02-09T18:39:42.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-06-09T06:33:06.000Z (5 months ago)
- Last Synced: 2024-09-26T05:22:12.101Z (about 1 month ago)
- Topics: ideavim, intellij, spacemacs, vim
- Language: Vim Script
- Homepage:
- Size: 544 KB
- Stars: 537
- Watchers: 14
- Forks: 94
- Open Issues: 3
-
Metadata Files:
- Readme: README.org
- Contributing: docs/CONTRIBUTING.org
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
#+TITLE: Intellimacs
[[http://spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]]
[[file:docs/preview.gif]]
* Presentation
This project tries to mimic [[http://spacemacs.org][Spacemacs]] key bindings in IDEs based on the [[https://www.jetbrains.com][IntelliJ]]
platform, i.e. IntelliJ IDEA, PyCharm, CLion, PhpStorm, WebStorm, RubyMine,
AppCode, DataGrip, GoLand, Rider, Cursive, and Android Studio.For instance, ~SPC f f~ in Spacemacs opens a file, so it makes sense to map it
to the "GotoFile" IntelliJ action.* How it works
This project can be seen as a set of configuration files for the [[https://plugins.jetbrains.com/plugin/164-ideavim][IdeaVim]] plugin,
which enables vim emulation inside IntelliJ platform.
=~/.ideavimrc= is the file where IdeaVim lets you add Vim initialization
commands, i.e. this file is like =~/.vimrc= for vim.IdeaVim parses the [[https://github.com/JetBrains/ideavim/blob/master/src/com/maddyhome/idea/vim/package-info.java][most common]] vim commands, together with the custom
=:action {name}= command, used to execute arbitrary IDE actions.
To list all IDE actions use the command =:actionlist [pattern]=.Intellimacs provides different files, which can be included individually in
your own =.ideavimrc=, in order to get only the functionalities you want.* Key bindings
Intellimacs is composed of three modules:
- spacemacs :: Contains Spacemacs settings and key bindings
that can be replicated with a similar behaviour in the IntelliJ platform.
- extra :: Contains settings and key bindings not present in
Spacemacs, but that may be useful in the IntelliJ platform.
- major :: Contains key bindings that start with ~SPC m~, that may
or may not be present in some Spacemacs major mode.Furthermore, Intellimacs provides some of the features of Spacemacs hybrid
mode, which may be enabled by sourcing the file =~/.intellimacs/hybrid.vim=.Read [[file:docs/KEYBINDINGS.org][KEYBINDINGS.org]] to see all 200+ available key bindings.
* Installation
1. Go to the IDE's plugin manager (File -> Settings -> Plugins) and install
the following plugins:
- [[https://plugins.jetbrains.com/plugin/164-ideavim][IdeaVim]]: vim emulation
- (Optional) [[https://plugins.jetbrains.com/plugin/15976-which-key][Which-Key]]: menu that shows the available commands as you type
2. Clone this repository in your home directory:
#+begin_src sh
git clone https://github.com/MarcoIeni/intellimacs ~/.intellimacs
#+end_src
3. In your home directory, create the file =.ideavimrc= and edit it in order to
include the modules you want by sourcing the relative source files.
In the following there is an example of =.ideavimrc= file that includes all
the functionalities offered by Intellimacs.
In this file you can also include your own vim commands.
#+begin_src vimrc
source ~/.intellimacs/spacemacs.vim" (Optional) Enable other Intellimacs modules
source ~/.intellimacs/extra.vim
source ~/.intellimacs/major.vim
source ~/.intellimacs/hybrid.vim" (Optional) Enable which-key plugin
source ~/.intellimacs/which-key.vim" (Optional) My own vim commands
nnoremap Y y$" (Optional) Comma for major mode
nmap , m
vmap , m" (Optional) Add/edit actions
nnoremap gl :action Vcs.Show.Log
vnoremap gl :action Vcs.Show.Log
#+end_src
4. (optional) source your vimrc file by adding the line =source ~/.vimrc= in
=.ideavimrc= (you may break something).* Update
In order to update run =git pull= inside the intellimacs directory.Read [[file:docs/CHANGELOG.org][CHANGELOG.org]] to see what changed.
* Suggested plugins
[[file:docs/PLUGINS.org][PLUGINS.org]] contains a list of useful plugins that help to replicate the Spacemacs experience.* Tips
** Go back to code
The key bindings work only when you are inside the code.
For example, if you are inside the project window they don't work.
Press ~~ to focus the last visited code window and you will be able to
use spacemacs key bindings again.** Scroll menus without arrow keys
In order to scroll menus without using arrow keys, press ~SPC f e d~ to go to
IDE's settings and set a custom shortcut for the actions =Down= and =Up= in the
menu =Keymap -> Editor Actions=.
For example, you can bind them respectively to =Ctrl + j= and =Ctrl + k=.
If you have some conflicts, search the editor action the key is assigned to,
right click and remove the binding.** Open a file in Emacs with keyboard shortcut
In order to open a file in Emacs with a keyboard shortcut follow [[https://www.jetbrains.com/help/idea/using-emacs-as-an-external-editor.html][this]] guide.* Resources
- [[https://github.com/JetBrains/ideavim][IdeaVim]]
- [[https://resources.jetbrains.com/storage/products/intellij-idea/docs/IntelliJIDEA_ReferenceCard.pdf][Intellij default keymap]]
- [[https://www.jetbrains.com/help/idea/sharing-your-ide-settings.html#settings-repository][Share IDE settings]]* Contributions
Intellimacs needs _you_ to keep it up to date and propose great and useful key
bindings.Before contributing, be sure to read [[file:docs/CONTRIBUTING.org][CONTRIBUTING.org]] first!
* Related projects
- [[https://github.com/MarcoIeni/spaceclipse][Spaceclipse]] - Spacemacs' like key bindings for Eclipse
- [[https://github.com/SpaceVim/SpaceVim][SpaceVim]] - A community-driven modular vim distribution
- [[https://github.com/VSpaceCode/VSpaceCode][VSpaceCode]] - Spacemacs' like key bindings for Visual Studio Code (thanks for
the inspiration)* Related projects (No Spacemacs keys)
- [[https://glimpse.ieni.dev][Glimpse]] - Mnemonic key bindings for VSCode commands