Vimrc

Vimrc for Nvim

" Plugin Loading

call plug#begin('~/.vim/plugged')
    " Plugin
    Plug 'morhetz/gruvbox'
    Plug 'lifepillar/vim-gruvbox8'
    Plug 'vim-airline/vim-airline'
    Plug 'jszakmeister/vim-togglecursor'
    Plug 'jmcantrell/vim-virtualenv'
    Plug 'tpope/vim-commentary'
    " Plug 'scrooloose/nerdtree'
    Plug 'ryanoasis/vim-devicons'
    Plug 'sheerun/vim-polyglot'
    Plug 'vim-airline/vim-airline-themes'
    Plug 'ervandew/supertab'
    Plug 'w0rp/ale'
    Plug 'tpope/vim-surround'
    Plug 'tpope/vim-fugitive'
    Plug 'yggdroot/indentline'
    Plug 'kien/ctrlp.vim'
    Plug 'slim-template/vim-slim'
    Plug 'stylelint/stylelint'
    Plug 'bmatcuk/stylelint-lsp'
    Plug 'jeffkreeftmeijer/vim-numbertoggle'
    Plug 'codota/tabnine-nvim', { 'do': './dl_binaries.sh' }
    Plug 'nlknguyen/copy-cut-paste.vim'
    Plug 'itchyny/lightline.vim' "Highlights lines
    Plug 'joshdick/onedark.vim' "The One Dark Theme
    Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
    Plug 'junegunn/fzf.vim' "Fuzzy find plugin
    Plug 'junegunn/goyo.vim' "Removes Line numbers for focusing
    Plug 'mbbill/undotree' "Creates an undo tree
    Plug 'preservim/nerdtree' "File browser inside vim
    Plug 'godlygeek/tabular' "Auto formatting
    Plug 'plasticboy/vim-markdown' "Markdown syntax highlighting
    " Plug 'wakatime/vim-wakatime' "Wakatime tracker
    Plug 'ryanoasis/vim-devicons' "Cool icons for nerd tree
    Plug 'Xuyuanp/nerdtree-git-plugin' "nerd tree customization
    Plug '907th/vim-auto-save' "auto saves files as you edit
    Plug 'jdhao/better-escape.vim' "remaps esc key to jj
    Plug 'neoclide/coc.nvim', {'branch': 'release'} 
    Plug ''   
call plug#end()

" coc extensions
let g:coc_global_extensions = [
            \ 'coc-json',
            \ 'coc-tsserver',
            \ 'coc-html',
            \ 'coc-css',
            \ 'coc-prettier',
            \ 'coc-jedi',
            \ 'coc-docker',
            \ 'coc-zls',
            \ 'coc-rust-analyzer',
            \ 'coc-sql',
            \ 'coc-svelte',
            \ ]

let $NVIM_TUI_ENABLE_TRUE_COLOR=1

set termguicolors
let g:bargreybars_auto = 0

" 
colorscheme gruvbox
let g:gruvbox_termcolors=16

" Startup Settings
  syntax on
  let mapleader=" " "Maps Leader to space
  let NERDTreeShowHidden=1
  let g:auto_save = 1
  let g:auto_save_events = ["InsertLeave", "TextChanged"]
  let $FZF_DEFAULT_COMMAND = 'fdfind --type f --hidden --follow --exclude .git --ignore-file ~/.ignore'
  set mouse=a "Allows mouse usage inside vim. Great for noobs.
  set clipboard=unnamedplus "Remaps default copy paste to system clipboard
  set cursorline
  highlight CursorLine ctermbg=Yellow cterm=bold guibg=#2b2b2b
    set noerrorbells
  set splitbelow splitright
    set tabstop=2 softtabstop=2
    set shiftwidth=2
    set expandtab
    set smartindent
  set nofoldenable
    set nowrap
    set smartcase
    set noswapfile
    set nobackup
    set incsearch
    set history=5000
    set nocompatible
  set number relativenumber
  colorscheme onedark 
  set background=dark
  set termguicolors
    filetype plugin on
    set encoding=utf-8
    set wildmenu
    set wildmode=longest,list,full
    set laststatus=2
    if !has('gui_running')
      set t_Co=256
    endif
    autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
    set spell spelllang=en_us

" Plugin Shortcuts
    map <Leader>f :NERDTreeToggle<CR>
    map <C-\> :Goyo<CR>
  nnoremap <F5> :UndotreeToggle<CR> :UndotreeFocus<CR>
  nnoremap <C-f> :Files!<CR>
  nnoremap <Leader>l :Tabularize /
  let g:better_escape_shortcut = 'jj'
  let g:better_escape_interval = 250

" General Shortcuts
  nnoremap S :%s//g<Left><Left> 
  nmap <Leader>r :w<CR>:so %<CR>
  map <Leader>e $

" Persistent_undo
    set undodir=~/.vim/undodir"
    set undofile
    let g:undotree_WindowLayout = 2

" Tabedit keybinds
  nnoremap <Leader>1 1gt<CR>
  nnoremap <Leader>2 2gt<CR>
  nnoremap <Leader>3 3gt<CR>
  nnoremap <Leader>4 4gt<CR>
  nnoremap <Leader>5 5gt<CR>
  nnoremap <Leader>t :tabnew<CR>
  nnoremap <Leader>c :tabclose<CR>

" Markdown Edits
  let g:vim_markdown_autowrite = 1
  let g:vim_markdown_no_extensions_in_markdown = 1
  let g:vim_markdown_conceal = 0
  let g:vim_markdown_override_foldtext = 0
  let g:vim_markdown_folding_disabled = 1
  let g:vim_markdown_new_list_item_indent = 0

" Markdown auto format tables
inoremap <silent> <Bar>   <Bar><Esc>:call <SID>align()<CR>a

function! s:align()
  let p = '^\s*|\s.*\s|\s*$'
  if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
    let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
    let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
    Tabularize/|/l1
    normal! 0
    call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
  endif
endfunction

" transparent bg
autocmd vimenter * hi Normal guibg=NONE ctermbg=NONE

" Enter autocomplete coc 
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

Vimrc for Vim