Last active
November 16, 2020 18:05
-
-
Save giovannigiordano/b61bb08ae436114db43c30f7cb0bb871 to your computer and use it in GitHub Desktop.
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
" Plugin manager | |
call plug#begin('~/.vim/plugged') | |
Plug 'morhetz/gruvbox' | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'scrooloose/nerdtree' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'tpope/vim-surround' | |
Plug 'tpope/vim-fugitive' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'jparise/vim-graphql' | |
Plug 'elixir-editors/vim-elixir' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'andys8/vim-elm-syntax' | |
Plug 'HerringtonDarkholme/yats.vim' | |
Plug 'maxmellon/vim-jsx-pretty' | |
Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } | |
Plug 'junegunn/fzf', {'dir': '~/.fzf','do': './install --all'} | |
Plug 'junegunn/fzf.vim' " needed for previews | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
" Initialize plugin system | |
call plug#end() | |
" Enable syntax | |
syntax on | |
" Disable swap files | |
set noswapfile | |
" Set Vim font | |
set guifont=:h | |
" Colorscheme configuration | |
colorscheme gruvbox | |
if has("termguicolors") | |
set termguicolors | |
endif | |
" Display line numbers | |
set number | |
" Show hybrid line numbers | |
set number relativenumber | |
" Set 10 lines to the cursor - when moving vertically using j/k | |
set so=10 | |
" Highlight current line | |
set cursorline | |
"Always show current position | |
set ruler | |
" Ignore case when searching | |
set ignorecase | |
" When searching try to be smart about cases | |
set smartcase | |
" Highlight search results | |
set hlsearch | |
" Makes search act like search in modern browsers | |
set incsearch | |
" Use spaces instead of tabs | |
set expandtab | |
" Be smart when using tabs ;) | |
set smarttab | |
" 1 tab == 4 spaces | |
set shiftwidth=2 | |
set tabstop=2 | |
set softtabstop=2 | |
" Linebreak on 500 characters | |
set lbr | |
set tw=500 | |
set ai "Auto indent | |
set si "Smart indent | |
set wrap "Wrap lines | |
" Excluding version control directories | |
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/node_modules/*,*/dist/*,*/*.snap | |
" Airline buffer tabs | |
let g:airline#extensions#tabline#enabled = 1 | |
let g:airline#extensions#tabline#formatter = 'jsformatter' | |
let g:airline#extensions#tabline#buffer_idx_mode = 1 | |
nmap <leader>1 <Plug>AirlineSelectTab1 | |
nmap <leader>2 <Plug>AirlineSelectTab2 | |
nmap <leader>3 <Plug>AirlineSelectTab3 | |
nmap <leader>4 <Plug>AirlineSelectTab4 | |
nmap <leader>5 <Plug>AirlineSelectTab5 | |
nmap <leader>6 <Plug>AirlineSelectTab6 | |
nmap <leader>7 <Plug>AirlineSelectTab7 | |
nmap <leader>8 <Plug>AirlineSelectTab8 | |
nmap <leader>9 <Plug>AirlineSelectTab9 | |
nmap <leader>- <Plug>AirlineSelectPrevTab | |
nmap <leader>+ <Plug>AirlineSelectNextTab | |
" START OF COC.NVIM CONFIGURATION | |
" TextEdit might fail if hidden is not set. | |
set hidden | |
" Some servers have issues with backup files, see #649. | |
set nobackup | |
set nowritebackup | |
" Give more space for displaying messages. | |
set cmdheight=2 | |
" Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable | |
" delays and poor user experience. | |
set updatetime=300 | |
" Don't pass messages to |ins-completion-menu|. | |
set shortmess+=c | |
" Always show the signcolumn, otherwise it would shift the text each time | |
" diagnostics appear/become resolved. | |
if has("patch-8.1.1564") | |
" Recently vim can merge signcolumn and number column into one | |
set signcolumn=number | |
else | |
set signcolumn=yes | |
endif | |
" Use tab for trigger completion with characters ahead and navigate. | |
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by | |
" other plugin before putting this into your config. | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion. | |
if has('nvim') | |
inoremap <silent><expr> <c-space> coc#refresh() | |
else | |
inoremap <silent><expr> <c-@> coc#refresh() | |
endif | |
" Make <CR> auto-select the first completion item and notify coc.nvim to | |
" format on enter, <cr> could be remapped by other vim plugin | |
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() | |
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |
" Use `[g` and `]g` to navigate diagnostics | |
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
" GoTo code navigation. | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
" Use K to show documentation in preview window. | |
nnoremap <silent> K :call <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
elseif (coc#rpc#ready()) | |
call CocActionAsync('doHover') | |
else | |
execute '!' . &keywordprg . " " . expand('<cword>') | |
endif | |
endfunction | |
" Highlight the symbol and its references when holding the cursor. | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Symbol renaming. | |
nmap <leader>rn <Plug>(coc-rename) | |
" Formatting selected code. | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
augroup mygroup | |
autocmd! | |
" Setup formatexpr specified filetype(s). | |
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | |
" Update signature help on jump placeholder. | |
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | |
augroup end | |
" Applying codeAction to the selected region. | |
" Example: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap keys for applying codeAction to the current buffer. | |
nmap <leader>ac <Plug>(coc-codeaction) | |
" Apply AutoFix to problem on the current line. | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Map function and class text objects | |
" NOTE: Requires 'textDocument.documentSymbol' support from the language server. | |
xmap if <Plug>(coc-funcobj-i) | |
omap if <Plug>(coc-funcobj-i) | |
xmap af <Plug>(coc-funcobj-a) | |
omap af <Plug>(coc-funcobj-a) | |
xmap ic <Plug>(coc-classobj-i) | |
omap ic <Plug>(coc-classobj-i) | |
xmap ac <Plug>(coc-classobj-a) | |
omap ac <Plug>(coc-classobj-a) | |
" Remap <C-f> and <C-b> for scroll float windows/popups. | |
" Note coc#float#scroll works on neovim >= 0.4.0 or vim >= 8.2.0750 | |
nnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |
nnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |
inoremap <nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" | |
inoremap <nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" | |
" NeoVim-only mapping for visual mode scroll | |
" Useful on signatureHelp after jump placeholder of snippet expansion | |
if has('nvim') | |
vnoremap <nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#nvim_scroll(1, 1) : "\<C-f>" | |
vnoremap <nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#nvim_scroll(0, 1) : "\<C-b>" | |
endif | |
" Use CTRL-S for selections ranges. | |
" Requires 'textDocument/selectionRange' support of language server. | |
nmap <silent> <C-s> <Plug>(coc-range-select) | |
xmap <silent> <C-s> <Plug>(coc-range-select) | |
" Add `:Format` command to format current buffer. | |
command! -nargs=0 Format :call CocAction('format') | |
" Add `:Fold` command to fold current buffer. | |
command! -nargs=? Fold :call CocAction('fold', <f-args>) | |
" Add `:OR` command for organize imports of the current buffer. | |
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') | |
" Add (Neo)Vim's native statusline support. | |
" NOTE: Please see `:h coc-status` for integrations with external plugins that | |
" provide custom statusline: lightline.vim, vim-airline. | |
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | |
" Mappings for CoCList | |
" Show all diagnostics. | |
nnoremap <silent><nowait> <space>d :<C-u>CocList diagnostics<cr> | |
" Manage extensions. | |
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> | |
" Show commands. | |
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> | |
" Show buffers. | |
nnoremap <silent><nowait> <space>b :<C-u>CocList -A buffer<cr> | |
" Find symbol of current document. | |
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> | |
" Do default action for next item. | |
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item. | |
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> | |
" Show coc list. | |
nnoremap <silent><nowait> <space>l :<C-u>CocList<CR> | |
" Resume latest coc list. | |
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR> | |
" END OF COC.NVIM CONFIGURATION | |
" FZF | |
nnoremap <silent><nowait> <leader>s :<C-u>Ag<CR> | |
nnoremap <silent><nowait> <leader>b :<C-u>Buffers<CR> | |
nnoremap <silent><nowait> <leader>f :<C-u>Files<CR> | |
" Use vim-devicons | |
let g:fzf_preview_use_dev_icons = 1 | |
" NERDTree configuration | |
map <C-n> :NERDTreeToggle<CR> | |
let g:NERDTreeShowHidden=1 | |
let g:NERDTreeQuitOnOpen = 1 | |
" Add panes navigation mapping | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
" | |
" airline configuration | |
let g:airline_theme = 'gruvbox' | |
" Disable rich output on vim-fugitive | |
let g:fugitive_pty = 0 | |
" TMUX problems | |
set t_Co=256 | |
set background=dark | |
if exists('+termguicolors') | |
set t_Co=256 | |
set termguicolors | |
" https://superuser.com/questions/457911/in-vim-background-color-changes-on-scrolling | |
" Disable Background Color Erase (BCE) so that color schemes | |
" work properly when Vim is used inside tmux and GNU screen. | |
set t_ut= | |
endif | |
" fix termguicolor drop colors under tmux | |
if &term =~# '^screen' | |
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
endif | |
if &term =~ '256color' | |
" disable Background Color Erase (BCE) so that color schemes | |
" render properly when inside 256-color tmux and GNU screen. | |
" see also http://snk.tuxfamily.org/log/vim-256color-bce.html | |
set t_ut= | |
endif |
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
#!/usr/bin/env bash | |
set -o nounset # error when referencing undefined variable | |
set -o errexit # exit when command fails | |
curl https://gist.githubusercontent.com/giovannigiordano/b61bb08ae436114db43c30f7cb0bb871/raw/.vimrc --output $HOME/.vimrc | |
# Make sure we’re using the latest Homebrew. | |
brew update | |
# Upgrade any already-installed formulae. | |
brew upgrade | |
# Neovim Nighly Build | |
brew install --HEAD neovim | |
# Vim Plug | |
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ | |
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim | |
# Neovim remote | |
pip3 install --user neovim-remote | |
# Install Plug plugins | |
nvim --headless +PlugInstall +qall | |
# coc.nvim extensions | |
# Install extensions | |
mkdir -p ~/.config/coc/extensions | |
cd ~/.config/coc/extensions | |
if [ ! -f package.json ] | |
then | |
echo '{"dependencies":{}}'> package.json | |
fi | |
npm install coc-tssserver coc-prettier coc-eslint coc-json --global-style --ignore-scripts --no-bin-links --no-package-lock --only=prod |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment