Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
" 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>
@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

cybercoder-naj commented Aug 14, 2021

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

raihanadf commented Sep 24, 2021

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

devilkiller-ag commented Nov 10, 2021

Where to put this file??

@raihanadf
Copy link

raihanadf commented Nov 10, 2021

Where to put this file??

~/.config/nvim/here

@devilkiller-ag
Copy link

devilkiller-ag commented Nov 10, 2021

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…

@kraud0003
Copy link

kraud0003 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.

@AnnoGooG
Copy link

AnnoGooG commented Dec 26, 2021

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

@butterfly1924
Copy link

butterfly1924 commented May 5, 2022

I want a one step setup or a line of bash

@AshMagill
Copy link

AshMagill commented May 19, 2022

@butterfly1924 what os you on?

@AshMagill
Copy link

AshMagill commented May 19, 2022

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

Shihongji commented May 26, 2022

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.

@DeadlyParasite
Copy link

DeadlyParasite 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

WorrapongT commented Aug 13, 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 "

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

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