Created
April 10, 2018 23:17
-
-
Save jcortesg/2818aa98ef3a2168e64a437970307b04 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
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