Skip to content

Instantly share code, notes, and snippets.

@jdah
Created June 14, 2021 11:54
Show Gist options
  • Save jdah/4b4d98c2ced36eb07b017c4ae2c94bab to your computer and use it in GitHub Desktop.
Save jdah/4b4d98c2ced36eb07b017c4ae2c94bab to your computer and use it in GitHub Desktop.
jdh's NeoVim .vimrc
call plug#begin()
Plug 'drewtempelmeyer/palenight.vim'
Plug 'vim-airline/vim-airline'
Plug 'wlangstroth/vim-racket'
Plug 'sheerun/vim-polyglot'
Plug 'rust-lang/rust.vim'
Plug 'preservim/tagbar'
Plug 'universal-ctags/ctags'
Plug 'luochen1990/rainbow'
Plug 'vim-syntastic/syntastic'
Plug 'itchyny/lightline.vim'
Plug 'tpope/vim-surround'
Plug 'neoclide/coc.nvim', { 'branch': 'release' }
Plug 'tommcdo/vim-lion'
Plug 'Shirk/vim-gas'
Plug 'ntpeters/vim-better-whitespace'
call plug#end()
" Get syntax files from config folder
set runtimepath+=~/.config/nvim/syntax
" Theme
colorscheme palenight
" Disable C-z from job-controlling neovim
nnoremap <c-z> <nop>
" Remap C-c to <esc>
nmap <c-c> <esc>
imap <c-c> <esc>
vmap <c-c> <esc>
omap <c-c> <esc>
" Syntax highlighting
syntax on
" Position in code
set number
set ruler
" Don't make noise
set visualbell
" default file encoding
set encoding=utf-8
" Line wrap
set wrap
" Function to set tab width to n spaces
function! SetTab(n)
let &l:tabstop=a:n
let &l:softtabstop=a:n
let &l:shiftwidth=a:n
set expandtab
endfunction
command! -nargs=1 SetTab call SetTab(<f-args>)
" Function to trim extra whitespace in whole file
function! Trim()
let l:save = winsaveview()
keeppatterns %s/\s\+$//e
call winrestview(l:save)
endfun
command! -nargs=0 Trim call Trim()
set laststatus=2
" Highlight search results
set hlsearch
set incsearch
" auto + smart indent for code
set autoindent
set smartindent
set t_Co=256
" ASM == JDH8
augroup jdh8_ft
au!
autocmd BufNewFile,BufRead *.asm set filetype=jdh8
augroup END
" SQL++ == SQL
augroup sqlpp_ft
au!
autocmd BufNewFile,BufRead *.sqlp set syntax=sql
augroup END
" .S == gas
augroup gas_ft
au!
autocmd BufNewFile,BufRead *.S set syntax=gas
augroup END
" JFlex syntax highlighting
augroup jfft
au BufRead,BufNewFile *.flex,*.jflex set filetype=jflex
augroup END
au Syntax jflex so ~/.vim/syntax/jflex.vim
" Mouse support
set mouse=a
" Map F8 to Tagbar
nmap <F8> :TagbarToggle<CR>
" CTags config
let g:Tlist_Ctags_Cmd='/usr/local/Cellar/ctags/5.8_1/bin/ctags'
" disable backup files
set nobackup
set nowritebackup
" no delays!
set updatetime=300
set cmdheight=1
set shortmess+=c
set signcolumn=yes
" 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.
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<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>a :<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>
" Find symbol of current document.
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols.
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<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>
" Resume latest coc list.
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>
" add cocstatus into lightline
let g:lightline = {
\ 'colorscheme': 'wombat',
\ 'active': {
\ 'left': [ [ 'mode', 'paste' ],
\ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ]
\ },
\ 'component_function': {
\ 'cocstatus': 'coc#status'
\ },
\ }
autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()
@o0r
Copy link

o0r commented Jun 26, 2021

E185: Cannot find color scheme 'palenight' any help?

@KittyBorgX
Copy link

@w6q did u do :PlugInstall after starting nvim ??

Copy link

ghost commented Jun 27, 2021

E185: Cannot find color scheme 'palenight' any help?

Run the PlugInstall command in VIM.

@o0r
Copy link

o0r commented Jun 27, 2021

@w6q did u do :PlugInstall after starting nvim ??

yes sorry forgot that that fixed it thanks for the help

@o0r
Copy link

o0r commented Jun 27, 2021

E185: Cannot find color scheme 'palenight' any help?

Run the PlugInstall command in VIM.

also thanks

Copy link

ghost commented Jun 27, 2021

E185: Cannot find color scheme 'palenight' any help?

Run the PlugInstall command in VIM.

also thanks

No problem.

@sebaju
Copy link

sebaju commented Jul 5, 2021

How to install on windows?

you dont

Copy link

ghost commented Jul 6, 2021

How to install on windows?

you dont

You can install it on Windows too. (I did not try but VIM dot files on Windows.)

@arydevy
Copy link

arydevy commented Jul 20, 2021

is this vimplug?

Copy link

ghost commented Jul 20, 2021

Yes.

@AfvanMoopen
Copy link

Nice

Copy link

ghost commented Aug 29, 2021

btw, i use emacs

Copy link

ghost commented Aug 30, 2021

btw, i use emacs

Emacs TUI is hard to customize but Emacs GUI is horrible.

Copy link

ghost commented Sep 5, 2021

Emacs TUI is hard to customize but Emacs GUI is horrible.

nah check this, https://github.com/hlissner/doom-emacs

Copy link

ghost commented Sep 5, 2021

Emacs TUI is hard to customize but Emacs GUI is horrible.

nah check this, https://github.com/hlissner/doom-emacs

Well I seriously forgot how to use Emacs.

@JacobNoahGlik
Copy link

Piracy 😲

But fr ... crazy stuff, good job!

@marvhus
Copy link

marvhus commented Jan 16, 2022

Nice. Yoink

@FormalSnake
Copy link

How to install on macOS m1?

@laxerrrr
Copy link

If you're getting major slowdowns on save, comment out line 10, Syntastic was causing me major slowdowns.

@PizzaRules668
Copy link

How do you install this (Arch)

@heisenbirb
Copy link

Thank you Jdh for putting this up! Saved me hours of nvim config!

@radstevee
Copy link

How do you install this (Arch)

install vim-plug and vim via pacman, copy this in your .vimrc, open vim and run :PlugInstall

@gabrieldechichi
Copy link

Question: Anyone knows how to setup a syntax color similar to what we see on @jdah videos? Right now mine looks like this with an exact copy of this vimrc

image

@Pixfri
Copy link

Pixfri commented Jun 8, 2022

E185: Cannot find color scheme 'palenight' any help?

Run the PlugInstall command in VIM.

this command doesn't work on my neovim install: "E492: Not an editor command: PlugInstall"

Copy link

ghost commented Jun 9, 2022

E185: Cannot find color scheme 'palenight' any help?

Run the PlugInstall command in VIM.

this command doesn't work on my neovim install: "E492: Not an editor command: PlugInstall"

Do you have vim-plug installed?

@MGlolenstine
Copy link

Question: Anyone knows how to setup a syntax color similar to what we see on @jdah videos? Right now mine looks like this with an exact copy of this vimrc

image

@gabrieldechichi change the theme to gruvbox.

@Piras314
Copy link

Piras314 commented Jun 13, 2022

Hi, I started using neovim a few days ago and started using this config today. I don't know how to open up the search menu that he uses in his videos, in my code I get red highlights on inline curly braces and the bottom bar is extremely cluttered. Any help would be appreciated. Be sure to @CMDR-Piboy314 if you have any idea.
image

@marvhus
Copy link

marvhus commented Jun 13, 2022

@CMDR-Piboy314
The one he has in his videos is a diferent config... for some reason he hasn't updated his gist.
I think he is using gruvbox, and to se some other stuff you can see the video ThePrimeagen made on configuring your vimrc.

@marvhus
Copy link

marvhus commented Jul 1, 2022

when are you going to update this config?

@n-hebert
Copy link

n-hebert commented Jul 4, 2022

Latest updates are over here: https://github.com/jdah/dotfiles

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