-
Notifications
You must be signed in to change notification settings - Fork 0
/
.vimrc
executable file
·209 lines (163 loc) · 6.25 KB
/
.vimrc
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
"nice color mode
colorscheme putty
"set omnicomplete to default
"autocmd Filetype * set omnifunc=syntaxcomplete#Complete
"win32 stuff || cygwin stuff
if has("win32") || isdirectory($WINDIR)
"use win32 clipboard
set clipboard=unnamed
set makeprg=mingw32-make
set guifont=Lucida\ Console/Regular/9
endif
"increase vim buffer to 50 files and yank buffer to 5000 lines
set viminfo='50,"5000
"use utf-8 as default file encoding and unix line ending
set enc=utf-8
set ff=unix
"some stupid stuff to fix for backspace with win32/cygwin
set backspace=eol,start,indent
noremap
inoremap
"get more options
set completeopt=longest,menuone
"yes this rocks, you can choose to write command or to complete,
"so you won't be forced to used autocompleted
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
inoremap <expr> <C-n> pumvisible() ? '<C-n>' : '<C-n><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
inoremap <expr> <M-,> pumvisible() ? '<C-n>' : '<C-x><C-o><C-n><C-p><C-r>=pumvisible() ? "\<lt>Down>" : ""<CR>'
"eclipse like completetion omni mapping (ctrl + space)
inoremap <C-Space> <C-x><C-o>
"buggy vim on win32 o_O
inoremap <C-@> <C-x><C-o>
"dont resize terminal (be gnu screen & tmux friendly)
let Tlist_inc_Winwidth = 0
"CTRL+o (open) nerdtree to choose file
map <C-o> :NERDTreeToggle<CR>
"ignore some files
let NERDTreeIgnore=['\.vim$', '\~$', '\.pyc$']
"show line number and relative numbers in files
set number "relativenumber
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif
" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")
" Don't use Ex mode, use Q for formatting
map Q gq
" CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo,
" so that you can undo CTRL-U after inserting a line break.
inoremap <C-U> <C-G>u<C-U>
" In many terminal emulators the mouse works just fine, thus enable it.
if has('mouse')
set mouse=a
endif
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
" Also don't do it when the mark is in the first line, that is the default
" position when opening a file.
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
augroup END
else
set autoindent " always set autoindenting on
endif " has("autocmd")
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
" Only define it when not defined already.
if !exists(":DiffOrig")
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
\ | wincmd p | diffthis
endif
"let c++ omnicomplete handle c++17 syntax
let g:clang_c_options = '-std=gnu17'
let g:clang_cpp_options = '-xc++ -std=gnu++17 '
let g:clang_auto = 0
"fix for fish
set shell=sh
"tmux interaction
"ctrl+w left/right/up/down will work seamless
let g:tmux_navigator_no_mappings = 1
nnoremap <silent> <C-w><Left> :TmuxNavigateLeft<cr>
nnoremap <silent> <C-w><Down> :TmuxNavigateDown<cr>
nnoremap <silent> <C-w><Up> :TmuxNavigateUp<cr>
nnoremap <silent> <C-w><Right> :TmuxNavigateRight<cr>
"but be lazy, shift + left/up/down/right will work, too!
nnoremap <silent> <S-Left> :TmuxNavigateLeft<cr>
nnoremap <silent> <S-Down> :TmuxNavigateDown<cr>
nnoremap <silent> <S-Up> :TmuxNavigateUp<cr>
nnoremap <silent> <S-Right> :TmuxNavigateRight<cr>
"ctrl + e run command in (new) tmux windows, sends ctrl+c and executes the
"command
nnoremap <silent> <C-e> :call VimuxOpenRunner()<CR>:sleep 10m<CR>:call VimuxSendKeys("C-c")<CR>:sleep 20m<CR>:VimuxPromptCommand<CR>
"ctrl + l will run last command
nnoremap <silent> <C-l> :call VimuxSendKeys("C-c")<CR>:sleep 50m<CR>:VimuxRunLastCommand<CR>
"ctrl + f will reindent the current file
nnoremap <silent> <C-f> gg=G
"ctrl + t or ctrl + i or f8 will show tagbar
nnoremap <silent> <C-t> :TagbarToggle<CR>
nnoremap <silent> <C-i> :TagbarToggle<CR>
nnoremap <silent> <F8> :TagbarToggle<CR>
" Spelling
" default settings are no spelling enabled
set nospell
" change to german and english
set spelllang=de,en
let spellst = ["de", "en"]
" f2 will toggle spelling
map <F2> :set spell!<CR><Bar>:echo "Spell Check: " . strpart("OffOn", 3 * &spell, 3)<CR>
" they were using white on white
highlight PmenuSel ctermfg=black ctermbg=lightgray
" limit it to just the top 10 items
set sps=best,5
" highlighting
hi SpellBad ctermfg=Red ctermbg=Black cterm=underline
hi SpellCap ctermfg=blue ctermbg=black cterm=underline
"f4 find suggestion for spelled word
imap <F4> <ESC>z=<CR>i
nmap <F4> z=
"f5 add word to user dictionary
imap <F5> <ESC>zg<CR>i
nmap <F5> zg
"vimwiki settings
"- ww will start wiki"
filetype plugin on
"remapping leader key
let mapleader = "-"
"in visual block mode, drag with leader-left/right/up/down
vmap <expr> <LEADER><LEFT> DVB_Drag('left')
vmap <expr> <LEADER><RIGHT> DVB_Drag('right')
vmap <expr> <LEADER><DOWN> DVB_Drag('down')
vmap <expr> <LEADER><UP> DVB_Drag('up')
"d will duplicate current marked block
vmap <expr> D DVB_Duplicate()