Skip to content

Instantly share code, notes, and snippets.

@danjac
Created May 13, 2020 13:46
Show Gist options
  • Save danjac/ef2315fc49fb5fb179a1a0ffb6388d8b to your computer and use it in GitHub Desktop.
Save danjac/ef2315fc49fb5fb179a1a0ffb6388d8b to your computer and use it in GitHub Desktop.
nvim/vim config
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