.ideavimrc file mapping Esc key - intellij-plugin

I would like this vim mapping to work in ideavim.
inoremap <S-Space> <Esc>
It maps Shift Space with Esc in insert mode.
Any ideas what to put in my .ideavimrc?

You can put exactly this line into your ~/.ideavimrc and it will result in the expected mapping.
You can try it interactively as well by typing :inoremap <S-Space> <Esc>.
Edit: It's currently not possible. Vote for VIM-1026 at IdeaVim's bug tracker to get updates.

Related

How to multiline toggle comments in IdeaVim

I started to use IdeaVim but I am missing the feature to proper toggle comments over multiple lines. On my vim config I am using nerdcommenter for this:
vmap ++ <plug>NERDCommenterToggle
nmap ++ <plug>NERDCommenterToggle
and my iTerm sends ++ to the terminal when I press CTRL + /
This works perfect and I can set a count before I toggle to comment out multiple lines.
I would like to have the same setup for my IdeaVim but I can not get it to work.
I tried to use commentary but when it seems that the gcc action ignores any number before it and always comments out the single line.

Issue with Overriding Default Keybinding in Atom Text Editor

I'm attempting to modify my keybindings in Atom.
So far I've been successful in adding a custom new keybindings via the keymap.cson file. However, I've encountered a problem when attempting to override a default one.
I'm trying to replace the default Ctrl + Shift + S, which is bound to Save as by default, to perform the Save all command instead. Of course, merely adding didn't work, so after a while I figured out I should unset! the key combination first. Now it looked way more promissing in the Key Binding Resolver.
This keymap produced following output in the Key Binding Resolver:
'body':
'unset!': 'core:save-as'
'ctrl-shift-S': 'core:save-all' # Key Binding Resolver claims this works fine
# but it doesn't do anything
'ctrl-shift-E': 'editor-stats:toggle' # works fine
'atom-text-editor':
'ctrl-shift-A': 'bracket-matcher:select-inside-brackets' # works fine
Despite that, however, the key binding Ctrl + Shift + S doesn't save anything at all. Accessing the command from the context menu works fine. I've searched the web, the core:save-all command seems to exist, it even has a default keybinding on Mac.
I am using the latest version of Atom on Windows 10, made sure no package conflicts with the keybind.
I'm really confused about this.
You can find commands by using the command palette.
Mac: CmdShiftP
Windows/Linux: CtrlShiftP
Looking for "save all" there, the only match for me is
Window: Save All
Ignore whatever key binding it may show next to it. What is important is the command name, "Window: Save All". You can convert that to a command selector with these steps:
Lowercase everything
Remove the space after :
Replace other spaces with -
This yields your selector: window:save-all.
So your key binding should be:
'ctrl-shift-s': 'window:save-all'
As the command's name suggests, this will save all tabs in all panes in the current window. It should not affect anything in other Atom windows.

How to auto-indent code in the Atom editor?

How do you auto-indent your code in the Atom editor? In other editors you can usually select some code and auto-indent it.
Is there a keyboard shortcut as well?
I found the option in the menu, under Edit > Lines > Auto Indent. It doesn't seem to have a default keymap bound.
You could try to add a key mapping (Atom > Open Your Keymap [on Windows: File > Settings > Keybindings > "your keymap file"]) like this one:
'atom-text-editor':
'cmd-alt-l': 'editor:auto-indent'
It worked for me :)
For Windows:
'atom-text-editor':
'ctrl-alt-l': 'editor:auto-indent'
The accepted answer works, but you have to do a "Select All" first -- every time -- and I'm way too lazy for that.
And it turns out, it's not super trivial -- I figured I'd post this here in an attempt to save like-minded individuals the 30 minutes it takes to track all this down. -- Also note: this approach restores the original selection when it's done (and it happens so fast, you don't even notice the selection was ever changed).
1.) First, add a custom command to your init script (File->Open Your Init Script, then paste this at the bottom):
atom.commands.add 'atom-text-editor', 'custom:reformat', ->
editor = atom.workspace.getActiveTextEditor();
oldRanges = editor.getSelectedBufferRanges();
editor.selectAll();
atom.commands.dispatch(atom.views.getView(editor), 'editor:auto-indent')
editor.setSelectedBufferRanges(oldRanges);
2.) Bind "custom:reformat" to a key (File->Open Your Keymap, then paste this at the bottom):
'atom-text-editor':
'ctrl-alt-d': 'custom:reformat'
3.) Restart Atom (the init.coffee script only runs when atom is first launched).
Package auto-indent exists to apply auto-indent to entire file with this shortcuts :
ctrl+shift+i
or
cmd+shift+i
Package url : https://atom.io/packages/auto-indent
I prefer using atom-beautify, CTRL+ALT+B (in linux, may be in windows also) handles better al kind of formats and it is also customizable per file format.
more details here: https://atom.io/packages/atom-beautify
You can just quickly open up the command palette and do it there
Cmd + Shift + p and search for Editor: Auto Indent:
This works for me:
'atom-workspace atom-text-editor':
'ctrl-alt-a': 'editor:auto-indent'
You have to select all with ctrl-a first.
This is the best help that I found:
https://atom.io/packages/atom-beautify
This package can be installed in Atom and then CTRL+ALT+B solve the problem.
On Linux
(tested in Ununtu KDE)
There is the option in the menu, under Edit > Lines > Auto Indent or press Cmd + Shift + p, search for Editor: Auto Indent by entering just "ai"
Note: In KDE ctrl-alt-l is already globally set for "lock screen" so better use ctrl-alt-i instead.
You can add a key mapping in Atom:
Cmd + Shift + p, search for "Settings View: Show Keybindings"
click on "your keymap file"
Add a section there like this one:
'atom-text-editor':
'ctrl-alt-i': 'editor:auto-indent'
If the indention is not working, it can be a reason, that the file-ending is not recognized by Atom. Add the support for your language then, for example for "Lua" install the package "language-lua".
If a File is not recognized for your language:
open the ~/.atom/config.cson file (by CTRL+SHIFT+p: type ``open config'')
add/edit a customFileTypes section under core for example like the following:
core:
customFileTypes:
"source.lua": [
"conf"
]
"text.html.php": [
"thtml"
]
(You find the languages scope names ("source.lua", "text.html.php"...) in the language package settings see here)
If you have troubles with hotkeys, try to open Key Binding Resolver Window with Cmd + .. It will show you keys you're pressing in the realtime.
For example, Cmd + Shift + ' is actually Cmd + "
You could also try to add a key mapping witch auto select all the code in file and indent it:
'atom-text-editor':
'ctrl-alt-l': 'auto-indent:apply'
I was working on some groovy code, which doesn't auto-format on save. What I did was right-click on the code pane, then chose ESLint Fix. That fixed my indents.
If you are used to the Eclipse IDE or the Netbeans, you can use the package eclipse-keybindings (https://atom.io/packages/eclipse-keybindings):
This Atom package provides Eclipse IDE key mappings for Atom. Currently, the Eclipse shortcuts are directly mapped to existing Atom commands.
To format all lines from a file, just use: Ctrl+Shift+F.
Ctrl+Shift+i worked for me in PHP under Windows ... but some files did not react. Not being the brightest it took me a while to work out that it was the include files that were the problem. If you are using echo(' ... PHP ...') then the PHP does not get re-formatted. To get over this, create a temporary PHP file, say t.php, copy the PHP part into that, reindent it (Ctrl+Shift+i ... did I mention that?) and then copy the newly reformatted PHP back into the original file. Whilst this is a pain, it does give you correctly formatted PHP.

Keyboard shortcut for going onelevel up in midnight commander [mc]

Is there a keyboard shortcut for going one level up in the directory tree in midnight commander (mc), which will save me from going all the up to the ..?
As shown below - say I'm in a directory that contains tonnes of stuff, and its painful to scroll all the way up. Its clickable, but nothing beats keyboard shortcuts!
If you go to Options->Panel-Options and tick the "Lynx-like motion" option you can use left-arrow to go to the parent directory and right-arrow to enter a directory.
Does Home, Enter count as a keyboard shortcut?
Short answer: No.
Longer answer: Ctrl + PageUp goes to the last diretory - not the parent, but this may be what you want in most cases.
(https://www.midnight-commander.org/ticket/2420)
Without changing the default setup Alt + Y and Alt + U go to previous and next directory in history, which may be enough on most cases (Alt + H to see the full history). If not, you always have Home, Enter.
Alt + Arrows are used to move between windows on byobu/tmux.
To add a custom shortcut (like Backspace) to your user config:
echo 'CdParentSmart = backspace' >> ~/.config/mc/mc.keymap # Globally in /etc/mc/mc.keymap
Here more related handy shortcuts.
In /etc/mc/mc.default.keymap find and uncomment CdParentSmart in [Panel] section. If it's not there, add it. And set a key you want. Behavoir similar to Total/Double Commander would be CdParentSmart = backspace. So it will backspace command line, if it's not empty. Or will level up from any place, if command line is empty.
The file should be edited when MC is not running, as it is resetting it to currently loaded settings on exit.

How do you quit the Vi editor with single keypress?

Because honestly
:wq!
is just too much to type.
Please note that the question is about original Vi (say Vi which comes with FreeBSD) not Vim.
Hold down the shift key and bang on Z twice.
ZZ is (mostly) equivalent to :wq!.
If you really want a single-keystroke solution, FreeBSD comes with the source so, in a pinch, you could modify that and re-compile. It's a bit of an overkill but it'll solve your problem.
What about "ZZ"? It has slightly different semantics to ":wq!", but is also slightly shorter.
This seems to work on solaris' old version of vi:
Version SVR4.0, Solaris 2.5.0
$ vi -c "map g ZZ" test
edit: Also, this seems to work:
$ vi -c 'map g :q!^M' test
Where ^M is actually, ^V (ctl-v) then ^M (ctl-m)
Map your favourite key to the :wq! command.
e.g. put this in your .vimrc:
map <F8> :wq!<CR>
Et voilá.
Edit:
Sorry, vim only, missed that.
Does :x work on Vi? Although for your case I guess it might be :x!
If you're using gvim you can close it with ALT+F4. Two keys, but one keypress.
If you're using vi in its own xterm, ALT+F4 should close the xterm, killing vi as well.
What's wrong with the tried and true?
:x
It's not one key press, but it's much less than :wq! which is what your question appears to truly seek.
Or is this a ViM only feature? My apologies if so.