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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
" My barebones vimrc without any Vundle dependencies.
"
" I'm attempting to optimize the following:
" - Minimize dependencies
" - Maximize ergonomics
" - Maximize Tmux compatibility
" - Minimize shadowing of existing Vim KBDs
"
" Warning: This is currently unstable as it is a work-in-progress.
"
" Author: William Carroll <wpcarro@gmail.com>
" Use <Space> as the leader key.
let mapleader = " "
nnoremap <leader>ev :tabnew<CR>:edit ~/.vimrc<CR>
nnoremap <leader>sv :source ~/.vimrc<CR>
nnoremap <leader>w :w<CR>
nnoremap <leader>h :help
" increment,decrement numbers
nnoremap + <C-a>
" TODO: Restore with better KBD
" nnoremap - <C-x>
" Visit the CWD
nnoremap - :e .<CR>
" Turn line numbers on.
set number
" Easily create vertical, horizontal window splits.
nnoremap sh :vsplit<CR>
nnoremap sj :split<CR>:wincmd j<CR>
nnoremap sk :split<CR>
nnoremap sl :vsplit<CR>:wincmd l<CR>
" Move across window splits.
" TODO: Change to <M-{h,j,k,l}>.
nnoremap <C-h> :wincmd h<CR>
nnoremap <C-j> :wincmd j<CR>
nnoremap <C-k> :wincmd k<CR>
nnoremap <C-l> :wincmd l<CR>
" TODO: Support these.
" nnoremap <M-q> :q<CR>
" nnoremap <M-h> :wincmd h<CR>
" nnoremap <M-j> :wincmd j<CR>
" nnoremap <M-k> :wincmd k<CR>
" nnoremap <M-l> :wincmd l<CR>
" Use <Enter> instead of G to support:
" 20<Enter> - to jump to line 20
" d20<Enter> - to delete from the current line until line 20
" <C-v>20<Enter> - to select from the current line until line 20
nnoremap <Enter> G
onoremap <Enter> G
vnoremap <Enter> G
" Easily change modes on keyboards that don't have CapsLock mapped to <Esc>
inoremap jk <ESC>
" CRUD tabs.
nnoremap <TAB> :tabnext<CR>
nnoremap <S-TAB> :tabprevious<CR>
nnoremap <C-t> :tabnew<CR>:edit .<CR>
nnoremap <C-w> :tabclose<CR>
" TODO: Re-enable these once <M-{h,j,k,l}> are supported.
" nnoremap <C-l> :+tabmove<CR>
" nnoremap <C-h> :-tabmove<CR>
" Use H,L to goto beggining,end of a line.
" Swaps the keys to ensure original functionality of H,L are preserved.
nnoremap H ^
nnoremap L $
nnoremap ^ H
nnoremap $ L
" Use H,L in visual mode too
vnoremap H ^
vnoremap L $
vnoremap ^ H
vnoremap $ L
" Emacs hybrid mode
" TODO: model this after tpope's rsi.vim (Readline-style insertion)
cnoremap <C-g> <C-c>
cnoremap <C-a> <C-b>
inoremap <C-a> <C-o>^
inoremap <C-e> <C-o>$
inoremap <C-b> <C-o>h
inoremap <C-f> <C-o>l
" Indenting
" The following three settings are based on option 2 of `:help tabstop`
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
|