-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvimrc.keybindings
163 lines (141 loc) · 5.98 KB
/
vimrc.keybindings
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
scriptencoding utf-8
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Key Mappings {{{1
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
"make < > shifts keep selection
vnoremap < <gv
vnoremap > >gv
" Exit insert mode without ESC. uncomment if you need it.
"inoremap jk <Esc>
nnoremap <leader>/ :Ack!<space>
"nnoremap <leader><space> :call whitespace#strip_trailing()<CR>
" nnoremap <leader>g :GitGutterToggle<CR>
" reload vimrc
noremap <silent> <leader>fR :source ~/.vimrc<CR>:filetype detect<CR>:exe ":echo 'vimrc reloaded'"<CR>
" in case you forgot to sudo
cnoremap w!! %!sudo tee > /dev/null %
" Wrapped lines goes down/up to next row, rather than next line in file.
noremap j gj
noremap k gk
" switch windows with two keystroks
" from Ben Klein's post http://blog.unixphilosopher.com/2015/02/five-weird-vim-tricks.html
noremap <C-h> <C-w>h
noremap <C-j> <C-w>j
noremap <C-k> <C-w>k
noremap <C-l> <C-w>l
" Define prefix dictionary
let g:lmap = {}
let g:llmap = {}
"let g:lmap = {
" \'m' : {'name' : 'easymotion'},
" \'a' : {'name' : 'applications'},
" \'c' : {'name' : 'comment'},
" \'e' : {'name' : 'errors'},
" \'f' : {'name' : 'file'},
" \'g' : {'name' : 'git/version control'},
" \'j' : {'name' : 'jump'},
" \'t' : {'name' : 'toggle'},
" \'x' : {'name' : 'text'},
" \}
" Second level dictionaries:
let g:lmap.a = { 'name' : 'applications' }
let g:lmap.a.u = { 'name' : 'UltiSnips' }
let g:lmap.c = { 'name' : 'comment' }
let g:lmap.e = { 'name' : 'errors' }
let g:lmap.f = { 'name' : 'file' }
let g:lmap.g = { 'name' : 'git/version control' }
let g:lmap.j = { 'name' : 'jump' }
let g:lmap.m = { 'name' : 'easymotion'}
let g:lmap.t = { 'name' : 'toggle' }
let g:lmap.x = { 'name' : 'text' }
let g:lmap.x.a = { 'name' : 'align' }
" 'name' is a special field. It will define the name of the group.
" leader-f is the "File Menu" group.
" Unnamed groups will show a default string
" easy-motion
let g:lmap.m['f'] = ['<Plugin>(easymotion-s)', 'Find char to bidirection']
let g:lmap.m['l'] = ['<Plugin>(easymotion-bd-jk)', 'move to line']
let g:lmap.m['s'] = ['<Plugin>(easymotion-overwin-f2)', 'move to word (same to normal mode "s")']
let g:lmap.m['w'] = ['<Plugin>(easymotion-bd-w)', 'move to word']
let g:lmap.m['.'] = ['<Plugin>(easymotion-repeat)', 'repeat']
" applications
let g:lmap.a.u = { 'name' : 'UltiSnips',
\'a' : [':UltiSnipsAddFiletypes', 'add file type to snippet'],
\'e' : [':UltiSnipsEdit', 'edit snippet'],
\}
" file related key mappings
let g:lmap.f.d = [':NERDTreeToggle', 'Toggle NERDTree']
let g:lmap.f.f = ['NERDTreeFind', 'Find in NERDTree']
let g:lmap.f.R = ['source ~/.vimrc', 'reload vimrc']
" error related key mappings
"let g:lmap.e.e = [':call ToggleErrors()', 'open error panel']
let g:lmap.e.r = ['SyntasticReset', 'syntastic clear']
let g:lmap.e.h = ['SyntasticInfo', 'describe checker']
let g:lmap.e.n = [':call WrapCommand("down", "l")', 'previous error']
let g:lmap.e.p = [':call WrapCommand("up", "l")', 'next error']
" git related key mappings
let g:lmap.g.b = [':Gblame', 'git blame']
let g:lmap.g.c = [':Gcommit', 'git commit']
let g:lmap.g.d = [':Gdiff', 'git diff']
let g:lmap.g.l = [':Glog', 'git log']
let g:lmap.g.p = [':Gpush', 'git push']
let g:lmap.g.s = [':Gstatus', 'git status']
let g:lmap.g.g = [':GitGutterToggle', 'Git gutter']
" jump
let g:lmap.j.d = [':YcmCompleter GoTo', 'jump to']
let g:lmap.j.D = [':YcmCompleter GoToDeclaration', 'jump to']
let g:lmap.j.f = [':CtrlPFunky', 'jump without ctag']
let g:lmap.j.F = [':execute "CtrlPFunky " . expand("<cword>")', 'init a list by a word under cursor']
let g:lmap.j.m = [':CtrlPMRU', 'most recent used']
let g:lmap.j.b = [':CtrlPBuffer', 'jump to buffer']
let g:lmap.j.p = [':CtrlP', 'ctrlp']
let g:lmap.j.T = [':CtrlPClearCache', 'clear cache']
" toggle settings
let g:lmap.t.i = ['IndentGuidesToggle', 'toggle visualize indent']
let g:lmap.t.t = ['TagbarToggle', 'toggle Tagbar']
let g:lmap.t.S = ['SyntasticToggleMode', 'toggle syntastic mode between active / passive']
let g:lmap.t.y = ['Goyo', 'toggle goyo mode']
let g:lmap.t.L = ['Limelight', 'toggle Limelight mode']
" text
let g:lmap.x.a = {
\'name' : 'quick align',
\' ' : [':Tabularize /<Space>', 'align space'],
\'=' : [':Tabularize /=', 'align equal'],
\':' : [':Tabularize /:\zs', 'align colon'],
\'|' : [':Tabularize /<Bar>', 'align pipeline'],
\'"' : [':Tabularize /"', 'align quotation mark'],
\'#' : [':Tabularize /#', 'align sharp'],
\',' : [':Tabularize /,\zs', 'align comma'],
\}
"let g:lmap.x.a = {
" \'name' : 'align',
" \'a' : [':EasyAlign', 'interactive align'],
" \' ' : [':EasyAlign *\\', 'align space'],
" \'=' : [':EasyAlign *=', 'align equal'],
" \':' : [':EasyAlign *:', 'align colon'],
" \'|' : [':EasyAlign *<Bar>', 'align pipeline'],
" \'"' : [':EasyAlign *"', 'align quotation mark'],
" \'#' : [':EasyAlign *#', 'align sharp'],
" \}
let g:leaderGuide_submode_mappings = {
\ '<C-C>': 'win_close',
\ '<C-F>': 'page_down',
\ '<C-B>': 'page_up'
\}
augroup leader_guide_prevent
" for fugitive
autocmd FileType gitcommit noremap <buffer> <leader> <Plug>leaderguide-buffer
" for tagbar
autocmd BufEnter __Tagbar__ noremap <buffer> <leader> <Plug>leaderguide-buffer
augroup END
call leaderGuide#register_prefix_descriptions(g:mapleader, 'g:lmap')
nnoremap <silent> <leader> :<c-u>LeaderGuide g:mapleader<CR>
vnoremap <silent> <leader> :<c-u>LeaderGuideVisual g:mapleader<CR>
if !exists('g:maplocalleader')
let g:maplocalleader = ','
endif
call leaderGuide#register_prefix_descriptions(g:maplocalleader, 'g:llmap')
nnoremap <silent> <localleader> :<c-u>LeaderGuide g:maplocalleader<CR>
vnoremap <silent> <localleader> :<c-u>LeaderGuideVisual g:maplocalleader<CR>
"}}}
" vim: ft=vim:fdm=marker:et:sw=4: