Skip to content

Instantly share code, notes, and snippets.

@ZelphirKaltstahl
Last active January 10, 2017 10:40
Show Gist options
  • Save ZelphirKaltstahl/73daeff0ccafc141e913e42dd189b435 to your computer and use it in GitHub Desktop.
Save ZelphirKaltstahl/73daeff0ccafc141e913e42dd189b435 to your computer and use it in GitHub Desktop.
.vimrc
" automatically install vim-plug if git is available
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall | source $MYVIMRC
endif
call plug#begin('~/.vim/plugged')
" ===== FUNCTIONALITY =====
Plug 'wlangstroth/vim-racket'
Plug 'MicahElliott/vrod'
Plug 'klen/python-mode'
Plug 'tpope/vim-sensible'
" Plug 'https://github.com/kovisoft/slimv.git'
Plug 'scrooloose/nerdtree'
Plug 'ervandew/supertab'
Plug 'tpope/vim-obsession'
Plug 'terryma/vim-multiple-cursors'
Plug 'vim-scripts/ttfzoom'
" Plug 'powerline/powerline'
" ===== LANGUAGE SUPPORT =====
" Plug 'jtratner/vim-flavored-markdown'
" Plug 'tpope/vim-markdown'
Plug 'vim-pandoc/vim-pandoc-syntax'
Plug 'vim-pandoc/vim-pandoc'
Plug 'vim-scripts/rest.vim'
Plug 'Glench/Vim-Jinja2-Syntax'
Plug 'dhruvasagar/vim-table-mode'
" ===== SNIPPETS =====
Plug 'MarcWeber/vim-addon-mw-utils'
Plug 'tomtom/tlib_vim'
Plug 'garbas/vim-snipmate'
Plug 'honza/vim-snippets'
" ===== COLORSCHEMES =====
Plug 'chriskempson/vim-tomorrow-theme'
Plug 'tomasr/molokai'
Plug 'altercation/vim-colors-solarized'
Plug 'chriskempson/base16-vim'
Plug 'nickburlett/vim-colors-stylus'
Plug 'sickill/vim-monokai'
Plug 'tyrannicaltoucan/vim-quantum'
Plug 'hericks/vimicks'
Plug 'vim-scripts/kate.vim'
Plug 'AlessandroYorba/Despacio'
Plug 'josuegaleas/jay'
Plug 'mbbill/vim-seattle'
Plug 'jacoborus/tender.vim'
Plug 'NLKNguyen/papercolor-theme'
" ===== PARENS =====
Plug 'kien/rainbow_parentheses.vim'
" Add plugins to &runtimepath
call plug#end()
" ===== MY FUNCTIONS =====
function ActivateSyntaxHighlighting()
syntax on
syntax enable
endfunction
function SetTabWidth(width, softorhard)
set expandtab
set smarttab
let &g:tabstop = a:width
let &g:shiftwidth = a:width
let &g:showtabline = a:width
let &g:softtabstop = a:softorhard
endfunction
function SetMarkdownOptions()
""" COLORSCHEME
colorscheme quantum
set background=light
""" SPELL CHECKING COLORS
hi clear SpellBad
hi SpellBad cterm=underline,bold ctermfg=204 ctermbg=NONE
hi SpellCap cterm=underline,bold ctermfg=LightBlue ctermbg=NONE
syn match UrlNoSpell "\w\+:\/\/[^[:space:]]\+" contains=@NoSpell
""" LANGUAGE
set spelllang=de_de,en_us
set spellfile=~/.vim/spell/master-thesis.utf-8.add
""" KEYWORDS
set iskeyword=38,42,43,45,47-57,60-62,_,@
""" TABS
call SetTabWidth(4, 1)
"syn match myExCapitalWords +\<\w*[A-Z]\K*\>\|'s+ contains=@NoSpell
nnoremap <Tab> <Nop>
endfunction
function SetReStructuredTextOptions()
let g:table_mode_corner_corner="+"
let g:table_mode_header_fillchar="="
""" COLORSCHEME
colorscheme quantum
set background=light
""" SPELL CHECKING COLORS
hi clear SpellBad
hi SpellBad cterm=underline,bold ctermfg=204 ctermbg=NONE
hi SpellCap cterm=underline,bold ctermfg=LightBlue ctermbg=NONE
syn match UrlNoSpell "\w\+:\/\/[^[:space:]]\+" contains=@NoSpell
""" LANGUAGE
set spelllang=de_de,en_us
set spellfile=~/.vim/spell/master-thesis.utf-8.add
""" KEYWORDS
set iskeyword=38,42,43,45,47-57,60-62,_,@
""" TABS
call SetTabWidth(2, 1)
"syn match myExCapitalWords +\<\w*[A-Z]\K*\>\|'s+ contains=@NoSpell
nnoremap <Tab> <Nop>
endfunction
function SetRacketOptions()
colorscheme quantum
call SetTabWidth(2, 1)
hi MatchParen cterm=bold ctermbg=none ctermfg=46
endfunction
function SetPythonOptions()
set iskeyword=38,42,43,45,47-57,60-62,_,@
call SetTabWidth(4, 1)
hi MatchParen cterm=bold ctermbg=none ctermfg=46
let g:pymode_lint_checkers = ["pep0"] " pep8, pep257, pyflakes
let g:pymode_lint_ignore = "W191, D100, D401, D103" " D101, D102
nnoremap <Tab> <Nop>
let g:pymode_python = 'python3'
endfunction
function KeyComboOptions()
map q <Nop>
nnoremap <Up> gk
nnoremap <Down> gj
nnoremap <F3> :noh<CR>
vnoremap <silent> # :s/^/#/<cr>:noh<cr>
vnoremap <silent> -# :s/^#//<cr>:noh<cr>
noremap <c-s-up> ddkP
inoremap <c-s-up> ddkP
noremap <c-s-down> ddp
inoremap <c-s-down> ddp
map <F8> :NERDTreeToggle<CR>
noremap <c-t> :tabe<cr>
noremap <c-s-i> G=gg
inoremap <C-c> <Esc><Esc>
inoremap <C-s> <Esc><Esc>:w<CR>
noremap <C-s> <Esc><Esc>:w<CR>
vnoremap <C-s> <Esc><Esc>:w<CR>
xnoremap <leader>( xi()<Esc>P
xnoremap <leader>[ xi[]<Esc>P
xnoremap <leader>{ xi{}<Esc>P
xnoremap <leader>' xi''<Esc>P
xnoremap <leader>" xi""<Esc>P
inoremap <expr> <down> ((pumvisible())?("\<C-n>"):("\<down>"))
inoremap <expr> <up> ((pumvisible())?("\<C-p>"):("\<up>"))
map <C-h> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
map <C-f> :echo synIDattr(synIDtrans(synID(line("."), col("."), 1)), "fg")<CR>
command W w
" line numbers
noremap <C-l>y :set number<CR>
noremap <C-l>n :set nonumber<CR>
" timestamp
":nnoremap <F5> "=strftime("%c")<CR>P
inoremap <C-t> <C-R>=strftime("%Y-%m-%d-%H:%M:%S")<CR>
" toggle spell checking
inoremap <F5> <Esc>:set spell!<CR>i
noremap <F5> :set spell!<CR>
endfunction
" http://stackoverflow.com/a/38258720/1829329
" automatically set paste when pasting
let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
" ===== AUTOCOMMANDS =====
augroup pandoc_syntax
au! BufNewFile,BufFilePRe,BufRead *.md set filetype=markdown.pandoc
augroup END
autocmd BufEnter,BufNewFile,TabEnter *.md call SetMarkdownOptions()
autocmd BufEnter,BufNewFile,TabEnter *.rst call SetReStructuredTextOptions()
autocmd BufEnter,BufNewFile,TabEnter *.rkt call SetRacketOptions()
autocmd BufEnter,BufNewFile,TabEnter *.py call SetPythonOptions()
" ===== DISABLE ROPE IN PYTHON MODE =====
let g:pymode_rope = 0
" ===== TABLES =====
let g:table_mode_corner_corner="+"
let g:table_mode_header_fillchar="="
let g:table_mode_align_char=":"
let g:table_mode_syntax=0
" ===== automatically change directory to the current file =====
set autochdir
" ===== LOCALE SETTINGS =====
set encoding=utf-8
" ===== WORD CHARACTERS =====
" german stuff
set iskeyword=38,42,43,45,47-58,60-62,_,@
" ===== FONT SETTINGS =====
set guifont=Inconsolatas\ LGC:h10
" ===== LINE BREAKS =====
set wrap linebreak nolist
" ===== COLORSCHEMES =====
set term=xterm
set t_Co=256
call ActivateSyntaxHighlighting()
colorscheme quantum
" ===== RAINBOW PARENTHESES =====
" activate rainbow parentheses
"au VimEnter * RainbowParenthesesToggle
"au Syntax * RainbowParenthesesLoadRound
"au Syntax * RainbowParenthesesLoadSquare
"au Syntax * RainbowParenthesesLoadBraces
" ===== NERD TREE =====
" NerdTree automatically opened
" autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" ===== TABS =====
call SetTabWidth(4, 1)
filetype plugin on
set omnifunc=syntaxcomplete#Complete
filetype indent on
call KeyComboOptions()
" ===== SEARCH =====
set hlsearch
" ===== LINE NUMBERS =====
set number
" ===== CURSOR =====
autocmd InsertEnter * set cul
autocmd InsertLeave * set nocul
" ===== MOUSE =====
"set mouse=n
"set ttymouse=xterm2
" ===== FOLDING =====
set foldmethod=indent
set foldnestmax=10
set nofoldenable
set foldlevel=2
" ===== LANGUAGE =====
set spelllang=en_us
" set spelllang=de_de
" ===== DISPLAY WHITESPACE CHARS =====
set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<
",space:␣
set list
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment