summary refs log tree commit diff
path: root/.vim/plugin/hard.vim
blob: 07a346d814e7d562adcd822770b6b6f0d61026fc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
" hardmode == not using arrow keys

function! s:bail()
    let l:msg = 'E0X: Use hjkl'
    echohl ErrorMsg | echo l:msg | echohl None
endfunction

function! s:enable_hardmode(bang)
  if !a:bang
    try
      " map arrow keys to more useful actions
      " https://coderoncode.com/posts/vim-is-the-perfect-ide
      nmap r<up> :resize +2<CR>
      nmap r<down> :resize -2<CR>
      nmap r<left> :vertical resize +2<CR>
      nmap r<right> :vertical resize +2<CR>

      nmap w<up> :wincmd k<CR>
      nmap w<down> :wincmd j<CR>
      nmap w<left> :wincmd h<CR>
      nmap w<right> :wincmd l<CR>

      nmap wm<up> :wincmd K<CR>
      nmap wm<down> :wincmd J<CR>
      nmap wm<left> :wincmd H<CR>
      nmap wm<right> :wincmd L<CR>

      " or bail on them altogether
      nmap <up> :call <SID>bail()<CR>
      nmap <down> :call <SID>bail()<CR>
      nmap <left> :call <SID>bail()<CR>
      nmap <right> :call <SID>bail()<CR>

      vmap <up> :call <SID>bail()<CR>
      vmap <down> :call <SID>bail()<CR>
      vmap <left> :call <SID>bail()<CR>
      vmap <right> :call <SID>bail()<CR>

      imap <up> <esc>:call <SID>bail()<CR>
      imap <down> <esc>:call <SID>bail()<CR>
      imap <left> <esc>:call <SID>bail()<CR>
      imap <right> <esc>:call <SID>bail()<CR>
    catch
    endtry
  else
    try
      nunmap <up>
      nunmap <down>
      nunmap <left>
      nunmap <right>
      vunmap <up>
      vunmap <down>
      vunmap <left>
      vunmap <right>
      iunmap <up>
      iunmap <down>
      iunmap <left>
      iunmap <right>
    catch
    endtry
  endif
endfunction

call s:enable_hardmode(0)
command! -bang Hardmode call s:enable_hardmode(<bang>0)