You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

282 lines
6.7 KiB

" vim: set fdm=marker fdc=3 :
" vim config dir path
if has("win32")
let g:vimdir=expand('~/vimfiles/')
else
let g:vimdir=expand('~/.vim/')
endif
" load plugins using vundle {{{
if has("win32")
source ~/vimfiles/plug.vim
else
source ~/.vim/plug.vim
endif
" }}}
" set colorscheme {{{
if &term =~# '^\(screen\|xterm\)'
set t_Co=256
let g:solarized_termcolors=256
endif
if (&t_Co >= 255 && &term !~ '^linux$') || has("gui_running")
colorscheme wombat256_thomasba
else
colorscheme elflord2
endif
" }}}
" GUI settings {{{
if has('gui_running')
" Make shift-insert work like in Xterm
map <S-Insert> <MiddleMouse>
map! <S-Insert> <MiddleMouse>
set guifont="Monospace 10"
" Nooo, dont blink!!
set guicursor=a:blinkon0
endif
" }}}
" editor settings {{{
syntax on
filetype plugin indent on
" delete always on backspace
set backspace=indent,eol,start
set hidden
set number
set numberwidth=4
set shiftwidth=4
set ruler
set showmode
set noexrc
set noerrorbells
set nobackup
set wrap
set ts=4
set diffopt+=iwhite
set history=50
set showcmd
set showmatch
set smartcase
set ignorecase
set title
set ttyfast
set hlsearch
set spelllang=de_de,en
set copyindent
" }}}
" move by screen lines, not by real lines - great for creative writing {{{
nnoremap j gj
nnoremap k gk
nnoremap <Up> gk
nnoremap <Down> gj
" also in visual mode
vnoremap j gj
vnoremap k gk
vnoremap <Up> gk
vnoremap <Down> gj
" }}}
" fileencoding {{{
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,latin,windows-1252
" }}}
" TOhtml settings {{{
let g:html_prevent_copy = "fn"
let html_use_xhtml=1
let html_use_css=1
" }}}
" slightly highlight rows and columns {{{
"set cursorline
"set cursorcolumn
" }}}
" mail {{{
augroup mail
autocmd!
autocmd FileType mail set textwidth=70 wrap fo=tcrq
augroup END
" }}}
" auto completion and menu {{{
if has("wildmenu")
set wildignore+=*.a,*.o
set wildignore+=.DS_Store,.git,.hg,.svn
set wildignore+=*~,*.swp,*.tmp
set wildmenu
set wildmode=list,longest,full
inoremap <C-f> <C-X><C-F>
endif " }}}
" plugins {{{
" syntastic {{{
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_perl_checkers = ['perl']
let g:syntastic_enable_perl_checker = 1
let g:syntastic_python_checkers = ['pylint']
let g:syntastic_python_pylint_args = '--indent-string="\t"'
let g:syntastic_php_checkers = ['php']
let g:syntastic_html_tidy_ignore_errors = ['warning: <div> proprietary attribute "data-role"', '<input> proprietary attribute "required"', '<input> proprietary attribute "pattern"', '<select> proprietary attribute "required"']
" }}}
" github {{{
let g:github_dashboard = { 'username': $GITHUB_USERNAME, 'password': $GITHUB_TOKEN }
let g:github_access_token = $GITHUB_TOKEN
" }}}
" CtrlP {{{
nmap <C-b> :CtrlPBuffer<cr>
" }}}
" Move {{{
let g:move_key_modifier = 'C'
" }}}
" vimux {{{
" Set tmux pane percentage
let g:VimuxHeight = "30"
" Split tmux pane horizontally
let g:VimuxOrientation = "h"
" Prompt for a command to run
noremap <leader>vp :VimuxPromptCommand<CR>
" }}}
" NERDTree {{{
" Hide latex output
let NERDTreeIgnore=['\~$','\.\(aux\|nav\|out\|snm\|toc\|vrb\|o\)$']
let g:nerdtree_plugin_open_cmd = "xdg-open"
" }}}
" Indent Guide {{{
let g:indent_guides_start_level = 1
let g:indent_guides_guide_size = 1
" }}}
" /plugins }}}
" markdown {{{
let g:vim_markdown_frontmatter=1
let g:vim_markdown_folding_disabled=1
" Underline (Markdown Style)
nnoremap <leader>= YpVr=
nnoremap <leader>- YpVr-
" }}}
let g:mcabber_mention='thomasba'
nnoremap , :
" hightlight wrapped line
set showbreak=↪\
" Map keys to toggle functions
function! MapToggle(key, opt)
let cmd = ':set '.a:opt.'! \| set '.a:opt."?\<CR>"
exec 'nnoremap '.a:key.' '.cmd
exec 'inoremap '.a:key." \<C-O>".cmd
endfunction
function! NumberToggle()
if(&relativenumber == 1)
set number
else
set relativenumber
endif
endfunc
nnoremap <C-n> :call NumberToggle()<cr>
command! -nargs=+ MapToggle call MapToggle(<f-args>)
" Keys & functions {{{
" Insert timestamp (insert mode)
if has("win32")
" to get the +xx:xx form we need to use powershell :-(
inoremap <expr> <F1> substitute(system("powershell -noprofile -command Get-Date -Format 'yyyy-MM-ddTHH:mm:sszzzz: '"),'[\r\n]*$','','')
else
inoremap <expr> <F1> strftime('%Y-%m-%dT%H:%I:%S%z: ')
endif
" toggle NERDTree (normal & input-mode)
inoremap <F2> <esc>:NERDTreeToggle<cr>
nnoremap <F2> :NERDTreeToggle<cr>
" toggle Tagbar (normal & input-mode)
inoremap <F3> <esc>:TagbarToggle<cr>
nnoremap <F3> :TagbarToggle<cr>
" toggle different editor settings (normal & input-mode)
MapToggle <F4> number
MapToggle <F5> spell
MapToggle <F6> paste
MapToggle <F7> hlsearch
MapToggle <F8> wrap
" toggle current fold
inoremap <F9> <C-O>za
nnoremap <F9> za
onoremap <F9> <C-C>za
vnoremap <F9> zf
" create ctags cache
nnoremap <F10> :!ctags -R<cr>
" previous buffer
nnoremap <F11> :bp<cr>
" next buffer
nnoremap <F12> :bn<cr>
" }}}
" make mcabber log pretty readable
function! Mcabber()
exec ':%s/[ ]\+$//'
exec ':%s/^M[IR] \(\d\{4\}\)\(\d\d\)\(\d\d\)T\(\d\d:\d\d:\d\d\)Z \d\{3\}/\1-\2-\3 \4/'
endfunction
command! Mcabber call Mcabber()
" Mail quote transforming
nmap ;m :%s/^\(> \)\+>/\=substitute(submatch(0),'> ','>','g')/ge<cr>ggVGgq
nmap ;h :%s/^\(> \)\+>/\=substitute(submatch(0),'> ','>','g')/ge<cr>gg/^$<cr>VGgq
nmap ;p ?^$<cr>V/^$<cr>gqk<end>:nohl<cr>
" save with sudo
cmap w!! w !sudo tee % >/dev/null
" help deobfuscate code
function! CleanUpObfuscatedCode()
exec ':%s/\([{};]\)/\1\r/g'
exec ':%s/\\x\([0-9a-zA-Z]\{2\}\)/\=nr2char(str2nr(submatch(1),16))/g'
exec 'normal gg=G'
endfunction
command! CleanUpObfuscatedCode call CleanUpObfuscatedCode()
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
let g:airline_theme = 'badwolf'
if has("win32")
" Workaround on windows (bad performance)
let g:airline_extensions = []
let g:airline_highlighting_cache = 1
endif
set laststatus=2
let mapleader = "-"
let maplocalleader = "\\"
noremap <leader>y "+y
noremap <leader>Y "+Y
noremap <leader>p "+p
"let g:neocomplcache_enable_at_startup = 1
let g:indent_guides_auto_colors = 0
let g:tex_flavor = "latex"
" Large files >= 200
let g:LargeFile = 200
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
let g:languagetool_lang = "de"
let g:languagetool_jar = "/usr/share/java/languagetool/languagetool.jar"
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:pymode_python = 'python3'
set modeline
com! FormatJSON %!python -m json.tool
function! DokuWiki()
if filereadable($HOME.'/.vimrc.dokuvimki')
source $HOME/.vimrc.dokuvimki
endif
:DokuVimKi
endfunction
command! DokuWiki call DokuWiki()