aboutsummaryrefslogtreecommitdiff
path: root/.vim/vimrc
diff options
context:
space:
mode:
Diffstat (limited to '.vim/vimrc')
-rw-r--r--.vim/vimrc223
1 files changed, 223 insertions, 0 deletions
diff --git a/.vim/vimrc b/.vim/vimrc
new file mode 100644
index 0000000..5d3417b
--- /dev/null
+++ b/.vim/vimrc
@@ -0,0 +1,223 @@
1" vi:columns=160:list:ts=2:sts=2:sw=2
2"================================================================================
3" Vundle: plugin manager...
4set nocompatible | " do not try to be vi, be vim (required by Vundle)
5filetype off | " Vundle needs this
6set rtp+=~/.vim/plugins/Vundle.vim | " set runtimepath (required by Vundle)
7call vundle#begin('~/.vim/plugins/') | " location where Vundle searches&installs plugins
8
9" Plugin dependant configurations...
10Plugin 'VundleVim/Vundle.vim' | " Vundle itself (required)
11Plugin 'cscope_plus.vim' | " run cscope -R -b in project folder then use
12Plugin 'autoload_cscope.vim' | " CTRL+\ s searches word under cursor, CTRL+T back
13Plugin 'tpope/vim-fugitive' | " the most complete GIT integration plugin
14
15Plugin 'taglist-plus' | " quick code navigator
16let Tlist_Compact_Format = 1 | "
17let Tlist_GainFocus_On_ToggleOpen = 1 | "
18let Tlist_Close_On_Select = 1 | "
19
20Plugin 'Valloric/YouCompleteMe' | " syntax checker and code completion
21let g:ycm_global_ycm_extra_conf = '' | " fallback, right one should be in the applications path
22let g:ycm_confirm_extra_conf = 0 | " disable 'do you really want to execute .py?'
23let g:ycm_key_select_completion = '<Tab>' | " key completion key
24let g:ycm_error_symbol = '✖' | " insert this as an error symbol in the gutter bar
25let g:ycm_warning_symbol = '➔' | " insert this as a warning symbol in the gutter bar
26let g:ycm_collect_identifiers_from_tags_files = 1 | "
27let g:ycm_autoclose_preview_window_after_insertion=1 | " close the window when leaving insert mode
28"let g:ycm_semantic_triggers = {'c' : ['(', ',']} | " add additional triggers (not recommend)
29
30let b:html_omni_flavor='xhtml' | " prever xhtml over html because that makes inline php code possible without hassle
31let html_use_css = 1 | " when using :TOhtml no font-tags will be used, but proper css
32
33call vundle#end() | " required by Vundle
34filetype plugin indent on | " required by Vundle
35behave mswin
36"================================================================================
37" custom config
38colorscheme coderonline
39syntax enable
40
41set noswapfile | " noundofile, nobackup, nowritebackup
42set backupdir=~/.vim/temp | " using :set backup will copy current file to this directory
43set directory=~/.vim/temp | "
44set undodir=~/.vim/temp | "
45
46set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth)
47set autoindent | " always set autoindenting on
48set copyindent | " copy the previous indentation on autoindenting
49set scrolloff=2 | " always keeps at least two lines visible (when seeking)
50set selectmode=mouse | " avoid using select mode (only with mouse)
51set selection=exclusive | " includes last character of the selection into following command (like x or d)
52
53set whichwrap=b,s,<,>,[,] | " beyond beginning/end line causes cusor to wrap
54set backspace=indent,eol,start| " allow backspacing over everything in insert mode, not needed with whichwrap
55set diffopt+=iwhite,filler | " lets diff ignore white spaces
56set spell spelllang=en,de | " enable spell checker
57set virtualedit=onemore | " one character beyond the line length should be navigatable (options: all,insert,block,onemore)
58set breakindent cpoptions+=n | " when wrapping lines indent wrapped line to align with the previews
59set linebreak | " do not wrap in the middle of words
60set showcmd | " displays status line messages while selecting (matrix size)
61set nofoldenable | " do not fold code automatically
62set tags+=~/.vim/systags | " ctags -R -f ~/.vim/systags /usr/include /usr/local/include
63set wildmenu wildmode=full | " wildmenu code completion
64
65" search...
66set ignorecase smartcase | " if search pattern contains uppercase then search is case sensitive
67set incsearch | " do incremental searching
68set showmatch matchtime=4 | " blinks matching braces
69
70set novisualbell | " don't beep
71set noerrorbells | " don't beep
72set clipboard=unnamedplus | " makes copy and paste work (autoselectplus might work as well)
73set number | " toggle line numbers
74
75if has("multi_byte")
76 set encoding=utf-8 | " we need default utf-8 encoding to use cool chars as line break and so on (see below)
77 scriptencoding utf-8 | " tell vim that we are using utf-8 here
78 set showbreak+=› | " symbol used in the beginning of a wrapped line
79 set listchars=eol:↲ | " symbols used when using :set list (which displays non-printable chars)
80 set listchars+=trail:· | " symbols used when using :set list (which displays non-printable chars)
81 set listchars+=precedes:« | " symbols used when using :set list (which displays non-printable chars)
82 set listchars+=extends:» | " symbols used when using :set list (which displays non-printable chars)
83 set listchars+=tab:▸\ | " symbols used when using :set list (which displays non-printable chars)
84endif
85
86if has("autocmd")
87 set modeline | " set variables specific to a file, like indentation by adding a comment
88 set modelines=3 | " how many lines in the beginning and end of the file can be mode lines?
89
90 augroup resCur | " make cursor appear in its previous position when reopening a file...
91 autocmd BufReadPost * call setpos(".", getpos("'\""))
92 augroup END
93
94 augroup PreviewOnBottom | " will open new windows below the current (only in insert mode, so that the preview window is drawn below)
95 autocmd InsertEnter * set splitbelow
96 autocmd InsertLeave * set splitbelow!
97 augroup END
98
99 augroup OmniFunc | " this will enable omnicomplete just in case this configuration runs somewhere, where YouCompleteMe is not compiled
100 if exists("+omnifunc")
101 autocmd Filetype *
102 \ if &omnifunc == "" |
103 \ setlocal omnifunc=syntaxcomplete#Complete |
104 \ setlocal completeopt=longest,menuone |
105 \ endif
106 endif
107 augroup END
108
109 autocmd FileType text setlocal textwidth=78 | " text files: set 'textwidth' to 78
110 autocmd FileType gitcommit set tw=72 | " longer commit messages without auto line wrapping
111 autocmd FileType LaTeX let g:tex_flavor = "latex"| set conceallevel=1| set concealcursor=
112 autocmd BufNewFile,BufReadPost *.config set filetype=xml | " visual studio config file
113 autocmd BufNewFile,BufReadPost *.csproj set filetype=xml | " visual studio project file
114 autocmd BufNewFile,BufReadPost *.sln set filetype=xml | " visual studio solution file
115endif
116
117"================================================================================
118" gui stuff and appearance
119if &t_Co > 2
120 set hlsearch | " highlight all search matches
121 set cursorline | " highlight currently selected line
122endif
123
124
125if has("gui_running")
126 set mouse=a | " use mouse in gui-mode (which is default)
127 set mouseshape+=n:beam,v:beam | " display a text input cursor even in normal and selection mode
128 set guicursor=n-v-c:ver30-Cursor-blinkon500-blinkoff500 | " how the caret looks like
129 set guitablabel=%t | " do not display full path as tabname
130 set guioptions+=m | " menu bar
131 set guioptions+=T | " toolbar
132 set guioptions+=r | " right-hand scroll bar
133 set guioptions-=c | " use console dialogs instead of popups
134 set guioptions+=a | " autoselect: copy&paste using middleclick
135 set guioptions+=e | " add tab pages
136 set guioptions+=p | " use gui pointer callback for x11
137 set toolbariconsize=large | " make the icon toolbar as big as possible
138 "set columns=80 | " set initial window width (so that it fits the terminals)
139else
140 if &term =~? 'mlterm\|xterm\|screen'
141 set t_Co=256 | " fixes incompatibilities with our color scheme
142 endif
143 set mouse=nh | " limits mouse usage to normal mode and help files, so that middle click text insertion works in insert mode
144 set title | " set the terminal caption
145 set icon | " sets the terminal icon to vim
146 set ttyfast | " modern terminals are all fast in a way
147 "set titleold="vim ended" | " set terminal title after closing vim
148 "set titlestring="VIM-CONSOLE" | " set window title
149 "if has('mouse')
150 "endif
151endif
152
153
154"================================================================================
155" custom commands...
156map <C-h> <C-w>h|map <C-j> <C-w>j| " window navigation shortcuts
157map <C-k> <C-w>k|map <C-l> <C-w>l| " window navigation shortcuts
158
159cmap w!! w !sudo tee % >/dev/null| " write :w!! to execute :w as root user
160
161" custom hotkeys...
162nnoremap <C-Tab> :tabnext<CR>| " lets one use CTRL+Tab to switch between tabs
163nnoremap <C-S-Tab> :tabprevious<CR>| " use CTRL+Shift+Tab to switch to preview tab
164
165nnoremap j gj|nnoremap k gk| " do not jump over wrapped lines
166
167nnoremap $ g$| " and make the $ key position the cursor after the last char of that line, not before
168nnoremap <End> g$| " and make the <End> key position the cursor after the last char of that line
169function ExtendedHome()
170 let column = col('.')
171 normal! ^
172 if column == col('.')
173 normal! 0
174 endif
175endfunction
176noremap <Home> ^
177noremap <silent> <Home> :call ExtendedHome()<CR>
178
179nnoremap <C-z> u
180
181
182
183" plugin hotkeys
184map <C-l> :TlistToggle<CR>| " bind TagList to Hotkey Ctrl+L
185inoremap <buffer> ( <C-X><C-o><C-p>(| " when opening a bracket: call the OmniComplete function, display the menu, but deselect the first entry (C-p)
186
187
188set makeprg=make\ test
189nnoremap <F5> :!make<CR>| " classic key binding: press F5 to compile and execute (if you have a Makefile with make test doing that)
190
191
192"================================================================================
193" deactivated on-demand commands (just in case one needs them one day)
194"
195" code completion: http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE
196" reacts on CTRL+P, CTRL+Space
197"inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
198"inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"
199"inoremap <expr> <Down> pumvisible() ? "\<C-n>" : "\<Down>"
200"inoremap <expr> <Up> pumvisible() ? "\<C-p>" : "\<Up>"
201"inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>" : "\<PageDown>"
202"inoremap <expr> <PageUp> pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
203" set guiheadroom=0| " do not fill non-functional area of the empty editor with gtk background
204" map shift-right to visually select and so on
205"nnoremap <C-Right> El
206"nnoremap <S-Right> vl
207"nnoremap <S-Left> vj
208"nnoremap <S-Up> vk
209"nnoremap <S-Down> vj
210" noremap % v% " jump between braces and highlight
211"nnoremap <Home> ^
212"vmap <Home> ^
213"nnoremap <End> $
214"vmap <End> $
215"nnoremap <C-Tab> <C-PageDown>
216"nnoremap <C-S-Tab> <C-PageUp>
217":inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
218"map <Esc>OA k|map <Esc>OB j|map <Esc>OC l|map <Esc>OD h| " allow cursor keys in insert mode
219"inoremap <expr> <Esc> pumvisible() ? "\<C-e>" : "\<Esc>" " breaks cursor keys!
220" binding ESC can easily break cursor key movement on the console (tricky, because gvim works)
221"inoremap <C-Space> <C-x><C-o>
222"inoremap <C-@> <C-Space>
223"
..