mirror of
https://github.com/tomru/DotfilesOld.git
synced 2026-03-03 06:27:21 +01:00
377 lines
8.3 KiB
VimL
377 lines
8.3 KiB
VimL
set encoding=utf-8
|
||
scriptencoding utf-8
|
||
|
||
call plug#begin('~/.vim/plugged')
|
||
|
||
Plug 'tpope/vim-sensible'
|
||
|
||
Plug 'L9'
|
||
Plug 'unimpaired.vim'
|
||
Plug 'surround.vim'
|
||
Plug 'Align'
|
||
Plug 'Raimondi/delimitMate'
|
||
|
||
Plug 'editorconfig/editorconfig-vim'
|
||
|
||
Plug 'Shougo/unite.vim'
|
||
Plug 'ctrlpvim/ctrlp.vim'
|
||
|
||
Plug 'scrooloose/nerdtree'
|
||
Plug 'scrooloose/nerdcommenter'
|
||
|
||
Plug 'Valloric/YouCompleteMe', { 'do': './install.sh --tern-completer' }
|
||
|
||
Plug 'mbbill/undotree'
|
||
|
||
Plug 'nathanaelkane/vim-indent-guides'
|
||
|
||
Plug 'SirVer/ultisnips'
|
||
Plug 'honza/vim-snippets'
|
||
|
||
Plug 'sheerun/vim-polyglot'
|
||
Plug 'scrooloose/syntastic'
|
||
|
||
Plug 'tpope/vim-fugitive'
|
||
Plug 'rhysd/conflict-marker.vim'
|
||
Plug 'airblade/vim-gitgutter'
|
||
|
||
Plug 'inside/vim-search-pulse'
|
||
Plug 'mileszs/ack.vim'
|
||
|
||
Plug 'BufOnly.vim'
|
||
|
||
Plug 'itchyny/lightline.vim'
|
||
|
||
Plug 'chriskempson/base16-vim'
|
||
|
||
Plug 'pangloss/vim-javascript', { 'for': 'javascript' }
|
||
Plug 'marijnh/tern_for_vim', { 'do': 'npm install', 'for': 'javascript' }
|
||
Plug 'mxw/vim-jsx', { 'for': 'javascript' }
|
||
|
||
Plug 'suan/vim-instant-markdown', { 'for': 'markdown' }
|
||
Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' }
|
||
|
||
call plug#end()
|
||
|
||
"" enable local .vimrc
|
||
set exrc " Enable use of directory-specific .vimrc
|
||
set secure " Only run autocommands owned by me
|
||
|
||
"" Tabs. May be overriten by autocmd rules
|
||
set tabstop=4
|
||
set softtabstop=0
|
||
set shiftwidth=4
|
||
set expandtab
|
||
|
||
"" Enable hidden buffers
|
||
set hidden
|
||
|
||
"" Searching
|
||
set hlsearch
|
||
set smartcase
|
||
|
||
"" Directories for swp files
|
||
set nobackup
|
||
set noswapfile
|
||
|
||
set fileformats=unix,dos,mac
|
||
|
||
" session management
|
||
let g:session_directory = "~/.vim/session"
|
||
let g:session_autoload = "no"
|
||
let g:session_autosave = "no"
|
||
let g:session_command_aliases = 1
|
||
|
||
"" Mouse
|
||
set mouse=a
|
||
|
||
"" Use modeline overrides
|
||
set modeline
|
||
set modelines=10
|
||
|
||
"" Visual settings
|
||
syntax enable
|
||
set synmaxcol=512
|
||
set cursorline
|
||
|
||
set number
|
||
if exists('+relativenumber')
|
||
set relativenumber
|
||
endif
|
||
|
||
set background=dark
|
||
let base16colorspace=256
|
||
colorscheme base16-solarized-dark
|
||
|
||
if has("gui_running")
|
||
"disable menu, toolsbar, scrollbar
|
||
set guioptions -=m
|
||
set guioptions -=T
|
||
set guioptions -=r
|
||
endif
|
||
|
||
set title
|
||
set titleold="Terminal"
|
||
set titlestring=%F
|
||
|
||
"" disable visual bell
|
||
set visualbell
|
||
set t_vb=
|
||
|
||
"" enable spelling
|
||
set spelllang=en,de
|
||
|
||
" Spelling highlights. Use underline in term to prevent cursorline highlights
|
||
" from interfering
|
||
if !has("gui_running")
|
||
hi clear SpellBad
|
||
hi SpellBad cterm=underline ctermfg=red
|
||
hi clear SpellCap
|
||
hi SpellCap cterm=underline ctermfg=blue
|
||
hi clear SpellLocal
|
||
hi SpellLocal cterm=underline ctermfg=blue
|
||
hi clear SpellRare
|
||
hi SpellRare cterm=underline ctermfg=blue
|
||
endif
|
||
|
||
" Display unprintable chars
|
||
set listchars=tab:▸\ ,extends:❯,precedes:❮,nbsp:␣
|
||
set showbreak=↳
|
||
|
||
" Open all folds initially
|
||
set foldmethod=indent
|
||
set foldlevelstart=99
|
||
|
||
" Writes to the unnamed register also writes to the * and + registers. This
|
||
" makes it easy to interact with the system clipboard
|
||
if has ('unnamedplus')
|
||
set clipboard=unnamedplus
|
||
else
|
||
set clipboard=unnamed
|
||
endif
|
||
|
||
"
|
||
" KEY MAPPINGS
|
||
"
|
||
|
||
"" MAP LEADER
|
||
noremap , \
|
||
let mapleader = ","
|
||
"let mapleader = "\<Space>"
|
||
|
||
"" fast saving
|
||
nmap <leader>w :update<cr>
|
||
"" fast escaping
|
||
imap jj <ESC>
|
||
"" clear highlight
|
||
nnoremap <leader><space> :noh<cr>
|
||
"" ignore lines when going up or down
|
||
nnoremap j gj
|
||
nnoremap k gk
|
||
|
||
"" open last buffer
|
||
nnoremap <BS> <C-^>
|
||
|
||
" Easier split navigation
|
||
|
||
" Use ctrl-[hjkl] to select the active split!
|
||
nmap <silent> <c-k> :wincmd k<CR>
|
||
nmap <silent> <c-j> :wincmd j<CR>
|
||
nmap <silent> <c-h> :wincmd h<CR>
|
||
nmap <silent> <c-l> :wincmd l<CR>
|
||
|
||
"" fast window switching
|
||
map <leader>, <C-W>w
|
||
|
||
"" open next buffer
|
||
map <leader>. :bn<cr>
|
||
|
||
"" cycle between buffers
|
||
map <leader>: :b#<cr>
|
||
|
||
"" delete buffer
|
||
map <leader>bd :bd<cr>
|
||
|
||
"" change directory to current buffer
|
||
map <leader>cd :cd %:p:h<cr>
|
||
"" indent visual selected code without unselecting and going back to normal mode
|
||
vmap > >gv
|
||
vmap < <gv
|
||
"" Visually select the text that was last edited/pasted
|
||
nmap gV `[v`]
|
||
|
||
"" pull word under cursor into lhs of a substitute (for quick search and replace)
|
||
nmap <leader>r :%s#\<<C-r>=expand("<cword>")<CR>\>#
|
||
|
||
"" strip all trailing whitespace in the current file
|
||
nnoremap <leader>W :%s/\s\+$//e<cr>:let @/=''<CR>
|
||
|
||
"" fast editing of the .vimrc
|
||
nmap <silent> <leader>ev :e $MYVIMRC<cr>
|
||
nmap <silent> <leader>sv :so $MYVIMRC<cr>
|
||
|
||
"" allow saving when you forgot sudo
|
||
cmap w!! w !sudo tee % >/dev/null
|
||
|
||
"" turn on spell checking
|
||
map <leader>spl :setlocal spell!<cr>
|
||
"" spell checking shortcuts
|
||
map <leader>sn ]s
|
||
map <leader>sp [s
|
||
map <leader>sa zg
|
||
map <leader>s? z=
|
||
|
||
"" toggle states
|
||
nmap <silent> <leader>hh :set invhlsearch<CR>
|
||
nmap <silent> <leader>ll :set invlist<CR>
|
||
nmap <silent> <leader>pp :set invpaste<CR>
|
||
|
||
nmap <silent> <leader>nn :set invnumber<CR>
|
||
nmap <silent> <leader>ii :set invrelativenumber<CR>
|
||
|
||
"" <Leader>0: Run the visually selected code in node and replace it with the output
|
||
vnoremap <silent> <Leader>0 :!node<cr>
|
||
|
||
"" +/-: Increment number
|
||
nnoremap + <c-a>
|
||
nnoremap - <c-x>
|
||
|
||
" debugging, use leader-DD to start, do a slow action, then leader-DQ to
|
||
" finish. Your output will be in profile.log
|
||
nnoremap <silent> <leader>DD :exe ":profile start profile.log"<cr>:exe ":profile func *"<cr>:exe ":profile file *"<cr>
|
||
nnoremap <silent> <leader>DQ :exe ":profile pause"<cr>:noautocmd qall!<cr>
|
||
|
||
"" abbreviations
|
||
cnoreabbrev W! w!
|
||
cnoreabbrev Q! q!
|
||
cnoreabbrev Qall! qall!
|
||
cnoreabbrev Wq wq
|
||
cnoreabbrev Wa wa
|
||
cnoreabbrev wQ wq
|
||
cnoreabbrev WQ wq
|
||
cnoreabbrev W w
|
||
cnoreabbrev Q q
|
||
cnoreabbrev Qall qall
|
||
|
||
" session management
|
||
nnoremap <leader>so :OpenSession<Space>
|
||
nnoremap <leader>ss :SaveSession<Space>
|
||
nnoremap <leader>sd :DeleteSession<CR>
|
||
nnoremap <leader>sc :CloseSession<CR>
|
||
|
||
" persistent undo
|
||
set undodir=~/.vim/undos
|
||
set undofile
|
||
set undolevels=1000
|
||
set undoreload=10000
|
||
|
||
"
|
||
" Plugin Configuration
|
||
"
|
||
|
||
"" ACK
|
||
if executable('ag')
|
||
let g:ackprg = 'ag --vimgrep'
|
||
endif
|
||
|
||
"" syntastic
|
||
let g:syntastic_always_populate_loc_list = 1
|
||
let g:syntastic_auto_loc_list = 0
|
||
let g:syntastic_check_on_open = 1
|
||
let g:syntastic_check_on_wq = 0
|
||
|
||
" local linter support
|
||
|
||
let g:syntastic_javascript_checkers = []
|
||
|
||
function! CheckJavaScriptLinter(filepath, linter)
|
||
if exists('b:syntastic_checkers')
|
||
return
|
||
endif
|
||
if filereadable(a:filepath)
|
||
let b:syntastic_checkers = [a:linter]
|
||
let {'b:syntastic_' . a:linter . '_exec'} = a:filepath
|
||
endif
|
||
endfunction
|
||
|
||
function! SetupJavaScriptLinter()
|
||
let l:current_folder = expand('%:p:h')
|
||
let l:bin_folder = fnamemodify(syntastic#util#findFileInParent('package.json', l:current_folder), ':h')
|
||
let l:bin_folder = l:bin_folder . '/node_modules/.bin/'
|
||
call CheckJavaScriptLinter(l:bin_folder . 'standard', 'standard')
|
||
call CheckJavaScriptLinter(l:bin_folder . 'eslint', 'eslint')
|
||
endfunction
|
||
|
||
autocmd FileType javascript call SetupJavaScriptLinter()
|
||
|
||
"" lightline
|
||
if filereadable(expand("~/.vim/lightline.vim"))
|
||
source ~/.vim/lightline.vim
|
||
endif
|
||
|
||
"" NERDTree configuration
|
||
nmap <leader>n :NERDTreeToggle<CR>
|
||
|
||
"" Unimpaired
|
||
"" bubble single lines
|
||
nmap <leader>k [e
|
||
nmap <leader>j ]e
|
||
"" bubble multiple lines
|
||
vmap <leader>k [egv
|
||
vmap <leader>j ]egv
|
||
|
||
"" Make Ctrl-P plugin a lot faster for Git projects
|
||
let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files . -co --exclude-standard', 'find %s -type f']
|
||
let g:ctrlp_use_caching = 0
|
||
|
||
"" Indent Guides
|
||
nmap <leader>g :IndentGuidesToggle<CR>
|
||
|
||
"" Gundo
|
||
nmap <leader>u :UndotreeToggle<CR>
|
||
|
||
"" YouCompleteMe
|
||
let g:ycm_key_list_select_completion = ['<c-j>', '<Down>']
|
||
let g:ycm_key_list_previous_completion = ['<u-k>', '<Up>']
|
||
let g:SuperTabDefaultCompletionType = '<c-tab>'
|
||
|
||
"" Ultisnips
|
||
let g:UltiSnipsExpandTrigger="<tab>"
|
||
let g:UltiSnipsJumpForwardTrigger="<tab>"
|
||
"let g:UltiSnipsJumpBackwardTrigger="<c-z>"
|
||
|
||
" Tex
|
||
let g:tex_flavor = "latex"
|
||
let g:livepreview_previewer = 'zathura'
|
||
|
||
" JSX
|
||
let g:jsx_ext_required = 0 " Allow JSX in normal JS files
|
||
|
||
"
|
||
" Autocmd Rules
|
||
"
|
||
|
||
"" do syntax highlight syncing from start
|
||
autocmd BufEnter * :syntax sync fromstart
|
||
|
||
"" Remember cursor position
|
||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
|
||
|
||
"" txt, mail, tex
|
||
au FileType text,markdown,mail,tex set wrap wm=2 textwidth=78 nocindent spell
|
||
|
||
"" Python
|
||
au FileType python set noexpandtab
|
||
|
||
"" JavaScript
|
||
au FileType javascript map <leader>r <esc>:TernRename<CR>
|
||
|
||
"" Json
|
||
au BufRead,BufNewFile *.json set ft=json
|
||
|
||
"" Mustache
|
||
au BufRead,BufNewFile *.template set filetype=html.mustache syntax=mustache
|
||
|
||
"" always open help in vertical split
|
||
au FileType help wincmd L
|