set nocompatible " " Basics " set number set ruler syntax on " Set encoding set encoding=utf-8 " Whitespace stuff set nowrap set tabstop=2 set shiftwidth=2 set softtabstop=2 set expandtab set list listchars=tab:\ \ ,trail:ยท " Searching set hlsearch set incsearch set ignorecase set smartcase " Tab completion set wildmode=list:longest,list:full set wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/* " Status bar set laststatus=2 " allow backspacing over everything in insert mode set backspace=indent,eol,start " Show (partial) command in the status line set showcmd " Remember last location in file if has("autocmd") au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") \| exe "normal g'\"" | endif endif " " File Type Config " " make uses real tabs au FileType make set noexpandtab " Thorfile, Rakefile, Vagrantfile and Gemfile are Ruby au BufRead,BufNewFile {Gemfile,Rakefile,Vagrantfile,Thorfile,config.ru} set ft=ruby " make Python follow PEP8 ( http://www.python.org/dev/peps/pep-0008/ ) au FileType python set softtabstop=4 tabstop=4 shiftwidth=4 textwidth=79 " snes syntax highlighting au BufNewFile,BufRead *.asm,*.s set filetype=snes" " load the plugin and indent settings for the detected filetype filetype plugin indent on filetype plugin on " Directories for swp files set backupdir=~/.vim/.backup set directory=~/.vim/.backup " Include local vimrc if filereadable(expand("~/.vimrc.local")) source ~/.vimrc.local endif " " Tool Configs " " CTags map rt :!ctags --extra=+f -R * map :tnext " Opens an edit command with the path of the currently edited file filled in " Normal mode: e map e :e =expand("%:p:h") . "/" " Opens a tab edit command with the path of the currently edited file filled in " Normal mode: t map te :tabe =expand("%:p:h") . "/" " % to bounce from do to end etc. runtime! macros/matchit.vim " Dank Mono Italics highlight Keyword cterm=italic " FZF config set rtp+=/usr/local/opt/fzf " Inserts the path of the currently edited file into a command noremap :FZF let g:fzf_layout = { 'down': '40%' } " Auto Pairs let g:AutoPairsMultilineClose = 0 " ALE config let g:ale_linter_aliases = {'svelte': ['css', 'javascript']} let g:ale_linters = { \'javascript': ['eslint'], \'svelte': ['stylelint', 'eslint'] \} let g:ale_fixers = { \'javascript': ['eslint'], \'svelte': ['eslint'] \} let g:ale_fix_on_save = 1 " Deoplete config let g:deoplete#enable_at_startup = 1 inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " " A E S T H E T I C S " " Color Column let &colorcolumn="80,150" " Default color scheme set termguicolors color rbdr " Map colors to vim colors let g:fzf_colors = \ { 'fg': ['fg', 'Normal'], \ 'bg': ['bg', 'Normal'], \ 'hl': ['fg', 'Comment'], \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], \ 'hl+': ['fg', 'Statement'], \ 'info': ['fg', 'PreProc'], \ 'border': ['fg', 'Ignore'], \ 'prompt': ['fg', 'Conditional'], \ 'pointer': ['fg', 'Exception'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] } " " Editing Shortcuts " " Folding Settings set foldmethod=syntax set foldnestmax=10 set nofoldenable set foldlevel=1 " Relative numbers autocmd FocusLost * :set norelativenumber autocmd InsertEnter * :set norelativenumber autocmd InsertLeave * :set relativenumber autocmd CursorMoved * :set relativenumber function! NumberToggle() if(&relativenumber == 1) set norelativenumber else set relativenumber endif endfunction nnoremap :call NumberToggle() " Move things up and down using Ctrl + Shift nnoremap :m .+1== nnoremap :m .-2== inoremap :m .+1==gi inoremap :m .-2==gi vnoremap :m '>+1gv=gv vnoremap :m '<-2gv=gv " Limelight / Goyo config autocmd! User GoyoEnter Limelight autocmd! User GoyoLeave Limelight! nnoremap :Limelight!!== inoremap :Limelight!!==gi vnoremap :Limelight!!gv=gv nnoremap :Goyo== inoremap :Goyo==gi vnoremap :Goyogv=gv " " Plug Config " call plug#begin('~/.vim/plugged') " Syntaxes Plug 'https://gitlab.com/rbdr/api-notation.vim.git' Plug 'elzr/vim-json' Plug 'mustache/vim-mode' Plug 'othree/yajs.vim' Plug 'ARM9/snes-syntax-vim' Plug 'posva/vim-vue' Plug 'leafOfTree/vim-svelte-plugin' Plug 'bumaociyuan/vim-swift' Plug 'udalov/kotlin-vim' Plug 'tikhomirov/vim-glsl' Plug 'jparise/vim-graphql' " Editing Plug 'tpope/vim-endwise' Plug 'rstacruz/vim-closer' Plug 'michaeljsmith/vim-indent-object' " Distraction free editing Plug 'junegunn/goyo.vim' Plug 'junegunn/limelight.vim' " Tools Plug 'editorconfig/editorconfig-vim' Plug 'dense-analysis/ale' if has('nvim') Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } else Plug 'Shougo/deoplete.nvim' Plug 'roxma/nvim-yarp' Plug 'roxma/vim-hug-neovim-rpc' endif Plug 'vim-scripts/LargeFile' Plug 'tpope/vim-fugitive' Plug 'milkypostman/vim-togglelist' Plug 'jremmen/vim-ripgrep' " List ends here. Plugins become visible to Vim after this call. call plug#end()