Skip to content

Instantly share code, notes, and snippets.

@jcortesg
Created April 10, 2018 23:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcortesg/2818aa98ef3a2168e64a437970307b04 to your computer and use it in GitHub Desktop.
Save jcortesg/2818aa98ef3a2168e64a437970307b04 to your computer and use it in GitHub Desktop.
set nocompatible
filetype off
filetype plugin indent on
syntax enable
call plug#begin('~/.local/share/nvim/plugged')
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
Plug 'w0rp/ale'
" Code navigation
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
Plug 'scrooloose/nerdtree'
Plug 't9md/vim-choosewin'
Plug 'easymotion/vim-easymotion'
" Eye candy
Plug 'airblade/vim-gitgutter'
Plug 'elzr/vim-json'
Plug 'flazz/vim-colorschemes'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'jreybert/vimagit'
" Search
Plug 'mileszs/ack.vim'
Plug 'skwp/greplace.vim'
" Tmux
Plug 'christoomey/vim-tmux-navigator'
Plug 'christoomey/vim-tmux-runner'
" Test runner
Plug 'janko-m/vim-test'
" Code formatting
Plug 'terryma/vim-multiple-cursors'
Plug 'junegunn/vim-easy-align'
Plug 'mattn/emmet-vim'
Plug 'tomtom/tcomment_vim'
Plug 'sheerun/vim-polyglot'
Plug 'jiangmiao/auto-pairs'
" Mandatory tpope section
Plug 'tpope/vim-projectionist'
Plug 'tpope/vim-dispatch'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-ragtag'
Plug 'tpope/vim-endwise'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-rhubarb'
Plug 'tpope/vim-fugitive'
" JS 🔥💩
Plug 'pangloss/vim-javascript', { 'for': ['javascript', 'javascript.jsx'] }
Plug 'mxw/vim-jsx', { 'for': ['javascript', 'javascript.jsx'] }
Plug 'posva/vim-vue'
Plugin 'chemzqm/vim-jsx-improve'
call plug#end()
" General settings
" ----------------
set nobackup
set noswapfile
set nowritebackup
set lazyredraw " Don't redraw while executing macros
set autoread " Autoread from disk when a file changes
set expandtab
set tabstop=2
set shiftwidth=2
set softtabstop=2
set shiftround
set autoindent
set smartindent
set modelines=1 " Open rcfiles as VIM files
set scrolloff=5 " Keep at least 5 lines below the cursor
set nofoldenable " Smells so bad when code needs folding
set history=500
set relativenumber
set number
set incsearch " Highlight when searching
set hlsearch " ...also other matches
set ignorecase
set smartcase
set nowrap
set formatoptions-=t " don't automatically wrap text while typing
set mouse=a " scroll with mouse as well
set backspace=indent,eol,start
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pdf,*.gz,*.beam
set cursorline
set noshowmode
set showmatch
set clipboard=unnamed " Natural copy/paste with macOS
set colorcolumn=80 " Make it obvious when lines are too long
set background=dark
colorscheme gruvbox
" Close a help file with the `q` key
autocmd Filetype help nmap <buffer> q :q<cr>
let mapleader = "\<space>"
" Use 0 to go to the beginning of text in the current line.
nmap 0 ^
" Behave like a good citizen when moving through wrapped lines
nmap j gj
nmap k gk
" The nvim config is constantly tweaked, so I need a simple
" way to access it and reload it at will
nmap <leader>vi :tabe $MYVIMRC<cr>
nmap <leader>vo :source $MYVIMRC<cr>
" =========================================================
" Keymaps
" =========================================================
" Escape insert mode
imap fd <Esc>
" Panes
nnoremap <leader>w/ :vsp<cr>
nnoremap <leader>w- :sp<cr>
nnoremap <leader>x :close<cr>
" Files
nnoremap <leader>fs :w<cr>
nnoremap <leader>fS :wa<cr>
" Navigation
nnoremap <C-p> :Files<cr>
nnoremap <leader>, :Buffers<cr>
nnoremap <leader>m :Marks<cr>
nnoremap <leader>s :Snippets<cr>
nnoremap <leader>ss :BLines<cr>
nnoremap <silent> <leader>. :Tags<cr>
nnoremap <leader>ft :NERDTreeToggle<cr>
nnoremap <leader>ff :NERDTreeFind<cr>
nnoremap <leader>sa :Ag<space>
nnoremap <leader>sp :exe "Ag ".expand('<cword>')<cr>
nnoremap <leader>p :set paste<cr>o<esc>"*]p:set nopaste<cr>
nnoremap <leader>; :copen<cr>
nnoremap <leader>o :cclose<cr>
nnoremap <leader>gs :Magit<cr>
nnoremap <leader>h :nohlsearch<cr>
nnoremap <silent> <BS> :TmuxNavigateLeft<cr>
nmap - <Plug>(choosewin)
nnoremap <leader>qQ :qall<cr>
let g:tmux_navigator_save_on_switch = 2 " Save file before navigating to a tmux
" pane
" EasyAlign
xmap ,a <Plug>(EasyAlign)
nmap ,a <Plug>(EasyAlign)
" Disable exmode, I keep hitting it by accident
nnoremap Q <nop>
" Test runner
let test#strategy = "dispatch"
nmap <silent> ,tt :TestNearest<cr>
nmap <silent> ,ta :TestFile<cr>
nmap <silent> ,tA :TestSuite<cr>
nmap <silent> ,tl :TestLast<cr>
" Tmux runner
nnoremap <leader>ta :VtrAttachToPane<cr>
map <leader>ts :VtrSendLinesToRunner<cr>
" Greplace
set grepprg=ag
let g:grep_cmd_opts = '--line-numbers --noheading'
" Emmet
let g:user_emmet_install_global = 0
autocmd FileType html,css,eruby,hbs,handlebars,eelixir,javascript.jsx,vue EmmetInstall
" Easymotion
let g:EasyMotion_do_mapping = 0
let g:EasyMotion_smartcase = 1
map \ <Plug>(easymotion-overwin-f)
map <leader>\ <Plug>(easymotion-bd-f)
map <leader>L <Plug>(easymotion-overwin-line)
map <leader>j <Plug>(easymotion-j)
map <leader>k <Plug>(easymotion-k)
" Ale linter only lint after the file is saved
let g:ale_linters = { 'javascript': ['eslint'], 'ruby': ['rubocop'] }
let g:ale_sign_column_always = 1
let g:ale_set_loclist = 0
let g:ale_set_quickfix = 1
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_enter = 0
""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" ZOOM PANES
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <silent> <leader>wm :ZoomToggle<cr>
function! s:ZoomToggle() abort
if exists('t:zoomed') && t:zoomed
execute t:zoom_winrestcmd
let t:zoomed = 0
else
let t:zoom_winrestcmd = winrestcmd()
resize
vertical resize
let t:zoomed = 1
endif
endfunction
command! ZoomToggle call s:ZoomToggle()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment