Created
May 13, 2020 13:46
-
-
Save danjac/ef2315fc49fb5fb179a1a0ffb6388d8b to your computer and use it in GitHub Desktop.
nvim/vim config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
syntax on | |
filetype plugin indent on | |
set nocompatible | |
set encoding=utf-8 | |
set fileencodings=utf-8 | |
" prevent shada loading | |
" set shada="NONE" | |
set guicursor= | |
" | |
" PLUGINS | |
call plug#begin('~/.local/share/nvim/plugged') | |
Plug 'dense-analysis/ale' | |
Plug 'psf/black', { 'tag': '19.10b0' } | |
Plug 'mhinz/vim-mix-format' | |
Plug 'sjl/gundo.vim' | |
Plug 'SirVer/ultisnips' | |
Plug 'honza/vim-snippets' | |
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } | |
Plug 'digitaltoad/vim-pug' | |
Plug 'easymotion/vim-easymotion' | |
Plug 'ervandew/supertab' | |
Plug 'fisadev/vim-isort' | |
Plug 'thinca/vim-portal' | |
Plug 'elixir-editors/vim-elixir' | |
Plug 'justinmk/vim-sneak' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'evanleck/vim-svelte' | |
Plug 'fatih/vim-go' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'editorconfig/editorconfig-vim' | |
Plug 'tbodt/deoplete-tabnine', { 'do': './install.sh' } | |
" COLOR THEMES | |
" | |
"Plug 'nanotech/jellybeans.vim' | |
"Plug 'dracula/vim', { 'as': 'dracula' } | |
"Plug 'cocopon/iceberg.vim' | |
"Plug 'arcticicestudio/nord-vim' | |
"Plug 'joshdick/onedark.vim' | |
Plug 'gruvbox-community/gruvbox' | |
"Plug 'crusoexia/vim-monokai' | |
"Plug 'rakr/vim-one' | |
"Plug 'sonph/onehalf', {'rtp': 'vim/'} | |
" | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'leafgarland/typescript-vim' | |
Plug 'ludovicchabant/vim-lawrencium' | |
Plug 'mattn/emmet-vim' | |
Plug 'pangloss/vim-javascript' | |
Plug 'posva/vim-vue' | |
Plug 'rking/ag.vim' | |
Plug 'scrooloose/nerdcommenter' | |
Plug 'scrooloose/nerdtree' | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
Plug 'tiagofumo/vim-nerdtree-syntax-highlight' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'tell-k/vim-autopep8' | |
Plug 'thiagoalessio/rainbow_levels.vim' | |
Plug 'tpope/vim-abolish' | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-repeat' | |
Plug 'tpope/vim-surround' | |
Plug 'tpope/vim-vinegar' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'edkolev/tmuxline.vim' | |
Plug 'vimwiki/vimwiki' | |
call plug#end() | |
filetype plugin indent on " required | |
" Uncomment the following to have Vim jump to the last position when | |
" reopening a file | |
if has("autocmd") | |
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | |
\| exe "normal! g'\"" | endif | |
endif | |
" Deoplete | |
" | |
let g:deoplete#enable_at_startup = 1 | |
let g:deoplete#enable_on_insert_enter = 1 | |
" make Leader space bar | |
let mapleader = "\<Space>" | |
" Black | |
let g:black_linelength = 79 | |
nnoremap <Leader>= :Black<CR> | |
" Elixir formatter | |
nnoremap <Leader>ef = :MixFormat<CR> | |
"FZF | |
"Use Ctrl+P | |
":nnoremap <leader>f :Files<CR> | |
:nnoremap <C-p> :Files<CR> | |
let g:fzf_nvim_statusline = 0 " disable statusline overwriting | |
" Autocomplete HTML end tags | |
:inoremap <lt>/ </<C-x><C-o><Esc>==gi | |
set autoread | |
set title | |
set ruler | |
set showcmd | |
set lazyredraw | |
set magic | |
set relativenumber | |
set number relativenumber | |
set wildmenu | |
set wildmode=list:longest | |
set wildignore+=.hg,.git,.svn " Version Controls" | |
set wildignore+=*.aux,*.out,*.toc "Latex Indermediate files" | |
set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg "Binary Imgs" | |
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest "Compiled Object files" | |
set wildignore+=*.spl "Compiled spelling world list" | |
set wildignore+=*.sw? "Vim swap files" | |
set wildignore+=*.DS_Store "OSX SHIT" | |
set wildignore+=*.luac "Lua byte code" | |
set wildignore+=migrations "Django migrations" | |
set wildignore+=*.pyc "Python Object codes" | |
set wildignore+=*.orig,*.rej "Merge resolution files" | |
" disable visual bells | |
set novb | |
set noerrorbells | |
set t_vb= | |
set tm=500 | |
" Reload settings | |
nmap <F6> :source ~/.config/nvim/init.vim<CR> | |
nmap <F9> :ALEFix<CR> | |
nnoremap <Leader>0 :ALEFix<CR> | |
" Open | |
nnoremap <Leader>e :e<Space> | |
" Save | |
nnoremap <Leader>w :w<CR> | |
" Visual mode: Space+Space | |
nmap <Leader><Leader> V | |
"System clipboard | |
vmap <Leader>y "+y | |
vmap <Leader>d "+d | |
nmap <Leader>p "+p | |
nmap <Leader>P "+P | |
vmap <Leader>p "+p | |
vmap <Leader>P "+P | |
nmap <Leader>u :pu<CR> | |
nmap <Leader>U :pu!<CR> | |
" disable arrow keys | |
map <up> <nop> | |
map <down> <nop> | |
map <left> <nop> | |
map <right> <nop> | |
imap <up> <nop> | |
map <down> <nop> | |
imap <left> <nop> | |
imap <right> <nop> | |
" Use system clipboard | |
set clipboard=unnamedplus | |
set nobackup | |
set noswapfile | |
" Search | |
set ignorecase | |
set smartcase | |
set incsearch | |
set hlsearch | |
set showmatch | |
" Search word under cursor | |
noremap <Leader>a :Ag <cword><cr> | |
" Clear search | |
nnoremap <F3> :set hlsearch!<CR> | |
" Colors | |
set termguicolors | |
"set t_Co=256 | |
set background=dark | |
"colorscheme one | |
"colorscheme jellybeans | |
colorscheme gruvbox | |
"colorscheme onedark | |
"colorscheme dracula | |
"colorscheme iceberg | |
"colorscheme monokai | |
"colorscheme onehalfdark | |
"colorscheme nord | |
" hi LineNr ctermbg=black | |
" | |
" | |
"let g:jellybeans_use_term_italics = 1 | |
"let g:jellybeans_use_lowcolor_black = 1 | |
hi Comment cterm=italic | |
hi Normal ctermbg=none | |
hi NonText ctermbg=none | |
" toggle rainbow levels | |
map <leader>l :RainbowLevelsToggle<cr> | |
" Airline config | |
" | |
" | |
" show syntax errors in airline | |
let g:airline#extensions#ale#enabled = 1 | |
let g:airline#extensions#tabline#fnamemod = ':t' | |
let g:airline#extensions#tabline#enabled = 1 | |
"let g:airline_theme='onedark' | |
"let g:airline_theme='jellybeans' | |
"let g:airline_theme='dracula' | |
"let g:airline_theme='iceberg' | |
"let g:airline_theme='monokai' | |
"let g:airline_theme='onehalfdark' | |
"let g:airline_theme='nord' | |
let g:airline_theme='gruvbox' | |
"let g:airline_theme='one' | |
let g:airline_powerline_fonts = 1 | |
let g:Powerline_symbols = 'fancy' | |
" speed up powerline + ESC | |
set ttimeoutlen=10 | |
augroup FastEscape | |
autocmd! | |
au InsertEnter * set timeoutlen=0 | |
au InsertLeave * set timeoutlen=1000 | |
augroup END | |
" Gundo | |
nnoremap <leader>g :GundoToggle<CR> | |
" | |
" buffer commands | |
:nnoremap <F5> :buffers<CR>:buffer<Space> | |
:nnoremap <leader>b :Buffer<CR> | |
:nnoremap <leader># :b#<CR> | |
:nnoremap <leader>o :only<CR> | |
:nnoremap <leader>O :only<CR> | |
" Strip all whitespace on save | |
autocmd BufWritePre * :%s/\s\+$//e | |
" Default indentation | |
set tabstop=2 | |
set shiftwidth=2 | |
set expandtab | |
set autoindent | |
" Indentation by file type | |
autocmd FileType go set sw=4 sts=4 et | |
autocmd FileType python set sw=4 sts=4 et | |
autocmd FileType html set sw=2 sts=2 et | |
autocmd FileType jinja2 set sw=2 sts=2 et | |
autocmd FileType css set sw=2 sts=2 et | |
autocmd FileType scss set sw=2 sts=2 et | |
autocmd FileType javascript set sw=2 sts=2 et | |
autocmd FileType vue set sw=2 sts=2 et | |
autocmd FileType ruby set sw=2 sts=2 et | |
autocmd FileType elixir set sw=2 sts=2 et | |
" Folding | |
set foldmethod=indent | |
" Prevents fold on open, zc restores | |
set nofoldenable | |
" Linting config | |
let g:ale_linters = { | |
\ 'python': ['flake8'], | |
\ 'javascript': ['eslint'], | |
\ 'scss': ['scss-lint'], | |
\ 'css': ['stylelint'], | |
\} | |
let g:ale_fixers = { | |
\ 'python': ['black'], | |
\ 'javascript': ['prettier'], | |
\ 'html': ['html-beautify'], | |
\ 'htmldjango': ['html-beautify'], | |
\ 'scss': ['prettier'], | |
\ 'css': ['prettier'], | |
\} | |
let g:ale_html_beautify_options = '--wrap-attributes=force-aligned --indent-size=2' | |
" Python config | |
" | |
let python_highlight_all=1 | |
autocmd FileType python noremap <buffer> <F8> :call Autopep8()<CR> | |
let g:vim_isort_map = '<C-i>' | |
let g:vim_isort_config_overrides = { | |
\ 'include_trailing_comma': 1, 'multi_line_output': 3} | |
function ExecuteMyPy() | |
silent !clear | |
execute "!mypy --ignore-missing-imports --follow-imports=skip " . bufname("%") | |
endfunction | |
nnoremap <buffer> <leader>mp :call ExecuteMyPy()<CR> | |
" VueJS config | |
au BufNewFile,BufRead *.vue setf vue | |
autocmd FileType vue syntax sync fromstart | |
" Enable Emmet for different files | |
let g:user_emmet_settings = { | |
\ 'php' : { | |
\ 'extends' : 'html', | |
\ 'filters' : 'c', | |
\ }, | |
\ 'vue' : { | |
\ 'extends' : 'html', | |
\ 'filters' : 'javascript', | |
\ }, | |
\ 'eex' : { | |
\ 'extends' : 'html', | |
\ 'filters' : 'elixir', | |
\ }, | |
\ 'xml' : { | |
\ 'extends' : 'html', | |
\ }, | |
\ 'jinja2' : { | |
\ 'extends' : 'html', | |
\ }, | |
\} | |
" ultisnips | |
let g:UltiSnipsExpandTrigger="<tab>" | |
let g:UltiSnipsJumpForwardTrigger="<c-b>" | |
let g:UltiSnipsJumpBackwardTrigger="<c-z>" | |
let g:UltiSnipsEditSplit="vertical" | |
let g:UltiSnipsSnippetDirectories=["UltiSnips"] | |
let g:ultisnips_python_style="google" | |
" Golang | |
" | |
"let $NVIM_TUI_ENABLE_CURSOR_SHAPE = 1 | |
"autocmd InsertEnter * set cul | |
"autocmd InsertLeave * set nocul | |
" Use a blinking upright bar cursor in Insert mode, a blinking block in normal | |
"let &t_SI = "\<Esc>[5 q" | |
"let &t_EI = "\<Esc>[1 q" | |
"let g:tmuxline_preset = 'minimal' | |
"let g:tmuxline_theme = 'onedark' | |
"let g:tmuxline_theme = 'jellybeans' | |
"let g:tmuxline_theme = 'dracula' | |
"let g:tmuxline_theme = 'iceberg' | |
"let g:tmuxline_theme = 'monokai' | |
"let g:tmuxline_theme = 'onehalfdark' | |
"let g:tmuxline_theme = 'nord' | |
let g:tmuxline_theme = 'gruvbox' | |
" Django i18n trans tag macros | |
let @i = 'vitc{% trans "lli %l`4hp' | |
let @t = 'c{% r?kbtrans "lli %l4hp' | |
" NERDTree | |
let g:NERDTreeShowHidden = 1 | |
let g:NERDTreeMinimalUI = 1 | |
let g:NERDTreeIgnore = [] | |
let g:NERDTreeStatusline = '' | |
" Automaticaly close nvim if NERDTree is only thing left open | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
" Toggle | |
nnoremap <silent> <C-b> :NERDTreeToggle<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment