Skip to content

Instantly share code, notes, and snippets.

@benawad
Created November 11, 2019 01:52
Show Gist options
  • Save benawad/b768f5a5bbd92c8baabd363b7e79786f to your computer and use it in GitHub Desktop.
Save benawad/b768f5a5bbd92c8baabd363b7e79786f to your computer and use it in GitHub Desktop.
" Specify a directory for plugins
call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'scrooloose/nerdtree'
"Plug 'tsony-tsonev/nerdtree-git-plugin'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
Plug 'ryanoasis/vim-devicons'
Plug 'airblade/vim-gitgutter'
Plug 'ctrlpvim/ctrlp.vim' " fuzzy find files
Plug 'scrooloose/nerdcommenter'
"Plug 'prettier/vim-prettier', { 'do': 'yarn install' }
Plug 'christoomey/vim-tmux-navigator'
Plug 'morhetz/gruvbox'
Plug 'HerringtonDarkholme/yats.vim' " TS Syntax
" Initialize plugin system
call plug#end()
inoremap jk <ESC>
nmap <C-n> :NERDTreeToggle<CR>
vmap ++ <plug>NERDCommenterToggle
nmap ++ <plug>NERDCommenterToggle
" open NERDTree automatically
"autocmd StdinReadPre * let s:std_in=1
"autocmd VimEnter * NERDTree
let g:NERDTreeGitStatusWithFlags = 1
"let g:WebDevIconsUnicodeDecorateFolderNodes = 1
"let g:NERDTreeGitStatusNodeColorization = 1
"let g:NERDTreeColorMapCustom = {
"\ "Staged" : "#0ee375",
"\ "Modified" : "#d9bf91",
"\ "Renamed" : "#51C9FC",
"\ "Untracked" : "#FCE77C",
"\ "Unmerged" : "#FC51E6",
"\ "Dirty" : "#FFBD61",
"\ "Clean" : "#87939A",
"\ "Ignored" : "#808080"
"\ }
let g:NERDTreeIgnore = ['^node_modules$']
" vim-prettier
"let g:prettier#quickfix_enabled = 0
"let g:prettier#quickfix_auto_focus = 0
" prettier command for coc
command! -nargs=0 Prettier :CocCommand prettier.formatFile
" run prettier on save
"let g:prettier#autoformat = 0
"autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync
" ctrlp
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
" j/k will move virtual lines (lines that wrap)
noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j')
noremap <silent> <expr> k (v:count == 0 ? 'gk' : 'k')
set relativenumber
set smarttab
set cindent
set tabstop=2
set shiftwidth=2
" always uses spaces instead of tab characters
set expandtab
colorscheme gruvbox
" sync open file with NERDTree
" " Check if NERDTree is open or active
function! IsNERDTreeOpen()
return exists("t:NERDTreeBufName") && (bufwinnr(t:NERDTreeBufName) != -1)
endfunction
" Call NERDTreeFind iff NERDTree is active, current window contains a modifiable
" file, and we're not in vimdiff
function! SyncTree()
if &modifiable && IsNERDTreeOpen() && strlen(expand('%')) > 0 && !&diff
NERDTreeFind
wincmd p
endif
endfunction
" Highlight currently open buffer in NERDTree
autocmd BufEnter * call SyncTree()
" coc config
let g:coc_global_extensions = [
\ 'coc-snippets',
\ 'coc-pairs',
\ 'coc-tsserver',
\ 'coc-eslint',
\ 'coc-prettier',
\ 'coc-json',
\ ]
" from readme
" if hidden is not set, TextEdit might fail.
set hidden " Some servers have issues with backup files, see #649 set nobackup set nowritebackup " Better display for messages set cmdheight=2 " You will have bad experience for diagnostic messages when it's default 4000.
set updatetime=300
" don't give |ins-completion-menu| messages.
set shortmess+=c
" always show signcolumns
set signcolumn=yes
" Use tab for trigger completion with characters ahead and navigate.
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin.
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.
inoremap <silent><expr> <c-space> coc#refresh()
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position.
" Coc only does snippet and additional edit on confirm.
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
" Or use `complete_info` if your vim support it, like:
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
" Use `[g` and `]g` to navigate diagnostics
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" Remap keys for gotos
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>')
else
call CocAction('doHover')
endif
endfunction
" Highlight symbol under cursor on CursorHold
autocmd CursorHold * silent call CocActionAsync('highlight')
" Remap for rename current word
nmap <F2> <Plug>(coc-rename)
" Remap for format selected region
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
" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap for do codeAction of current line
nmap <leader>ac <Plug>(coc-codeaction)
" Fix autofix problem of current line
nmap <leader>qf <Plug>(coc-fix-current)
" Create mappings for function text object, requires document symbols feature of languageserver.
xmap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap if <Plug>(coc-funcobj-i)
omap af <Plug>(coc-funcobj-a)
" Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python
nmap <silent> <C-d> <Plug>(coc-range-select)
xmap <silent> <C-d> <Plug>(coc-range-select)
" Use `:Format` to format current buffer
command! -nargs=0 Format :call CocAction('format')
" Use `:Fold` to fold current buffer
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" use `:OR` for organize import of current buffer
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
" Add status line support, for integration with other plugin, checkout `:h coc-status`
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Using CocList
" Show all diagnostics
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item.
nnoremap <silent> <space>j :<C-u>CocNext<CR>
" Do default action for previous item.
nnoremap <silent> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list
nnoremap <silent> <space>p :<C-u>CocListResume<CR>
@UnnatShaneshwar
Copy link

Hey thanks for this
take a look at my configuration https://github.com/UnnatShaneshwar/dotfiles/blob/main/vim/.vimrc

@mauricioklein
Copy link

For Neovim, apparently the setup changed a little bit.

In order to install Vim-Plug, I had to:

  1. Download Plug.vim content to ~/.local/share/nvim/site/autoload/plug.vim
  2. Add a init file for Neovim: ~/.config/nvim/init.vim
  3. On the init.vim file created above, add:
call plug#begin('~/.local/share/nvim/site/plugged')

Running PlugInstall on Neovim should report No plugin to install

@nemonik
Copy link

nemonik commented Jun 27, 2021

In your video that accompanied this... You had an overlay that showed the keys your pressing. What was providing that? I would appreciate having it to teach a class.

@UnnatShaneshwar
Copy link

@nemonik
Copy link

nemonik commented Jun 28, 2021

Thank you.

@cybercoder-naj
Copy link

cybercoder-naj commented Aug 14, 2021

I want the current line number to be displayed instead of "0" wherever the cursor is. What do I edit in my init.vim file? I want the relative lines up and down, but the current line must show the current line number

@cybercoder-naj
Copy link

Folder's icons are not loading, too..

You need to install and set up the Hack Nerd Font in your console

How do I install this on my Ubuntu WSL2 terminal?

@raihanadf
Copy link

Folder's icons are not loading, too..

You need to install and set up the Hack Nerd Font in your console

How do I install this on my Ubuntu WSL2 terminal?

Just download the font's ttfs and then move it to /usr/share/fonts/TTF/

@devilkiller-ag
Copy link

Where to put this file??

@raihanadf
Copy link

Where to put this file??

~/.config/nvim/here

@devilkiller-ag
Copy link

Where to put this file??

~/.config/nvim/here

I didn't get this path on my device:
Uploading Screenshot_2021-11-10-14-23-02-42_84d3000e3f4017145260f7618db1d683.jpg…

@frykari
Copy link

frykari commented Nov 11, 2021

[coc.nvim] error on execute python script: request error nvim_command - Vim(pyxfile): E319: No "python3" provider found. Run "checkhealth provider"

"help my"

@kelsny
Copy link

kelsny commented Nov 25, 2021

@cybercoder-naj I believe it's the line set relativenumber which enables relative line numbers that aid in the use of Vim key bindings.

@gutsyy
Copy link

gutsyy commented Dec 26, 2021

@kraud0003 plz run this on your terminal python3 -m pip install --user --upgrade pynvim

Copy link

ghost commented May 5, 2022

I want a one step setup or a line of bash

@AshMagill
Copy link

@butterfly1924 what os you on?

@AshMagill
Copy link

If you dont mind terminal programs and vim keybindings for everything you can use my mern stack version of larbs: https://github.com/AshMagill/mernrod

@MohamedSa3eed
Copy link

MohamedSa3eed commented May 20, 2022

nerdtree always opens twice when pressing ctrl + n
and i don't know why

@shihongji
Copy link

I want the current line number to be displayed instead of "0" wherever the cursor is. What do I edit in my init.vim file? I want the relative lines up and down, but the current line must show the current line number

Have you done yet? Just type in set relativenumber number same line in the init.vim file

@tkdaj
Copy link

tkdaj commented Jun 15, 2022

nerdtree always opens twice when pressing ^n and i don't know why

@shihongji

I had this same issue. After checking for how to fix it, I found this SO answer: https://vi.stackexchange.com/questions/22881/nerdtreetoggle-always-opens-up-two-directory-windows-instead-of-one#:~:text=autocmd%20BufRead%20*%20call%20SyncTree()

Changing BufWrite to BufRead like that answer suggests worked for me.

Copy link

ghost commented Aug 2, 2022

There is a new problem for coc.nvim in 0.0.82 saying:

" coc.nvim has switched to custom popup menu from 0.0.82 you have to change key-mappings for , to make them work. see :h coc-completion-example "

@WorrapongT
Copy link

There is a new problem for coc.nvim in 0.0.82 saying:

" coc.nvim has switched to custom popup menu from 0.0.82 you have to change key-mappings for , to make them work. see :h coc-completion-example "

solution
https://www.reddit.com/r/neovim/comments/weydql/cocvim_switched_to_custom_popup_menu_how_to/

@Abuzkah
Copy link

Abuzkah commented Sep 19, 2022

[coc.nvim] "node" is not executable, checkout https://nodejs.org/en/download/
Am having this error message when i run Vim

@akshit2649
Copy link

[coc.nvim] "node" is not executable, checkout https://nodejs.org/en/download/
Am having this error message when i run Vim

I believe you need to have node installed on your computer, because if you copied the config files then coc automatically installs tsserver (which requires node), however if you don't want to install it then you can just remove 'coc-tsserver' from the config file.

@apah-dev
Copy link

  1. Plug.vim content

whenever i click on the download link it doesn't initiate a down. rather it takes me to the file itself on my browser

@apah-dev
Copy link

  1. ~/.local/share/nvim/site/autoload/plug.vim

i keep getting that directory doesn't exist when i try to copy the plug.vim file to the autoload folder
any help?

@matt-lvk
Copy link

matt-lvk commented Aug 3, 2023

I get following errors

line   59:
E492: Not an editor command: PrettierAsync
line  110:
E690: Missing "in" after :for
line  229:
E170: Missing :endfor
Press ENTER or type command to continue```

@jigmeloday
Copy link

hi i like it, well done thanks for sharing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment