
Escape key alternatives in Vim - EduardoBautista
https://eduardobautista.com/escape-key-alternatives-in-vim/
======
K0nserv
I've been using jk for quite some time now. It's definitely my favourite
improvement over stock vim. You can sort of roll your fingers with your right
hand index and middle finger which makes it super fast.

------
mpobrien
Remapping caps lock to ESC has been my preferred method for this, I'd suggest
giving it a try!

~~~
falcolas
Better, IMO, to use it as a control key (you can do so much with the control
key inside a terminal). Of course, why not both?

[http://www.economyofeffort.com/2014/08/11/beyond-ctrl-
remap-...](http://www.economyofeffort.com/2014/08/11/beyond-ctrl-remap-make-
that-caps-lock-key-useful/)

------
Tempest1981
A coworker with RSI mapped a foot switch to Escape. Something like this:
[https://www.kinesis-ergo.com/shop/advantage-3-pedal/](https://www.kinesis-
ergo.com/shop/advantage-3-pedal/)

~~~
dongslol
I've thought of using one of those to map a parenthesis to each foot, for
Lisp.

------
bilalq
The article mentions that you can set custom mappings to escape and uses this
as an example:

    
    
        imap jj <Esc>
    

If you're interested in doing that, I'd strongly recommend you never do a
plain `imap` and instead always do `inoremap` (this advice applies to `nmap`,
`vmap`, and the like as well). The difference is that the noremap variant is
non-recursive [0].

Also, since we're on the subject of escape alternatives, I may as well mention
mine. It really bothers me that exiting insert mode moves your cursor back a
space. To remedy that, I've got a custom mapping that escapes and them jumps
to the mark at which insert mode last was [1]. The mapping is:

    
    
        inoremap jj <Esc>`^
    

[0]:
[http://learnvimscriptthehardway.stevelosh.com/chapters/05.ht...](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html#nonrecursive-
mapping)

[1]:
[http://vimdoc.sourceforge.net/htmldoc/motion.html#`^](http://vimdoc.sourceforge.net/htmldoc/motion.html#`^)

~~~
EduardoBautista
I'll go ahead and update it. Thanks for the info!

------
simplicio
I use alt-[keystroke], which changes to normal mode and executes [keystroke].
So if the first command I intend to execute in normal mode is simple, I get
that plus the mode change in one keystroke. If the command is complicated, I
just use alt-l (moves the cursor one space) which I find easier to hit than
ctrl-[ or esc.

As a bonus, it works in readlines vi mode as well.

------
threatofrain
I'm surprised of no mention of mapping <esc> to <caps> \-- it's such a sweet
modification to Vim. I'd do it regardless of Apple's touchbar announcement.

~~~
ErikCorry
I haven't done this because I'm trying to stop chording: pressing two keys
simultaneously with the same hand. I'm pretty sure it causes RSI (try Googling
chording and RSI).

When I have to type all caps, I find myself chording a lot. The alternative is
to always use the right shift for capital letters on the left and vice versa,
but that doesn't work well for all caps words. Therefore I'm trying to learn
to actually use caps lock.

Admittedly it's not going very well

~~~
chubot
Vim solution: type in all lower case, then select what you just typed and
press ~.

Admittedly it doesn't help for non-Vim applications, but I don't find myself
typing all caps outside Vim very often. It's usually to type something like
FOO_BAR, but then you can just type FO<Ctrl-N> and that usually works.

~~~
typicalrunt
~ is for one character. If you have a word you want in caps, do gUw. For
lowercase, it's guw.

~~~
chubot
~ works under visual selection.

------
valbaca
I use "kj" for escape, "lkj" for escape-and-save, and ";lkj" for escape-and-
save-and-quit since I can roll my fingers faster that way that doing "jk" or
"jj"

It also has the advantage of usually being a no-op in visual mode (kj moves
up, then moves down). "jk" has the same advantage. Whereas "jj" will move you
down.

I also have my caps-lock key mapped to escape.

(EDIT: learning from bilalq
[https://news.ycombinator.com/item?id=13101691](https://news.ycombinator.com/item?id=13101691))

    
    
        "during insert, kj escapes, `^ is so that the cursor doesn't move
        inoremap kj <Esc>`^
        "during insert, lkj escapes and saves
        inoremap lkj <Esc>`^:w<CR>
        "during insert, lkj escapes and saves and QUITS
        inoremap ;lkj <Esc>:wq<CR>

------
red2awn
I mapped <esc> to jk, though I don't use vim that often.

------
cygned
That's my setup.

    
    
        vnoremap <C-c> <Esc>
        inoremap <C-c> <Esc>
        inoremap <Esc> <nop>
        vnoremap <Esc> <nop>

------
IgorPartola
Off topic: I love vim and use it for everything from writing love notes to
assembly. Lately I've picked up using Vue.js with the new .vue files using
ES6. What code highlighting plugin have y'all successfully used for the JS/ES
portion of the file that does highlighting well and doesn't just stop working
if you scroll up and down in the file? It's driving me a little batty.

~~~
aeosynth
There is a vim-vue plugin: [https://github.com/posva/vim-
vue](https://github.com/posva/vim-vue)

I'm getting by with the stock html syntax:

    
    
        au BufNewFile,BufRead *.vue set filetype=html

~~~
IgorPartola
My current plugin list is:

    
    
        Bundle 'scrooloose/syntastic'
        Plugin 'tmhedberg/SimpylFold'
        Plugin 'ipartola/igor-vim'
        Plugin 'othree/yajs.vim'
        Plugin 'mxw/vim-jsx'
        Plugin 'leafgarland/typescript-vim'
        Plugin 'posva/vim-vue'
        Plugin 'bronson/vim-trailing-whitespace'

------
kough
Ctrl-c and Ctrl-[ are my favorite -- once you remap caps lock to control (so
that control is where it was when these interfaces were designed), you have a
simple, 2-hand chorded escape with minimal stress on the keys.

Does anyone here remap backspace to something else? My right wrist has been
particularly RSI sensitive in the last month or so and I've noticed that
reaching for backspace tends to set it off.

~~~
ErikCorry
I have backspace on my left thumb: [https://www.kinesis-
ergo.com/shop/advantage2/](https://www.kinesis-ergo.com/shop/advantage2/)

Highly recommended for Linux or Windows desktop computers if you have RSI
trouble. A bit unwieldy for laptops though. I use both and switching isn't a
big issue (unlike switching national keyboards, which drives me crazy). It
doesn't quite have enough modifiers for Mac - can't have both left and right
versions of shift, alt, ctrl and command.

Vi users have to swap the up-arrow and the down-arrow since they use the same
fingers as j and k, but reversed. However, it's pretty easy to remap, and it
happens in the keyboard so it works everywhere.

------
ibiza
You can reduce the lag of using <Esc> with:

    
    
        set timeout timeoutlen=1000 ttimeoutlen=10

~~~
kough
Very cool trick, thanks for sharing. Is there any reason I wouldn't want this?

~~~
jks
Arrow and function keys are mapped to escape sequences, so if you use vi over
a slow or unreliable connection your arrow keys could randomly get interpreted
as escape followed by some commands.

------
ErikCorry
jk works pretty well. Actually faster to type than jj

------
nikkisnow
I prefer to use <,><e> to escape out of insert mode.

