Skip to content

Personal colemak key mappings for Vim.

Notifications You must be signed in to change notification settings

spiderforrest/vim-colemak

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 

Repository files navigation

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vim Script 100.0%