gbjk / vim-colemak

Personal colemak key mappings for Vim.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

vim-colemak

Colemak key mappings for Vim. Trimmed and modified version of jooize,s configuration, which is a trimmed and modified version of Shai Coleman's configuration.

My version is decently minimized to change as few keys as possible. It has word navigtion on h and j, which is a quirk of my keyboard layout, so no one else will probably ever use this.

Install

  1. Use vim-plug.

  2. Add to .vimrc: Plug 'spiderforrest/vim-colemak'

  3. Run vim +PlugInstall

  4. You probably want to load vim-colemak last. Reload the plugin at the bottom of your Vim configuration.

    " Reload vim-colemak to remap any overridden keys
    silent! source "$HOME/.vim/bundle/vim-colemak/plugin/colemak.vim"
    

    with neovim:

    silent! source "$HOME/.config/nvim/bundle/vim-colemak/plugin/colemak.vim"
    

    Note: You might be using ~/.vim/plugged.

  5. See issues for conflicts with other plugins.

Key mappings

`12345 67890`     Move around:  |  (instead of)   `12345 67890-=
 zwfp,    .luy;-        i        |       k          qwert yuiop[]\
 arstg[  ]kneio'      n   o      |     h   l        asdfg HJKL;'
 qxcdb    mhjv/=        e        |       j          zxcvb nm,./

(  novx)  n = h (Left)     e = l (Right)     i = k (Up)     o = j (Down)

(  n  x)  v = v (Visual)   V = V (Visual line)
(  n   )  r = r (Replace)  R = R (Replace)
(  novx)  k = i (Insert)   K = I (Insert before first non-blank of line)
(  n   )  a = a (Append)   A = A (Append at end of line)
(  n   )  c = c (Change)   C = C (Change to end of line)

(  n   )  w = n (for navigating search)

(   o  )  r = i (Example: dip -> drp (Delete inner paragraph))

(  novx)  h = b  (back word)   
(  novx)  b = w  (word end)
(  novx)  j = e  (forward word)

(  n  x)  zn = zj (Next fold) 
(  n  x)  ze = zk (Previous fold)

(  n   )  l = o (open)

(  n  x)  <C-W>n = <C-W>h (Window left)
(  n  x)  <C-W>e = <C-W>j (Window down)
(  n  x)  <C-W>i = <C-W>k (Window up)
(  n  x)  <C-W>o = <C-W>l (Window right)

Lost:
(  n   )  Z (Quit)
(  n  x)  <C-W>n (Window down) [Use <C-W><C-N> = <C-W><C-N>]
(  n  x)  <C-W>i (Window down) [Use <C-W><C-I> = <C-W><C-I>]

Legend:
<C-X>     Ctrl-X
(c     )  Command-line mode
( i    )  Insert mode
(  n   )  Normal mode
(   o  )  Operator pending
(    v )  Visual+Select mode
(     x)  Visual mode

Issues

tpope/vim-fugitive keymap collision

" Fix for colemak.vim keymap collision. tpope/vim-fugitive's maps y<C-G>
" and colemak.vim maps 'y' to 'w' (word). In combination this stalls 'y'
" because Vim must wait to see if the user wants to press <C-G> as well.
augroup RemoveFugitiveMappingForColemak
    autocmd!
    autocmd BufEnter * silent! execute "nunmap <buffer> <silent> y<C-G>"
augroup END

Changes

2021-05-04

Rewrote the plugin, minimizing changes. Past ergonomics, I think preserving the letter of a command is better than the position of it-it's personally easier for me to remember the letters, and is signifigantly less complex for overall configuration.

2016–03–06

Restore turbo navigation

Add the following to your .vimrc:

" Turbo navigation (Colemak) {{{
    " Works with counts, see ":help complex-repeat"
    nnoremap <silent> H @='5h'<CR>|xnoremap <silent> H @='5h'<CR>|onoremap <silent> H @='5h'<CR>|
    nnoremap <silent> N @='5gj'<CR>|xnoremap <silent> N @='5gj'<CR>|onoremap <silent> N @='5gj'<CR>|
    nnoremap <silent> E @='5gk'<CR>|xnoremap <silent> E @='5gk'<CR>|onoremap <silent> E @='5gk'<CR>|
    nnoremap <silent> I @='5l'<CR>|xnoremap <silent> I @='5l'<CR>|onoremap <silent> I @='5l'<CR>|
" }}}

I removed turbo navigation since I felt it doesn't suit as default Vim mappings, which also frees up the keys for custom uses. I'm considering making it an option. Discuss!

About

Personal colemak key mappings for Vim.


Languages

Language:Vim Script 100.0%