" mikroskeem's neovim config " Bail if config is already loaded if exists("g:loaded_neostrophic") finish endif let g:loaded_neostrophic = 1 " neovim-qt Guifont command command -nargs=? Guifont call rpcnotify(0, 'Gui', 'SetFont', "") | let g:Guifont="" " Set options set wildmode=longest,list,full set completeopt-=preview set shortmess+=cI set noshowmode set shortmess+=I set nostartofline set wrap set textwidth=0 set wrapmargin=0 set background=dark set number set numberwidth=3 if $DISPLAY != '' set clipboard+=unnamedplus endif set showmatch set smartcase set ignorecase set undofile set undoreload=100 set viminfo+=n$HOME/.config/nvim/tmp/viminfo set showtabline=0 set backup set backupdir=$HOME/.config/nvim/tmp/backup/ set undodir=$HOME/.config/nvim/tmp/undo/ set directory=$HOME/.config/nvim/tmp/swap/ set title set cursorline let mapleader = ',' function! s:center_header(lines) abort let longest_line = max(map(copy(a:lines), 'len(v:val)')) let centered_lines = map(copy(a:lines), \ 'repeat(" ", (&columns / 2) - (longest_line / 2)) . v:val') return centered_lines endfunction function! s:mkdir_p(p) if !isdirectory(expand(a:p)) call mkdir(expand(a:p), "p") endif endfunction function! s:set_indent() if &ft =~ 'yaml\|coffee\|vim\|jade' set softtabstop=2 shiftwidth=2 endif if &ft =~ 'make' set shiftwidth=2 tabstop=2 noexpandtab endif endfunction " Make missing dirs silent! call s:mkdir_p(&undodir) silent! call s:mkdir_p(&backupdir) silent! call s:mkdir_p(&directory) " Default indent settings set softtabstop=4 set shiftwidth=4 set expandtab set shiftround set autoindent set copyindent " Function call below overrides previous options " if opened filetype was defined in function autocmd! FileType * call s:set_indent() " Fake $MYVIMRC function! s:fake_vimrc() let $MYVIMRC=$HOME . "/.config/nvim/init.vim" endfunction " UpdateRemotePlugins wrapper (used in vim-plug) function! URP(info) if a:info.status == 'installed' silent! call s:fake_vimrc() silent! UpdateRemotePlugins endif endfunction " Eyecandy: loads color scheme after it's installation :3 function! Load_color_scheme(info) if a:info.status == 'installed' let s = printf("colorscheme %s", a:info.name) silent! execute s endif endfunction " Plugin configurations let g:airline_theme = 'powerlineish' let g:airline#extensions#branch#enabled = 1 let g:airline_powerline_fonts = 0 let g:airline#extensions#whitespace#enabled = 1 let g:airline#extensions#hunks#non_zero_only = 1 let g:airline#extensions#tabline#enabled = 1 let g:bufferline_echo = 0 let g:bufferline_modified = '*' let g:bufferline_show_bufnr = 0 let g:molokai_original = 0 let g:rehash256 = 1 let g:syntastic_enable_balloons = 1 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_mode_map = { \ "mode": "active", \ "active_filetypes": ["javascript", "python", "coffee", "jade", "yaml"], \ "passive_filetypes": ["java", "c"]} let g:syntastic_python_checkers = ['flake8', 'pylint'] let g:syntastic_javascript_checkers = ['eslint'] let g:syntastic_yaml_checkers = ['yamllint', 'yamlxs'] let g:startify_session_dir = '~/.config/nvim/startify-session' let g:startify_custom_header = s:center_header(map(split(system('fortune | cowsay'), '\n'), '" ". v:val') + ['','']) let g:deoplete#enable_at_startup = 1 let g:deoplete#enable_camel_case = 1 let g:python3_host_prog = '/usr/bin/python3' let g:python3_host_skip_check = 1 let g:NERDTreeHijackNetrw = 1 let g:gitgutter_map_keys = 0 let g:gitgutter_highlight_lines = 0 let g:echodoc_enable_at_startup = 1 let g:rainbow_active = 1 let g:rainbow_conf = { \ 'ctermfgs': ['red', 'lightgreen', 'lightred', 'lightblue', 'yellow']} " Plugins call plug#begin('~/.config/nvim/neostrophic_plugins') Plug 'tpope/vim-sensible' Plug 'Konfekt/FastFold' Plug 'Matt-Deacalion/vim-systemd-syntax', {'for': 'systemd'} Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'} Plug 'Shougo/context_filetype.vim' Plug 'Shougo/deoplete.nvim', {'do': function('URP')} Plug 'Shougo/echodoc.vim' Plug 'Shougo/unite.vim', {'on': 'Unite' } Plug 'Shougo/vimproc.vim', {'do': 'make'} Plug 'airblade/vim-gitgutter' Plug 'bling/vim-bufferline' Plug 'digitaltoad/vim-jade', {'for': ['jade', 'pug']} Plug 'elzr/vim-json', {'for': 'json'} Plug 'jelera/vim-javascript-syntax', {'for': 'javascript'} Plug 'jmcantrell/vim-virtualenv' Plug 'junegunn/goyo.vim', {'on': 'Goyo'} Plug 'junegunn/limelight.vim', {'on': 'Limelight'} Plug 'junegunn/vim-easy-align', {'on': 'EasyAlign'} Plug 'justinmk/molokai', {'do': function('Load_color_scheme')} Plug 'kchmck/vim-coffee-script', {'for': 'coffee'} Plug 'luochen1990/rainbow' Plug 'majutsushi/tagbar' Plug 'mattn/gist-vim', {'on': 'Gist'} Plug 'mattn/webapi-vim', {'on': 'Gist'} Plug 'matze/vim-move' Plug 'mhinz/vim-startify' Plug 'mikroskeem/vim-sk-syntax', {'for': 'skript'} Plug 'nelstrom/vim-markdown-folding', {'for': 'markdown'} Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'} Plug 'scrooloose/syntastic' Plug 'terryma/vim-smooth-scroll' Plug 'tpope/vim-markdown', {'for': 'markdown'} Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'vim-scripts/nginx.vim', {'for': 'nginx'} Plug 'wavded/vim-stylus', {'for': 'stylus'} Plug 'zchee/deoplete-jedi' call plug#end() " Goyo and Limelight autocmd! User GoyoEnter Limelight autocmd! User GoyoLeave Limelight! " Keybinds " Tab controls nnoremap :tabprevious nnoremap :tabnext nnoremap :tabnew nnoremap :tabclose " ---------------- nnoremap :tabnew nnoremap :tabclose nnoremap :tabprevious nnoremap :tabnext " Commonly used commands " Undo nnoremap :u " Quit nnoremap :q " Just write nnoremap :w " Quit without writing nnoremap :q! " Remove search highlighting nnoremap :noh " Commands from plugins " File listing nnoremap :NERDTreeToggle " Gist nnoremap :Gist -p " Toggle Syntastic nnoremap :SyntasticToggleMode " Goyo mode nnoremap :Goyo " neovim term nnoremap :term " neovim terminal mode -> normal mode with Alt-q tnoremap " Unite nnoremap :Unite " Show/hide tags nnoremap :TagbarToggle " vim-easy-align " xnoremap / nnoremap won't work here somehow xmap ga :EasyAlign nmap ga :EasyAlign " vim-smooth-scroll noremap :call smooth_scroll#up(&scroll, 0, 2) noremap :call smooth_scroll#down(&scroll, 0, 2) noremap :call smooth_scroll#up(&scroll*2, 0, 4) noremap :call smooth_scroll#down(&scroll*2, 0, 4) " Re-apply fake $MYVIMRC silent! call s:fake_vimrc() " Load color scheme (reuse function) call Load_color_scheme({'status': 'installed', 'name': 'molokai'})