rc

Added a scrolloff of 5, so I always have a part of the code on my screen if I'm nearing the end/begin. In addition, I added a nifty function that allows to toggle between relative and absolute numbering. (both changes made to .vimrc)

Author
Vngngdn
Date
July 14, 2016, 4:20 p.m.
Hash
e1654b954f28c9a104364c3dd5ebd3d50afa3766
Parent
82cf8f98b764c8e4306b0a3f2121a1a51abb2f79
Modified file
.vimrc

.vimrc

13 additions and 0 deletions.

View changes Hide changes
1
1
" I'll most certainly add comments to every fucking line I write. It goes
2
2
" without saying that I need to know what every line does.
3
3
4
4
" VUNDLE {{{
5
5
" Vundle is used to manage plugins for Vim. It needs additional setup, so it
6
6
" gets priority in my .vimrc.
7
7
8
8
filetype off                  " required
9
9
10
10
" set the runtime path to include Vundle and initialize
11
11
set rtp+=~/.vim/bundle/Vundle.vim
12
12
call vundle#begin()
13
13
14
14
" let Vundle manage Vundle, required
15
15
Plugin 'VundleVim/Vundle.vim'
16
16
17
17
" YCM is a plugin that allows Vim semantic type checking and more programming mumbo jumbo. It is godlike and it must always be there for me.
18
18
" XXX: This might be removed in favor of Deoplete. It depends on whether
19
19
" Deoplete is better or not.
20
20
Plugin 'Valloric/YouCompleteMe'
21
21
22
22
" Airline provides a neat and feature rich status bar. Really nice to have.
23
23
Plugin 'bling/vim-airline'
24
24
25
25
" Bufferline will show buffers in the status bar. There's enough room anyway, so I fancied having it.
26
26
Plugin 'bling/vim-bufferline'
27
27
28
28
" Syntastic does automatic syntax checking without the need to compile.
29
29
" XXX: Might be replaced in the future in favor of Neomake, because it's
30
30
" asynchronous, and I only use NeoVim these days, honestly.
31
31
Plugin 'scrooloose/syntastic'
32
32
33
33
" A fuzzy searcher. Just CTRL+P and BAM all your files are visible.
34
34
Plugin 'kien/ctrlp.vim'
35
35
36
36
" This plugin enables Git intergration.
37
37
Plugin 'tpope/vim-fugitive'
38
38
39
39
" This provides snippets for redundant code. Praise the hackers man.
40
40
Plugin 'SirVer/ultisnips'
41
41
42
42
" In addition to UltiSnips, this plugin contains a prefetched repository of snippets. Must have, because I'm not planning on writing all of those by myself.
43
43
Plugin 'honza/vim-snippets'
44
44
45
45
" Rust syntax files, including Syntastic integration:
46
46
" To be removed when these are added to (Neo)Vim 'upstream'.
47
47
Plugin 'rust-lang/rust.vim'
48
48
49
49
" Helps me in kicking the habit induced by things like Notepad++.
50
50
" This plugin will stay here until I've kicked the habit properly.
51
51
Plugin 'takac/vim-hardtime'
52
52
53
53
" All of your Plugins must be added before the following line
54
54
call vundle#end()            " required
55
55
filetype plugin indent on    " required
56
56
" }}}
57
57
58
58
" YOUCOMPLETEME {{{
59
59
" YouCompleteMe is a godlike completer for Vim. As such, it is worthy of its own section.
60
60
" However, I'll be trying out Deoplete in the future, which might render it
61
61
" obsolete. Until further notice, I'm keeping this beauty.
62
62
"
63
63
" This setting will force YCM to close the preview buffer after selecting the completion.
64
64
let g:ycm_autoclose_preview_window_after_completion=1
65
65
66
66
" Sets the symbol used to indicate a syntax error:
67
67
let g:ycm_error_symbol = '>>'
68
68
69
69
" Sets the symbol used to indicate a warning:
70
70
let g:ycm_warning_symbol = 'i'
71
71
72
72
" Fills the identifier completion database with the language's keywords (e.g., when starting a new Java file, "class" will already be in the completion engine.
73
73
let g:ycm_seed_identifiers_with_syntax = 1
74
74
75
75
" This setting tells YCM what keys to use to accept completion. I removed <Down> as default, because I'm a silly coder and still use my arrow keys to navigate my source files. Hey, years of negligence for Vim leaves its marks. To think I ever thought Notepad++ was the best editor ever, the fuck...
76
76
let g:ycm_key_list_select_completion=['<TAB>']
77
77
78
78
" Same reason; I'm a dumb fuck and arrows are still hardwired in my brain.
79
79
let g:ycm_key_list_previous_completion=['<S-TAB>']
80
80
81
81
" Configures the pointer to the ycm_extra_conf.py file.
82
82
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py'
83
83
let g:ycm_confirm_extra_conf = 0 " Disables security confirmation before loading the conf.py file.
84
84
" }}}
85
85
86
86
" AIRLINE {{{
87
87
" Airline is a great status bar plugin. Although it can behave quirky if Powerline is not on the scene. These scripts are dedicated to handle that behavior.
88
88
89
89
90
90
91
91
" These lines will load the powerline font for use in Airline.
92
92
if !exists('g:airline_symbols')
93
93
		let g:airline_symbols={}
94
94
endif
95
95
let g:airline_symbols.space="\ua0"
96
96
let g:airline_powerline_fonts=1
97
97
98
98
" If there is only one tab opened, the tab bar will display the different buffers.
99
99
let g:airline#extensions#tabline#enabled=1
100
100
101
101
" Makes Airline appear immediately, instead of waiting for a split.
102
102
set laststatus=2
103
103
" }}}
104
104
105
105
" ULTISNIPS {{{
106
106
" As mentioned earlier, this provides snippets to stop redundant code.
107
107
108
108
" To begin, changing default TAB, because YCM already uses TAB.
109
109
	let g:UltiSnipsExpandTrigger="<c-l>"
110
110
	let g:UltiSnipsJumpForwardTrigger="<c-j>"
111
111
	let g:UltiSnipsJumpBackwardTrigger="<c-k>"
112
112
113
113
" }}} 
114
114
"
115
115
116
116
" HARDTIME {{{
117
117
" Some settings are required to make vim-hardtime function properly
118
118
let g:hardtime_default_on = 1 " Start hardtime immediately.
119
119
let g:hardtime_allow_different_key = 1 " Allows 'jhk', but not 'jjj'.
120
120
" Using the arrow keys is (arguably) a bad habit as well, so they're disabled:
121
121
let g:list_of_disabled_keys = ["<UP>", "<DOWN>", "<LEFT>", "<RIGHT>"]
122
122
" }}}
123
123
124
124
" COLOURS & COLORS {{{
125
125
126
126
colorscheme molokai " I like molokai. I've used badwolf, but I like popping colors.
127
127
128
128
" }}}
129
129
130
130
" SPACES & TABS {{{
131
131
132
132
" The number of visual spaces per TAB hit.
133
133
set tabstop=4
134
134
135
135
" Setting the amount of tabs to 4. The default is 8.
136
136
set shiftwidth=4
137
137
138
138
" This breaks lines after column 80.
139
139
set textwidth=80
140
140
" }}}
141
141
142
142
" UI CONFIGURATION {{{
143
143
144
144
set relativenumber  " I used to use standard numbers, but relative numbers make moving around so much easier.
145
145
set cursorline " Highlights the line currently selected by the cursor.
146
146
filetype indent on " Detects filetype on load, and loads the appropriate syntax file.
147
147
" This highlights the matching parenthesis ([, {, (, ...). I think this is default, but in case it's not, tadaa.
148
148
set showmatch " Highlights matching parenthesis on hover ("[, {, ...").
149
149
" }}}
+
150
" }}}
150
151
151
152
" SEARCHING {{{
152
153
153
154
" Problem with hlsearch is that it does not turn off the highlighting. So searching for vowels may quickly result in everything being highlighted. This is a mapping. It will remove highlighting when entering \<SPACE>
154
155
nnoremap <leader><space> :nohlsearch<CR>
155
156
" }}}
156
157
157
158
" FOLDING {{{
158
159
" In case I forget (I'm Belgian), folding is hiding code parts that belong together, like functions. Très important. Fuck azerty.
159
160
160
161
" This enables folding as is.
161
162
set foldenable
162
163
163
164
" This setting determines how many folds have to be opened. The number indicates the folding level. So 0 = every possible folding is folded. 99 = practically everything is open. I'm using 10, since I already have a problem with more than 3 nested loops.
164
165
set foldlevelstart=10
165
166
166
167
" This setting blocks overuse of nested foldings. I don't know how this will turn out in LISP/Scheme, but I'll be damned if this setting does more harm than good.
167
168
set foldnestmax=10
168
169
169
170
" This setting is commented by default, but included in case I start to grow hate for the current way Vim handles folding (za). It basically maps that command to spacebar. I may map it to z because then I only have to type one letter and RETURN, that's 33% of my time saved! =3
170
171
"nnoremap <space> za
171
172
172
173
" }}}
173
174
174
175
" MOVEMENT {{{
175
176
176
177
" When you go up, and you have a line going over multiple lines because it's too long, the standard mapping will skip that. These two settings will block that behaviour.
177
178
nnoremap j gj
178
179
nnoremap k gk
179
180
" }}}
180
181
181
182
" BACKING UP {{{
182
183
183
184
" What these lines do, is move the backup files to the /tmp folder. This will keep my directories clean and neat.
184
185
set backup
185
186
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
186
187
set backupskip=/tmp/*,/private/tmp/*
187
188
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
188
189
set writebackup
189
190
" }}}
190
191
"
191
192
" NEOVIM {{{
192
193
" While it certainly is an improvement over 'vanilla' Vim, it does some things
193
194
" that keep me from using Vim as it's supposed to be; limited to no mouse usage.
194
195
" So I disable it. I'll enable it again when I've twisted my mind far enough to
195
196
" not touch my mouse again. (Not to mention some terminals don't support mouse
196
197
" control, so it's a bad habit nonetheless if you spend all your time on
197
198
" GNU/Linux distros)
198
199
set mouse=""
199
200
" }}}
200
201
"
201
202
" MACROS {{{
202
203
" }}}
+
204
" http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/
+
205
" that allows to quickly switch between relative and absolute numbering using
+
206
" CTRL+N(umber).
+
207
function! NumberToggle()
+
208
	if(&relativenumber == 1)
+
209
		set number
+
210
	else
+
211
		set relativenumber
+
212
	endif
+
213
endfunc
+
214
nnoremap <C-n> :call NumberToggle()<cr>
+
215
" }}}
203
216
" OTHER IMPORTANT STUFF {{{
204
217
205
218
206
219
" I found this gem on Reddit. If I'm editing a file that's read only, and I started Vim without sudo, then this little line will do just that for me. All I have to do is use "w!!" when saving.
207
220
" Extensive explanation can also be found at https://stackoverflow.com/questions/2600783/how-does-the-vim-write-with-sudo-trick-work#7078429
208
221
cmap w!! w !sudo tee > /dev/null %
209
222
210
223
211
224
" This setting will allow me to switch to another buffer without need to save the current buffer.
212
225
set hidden
213
226
" }}}
214
227
215
228
" Because Vim can fold vimrc files with the right syntax, These lines will tell Vim how to handle that.
216
229
set modelines=2 "This tells Vim that the last 2 lines of this file should only apply to this file.
217
230
" So as you can see, the last 2 lines get a special vim:-prefix, so Vim knows for sure this is what's important.
218
231
" To wrap a new section, look at the other sections, and copy that syntax.
219
232
" vim:foldmethod=marker
220
233
" vim:foldlevel=0
221
234