Skip to content

Instantly share code, notes, and snippets.

@pertrai1
Last active April 21, 2022 18:15
Show Gist options
  • Save pertrai1/b0597d30140df35dd3547f525eda39d3 to your computer and use it in GitHub Desktop.
Save pertrai1/b0597d30140df35dd3547f525eda39d3 to your computer and use it in GitHub Desktop.
NVim Config
" https://github.com/ThePrimeagen/.dotfiles/blob/master/nvim/.config/nvim/init.vim
" https://github.com/garybernhardt/dotfiles/blob/main/.vimrc
" https://gist.github.com/benawad/b768f5a5bbd92c8baabd363b7e79786f
" https://github.com/moraisaugusto/another-dotfiles
" https://github.com/rafi/vim-config
" ctrl-0 = alt-back
" ctrl-i = alt-forward
"
call plug#begin()
Plug 'pangloss/vim-javascript'
Plug 'leafgarland/typescript-vim'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'liuchengxu/vista.vim'
" Plug 'preservim/nerdtree'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'nvim-lualine/lualine.nvim'
Plug 'jiangmiao/auto-pairs'
Plug 'airblade/vim-gitgutter'
Plug 'editorconfig/editorconfig-vim'
Plug 'Mofiqul/vscode.nvim'
Plug 'tomasiser/vim-code-dark'
Plug 'projekt0n/github-nvim-theme'
Plug 'kyazdani42/nvim-web-devicons'
Plug 'kyazdani42/nvim-tree.lua'
Plug 'folke/trouble.nvim'
Plug 'akinsho/bufferline.nvim'
Plug 'akinsho/toggleterm.nvim'
Plug 'mhinz/vim-startify'
" Plug 'github/copilot.vim'
Plug 'rbgrouleff/bclose.vim'
Plug 'francoiscabrol/ranger.vim'
Plug 'vim-test/vim-test'
Plug 'kdheepak/lazygit.nvim'
Plug 'tpope/vim-commentary'
call plug#end()
" set to auto read when file is changed outside
set autoread
au FocusGained,BufEnter * checktime
set autoindent
filetype plugin indent on
set smartindent
set expandtab
set shiftround
set shiftwidth=2
set softtabstop=2
set smarttab
set tabstop=2
set showtabline=2
set wildmode=longest,list
let mapleader=" "
nnoremap ; :
" Faster saving
nmap <leader>w :w!<CR>
" General
set hidden
set number
set encoding=utf-8
set linebreak
syntax on
set wrap
set clipboard=unnamed
set history=10000
set ruler
set backspace=eol,start,indent
set wildmenu
set ignorecase
set smartcase
set hlsearch
set incsearch
nnoremap <silent> <BS> :nohlsearch<CR>
set lazyredraw
set showmatch
set nobackup
set nowb
set noswapfile
set nowritebackup
" Misc. Key Mapping
inoremap jk <esc>
nnoremap <leader>pv :Ex<CR>
" Operate on display lines
" nnoremap k gk
" nnoremap gk k
" nnoremap j gj
" nnoremap gj j
" delete a word backwards
nnoremap dw vb"_d
" select all
nmap <C-a> gg<S-v>G
nmap <leader>pb :w% !pbcopy<CR>
" Colors
" let g:vscode_style="light"
" let g:vscode_italic_comment=1
" colorscheme vscode
" Example config in VimScript
" NOTE: Configuration needs to be set BEFORE loading the color scheme with `colorscheme` command
let g:github_function_style = "italic"
let g:github_sidebars = ["qf", "vista_kind", "terminal", "packer"]
" Change the "hint" color to the "orange" color, and make the "error" color bright red
let g:github_colors = {
\ 'hint': 'orange',
\ 'error': '#ff0000'
\ }
colorscheme github_dark
" colorscheme codedark
set termguicolors
lua << EOF
require("bufferline").setup {
options = {
diagnostics = "coc",
numbers = "buffer_id",
show_tab_indicators = true
}
}
require("nvim-tree").setup{
diagnostics = { enable = true },
tab_open = true,
auto_close = false,
update_cwd = true,
update_focused_file = {
enable = true,
update_cwd = true,
ignore_list = {}
},
disable_window_picker = 0,
view = {
width = 50,
side = "left"
},
git = {
enable = true,
ignore = false,
timeout = 500
},
actions = {
open_file = {
quit_on_open = true
}
}
}
require("nvim-web-devicons").setup {}
require("lualine").setup {}
require("toggleterm").setup {
direction = 'float'
}
require("trouble").setup {}
EOF
" Visual mode related
" Visual mode pressing * or # searches for the current selection
vnoremap <silent> * :<C-u>call VisualSelection('', '')<CR>/<C-R>=@/<CR><CR>
vnoremap <silent> # :<C-u>call VisualSelection('', '')<CR>?<C-R>=@/<CR><CR>
" Give more space for displaying messages
set cmdheight=2
" Longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays
set updatetime=300
set nocompatible
set showcmd
set showmode
set ai
set si
set laststatus=2
let g:coc_global_extensions = [
\ 'coc-tsserver'
\ ]
if isdirectory('./node_modules') && isdirectory('./node_modules/prettier')
let g:coc_global_extensions += ['coc-prettier']
endif
if isdirectory('./node_modules') && isdirectory('./node_modules/eslint')
let g:coc_global_extensions += ['coc-eslint']
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>" :
\ 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
" 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>"
nnoremap <silent> K :call CocAction('doHover')<CR>
nmap <F2> <Plug>(coc-rename)
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gr <Plug>(coc-references)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
nnoremap <silent> <leader>d :<C-u>CocList diagnostics<CR>
nnoremap <silent> <space>s :<C-u>CocList -I symbols<CR>
nnoremap <silent> <space>o :<C-u>CocList outline<CR>
" nnoremap <silent> <leader>e :<C-u>CocList extensions<CR>
nmap <leader>do <Plug>(coc-codeaction)
nmap <leader>rn <Plug>(coc-rename)
" use <c-space> to trigger completion.
if has('nvim')
inoremap <silent><expr> <c-space> coc#refresh()
else
inoremap <silent><expr> <c-@> coc#refresh()
endif
function! ShowDocIfNoDiagnostic(timer_id)
if (coc#float#has_float() == 0 && CocHasProvider('hover') == 1)
silent call CocActionAsync('doHover')
endif
endfunction
function! s:show_hover_doc()
call timer_start(500, 'ShowDocIfNoDiagnostic')
endfunction
autocmd CursorHoldI * :call <SID>show_hover_doc()
autocmd CursorHold * :call <SID>show_hover_doc()
nnoremap <leader>e <cmd>CocCommand explorer<CR>
" More Coc
" grep word under cursor
command! -nargs=+ -complete=custom,s:GrepArgs Rg exe 'CocList grep '.<q-args>
function! s:GrepArgs(...)
let list = ['-S', '-smartcase', '-i', '-ignorecase', '-w', '-word',
\ '-e', '-regex', '-u', '-skip-vcs-ignores', '-t', '-extension']
return join(list', "\n")
endfunction
" Keymapping for grep word under cursor with interactive mode
nnoremap <silent> <leader>cf :exe 'CocList -I --input='.expand('<cword>').' grep'<CR>
" Trouble
" nnoremap <leader>xx <cmd>TroubleToggle<CR>
" nnoremap <leader>xw <cmd>TroubleToggle workspace_diagnostics<CR>
" nnoremap <leader>xd <cmd>TroubleToggle document_diagnostics<CR>
" nnoremap <leader>xq <cmd>TroubleToggle quickfix<CR>
" nnoremap <leader>xl <cmd>TroubleToggle loclist<CR>
" nnoremap gR <cmd>TroubleToggle lsp_references<CR>
nmap <silent> gL <cmd>call coc#rpc#request('fillDiagnostics', [bufnr('%')])<CR><cmd>Trouble loclist<CR>
" Vista
nnoremap <silent> <leader>v :Vista!!<CR>
" Buffers
" close all buffers
nnoremap <silent> <leader>ba :bufdo bd<CR>
nnoremap <silent> <leader>bl :bnext<CR>
nnoremap <silent> <S-l> :bnext<CR>
nnoremap <silent> <leader>bh :bprevious<CR>
nnoremap <silent> <S-h> :bprevious<CR>
nnoremap <silent> <leader>b :bw<CR>
" Return to last edit position when opening files (You want this!)
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
" Switch CWD to the directory of current buffer
map <leader>cd :cd %:p:h<cr>:pwd<cr>
" NERDTree
" let NERDTreeShowBookmarks=1
" let NERDTreeChDirMode=0
" let NERDTreeShowHidden=1
" let NERDTreeQuitOnOpen=1
" let NERDTreeIgnore = []
" let NERDTreeWinSize=70
" nnoremap <leader>n :NERDTreeFocus<CR>
" nnoremap <C-n> :NERDTree<CR>
" nnoremap <C-t> :NERDTreeToggle<CR>
" nnoremap <C-f> :NERDTreeFind<CR>
" NvimTree
" https://github.com/kyazdani42/nvim-tree.lua
nnoremap <silent> <C-n> :NvimTreeToggle<CR>
nnoremap <silent> <leader>n :NvimTreeFocus<CR>
nnoremap <silent> <C-f> :NvimTreeFindFileToggle<CR>
" autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif
" Close the tab if NERDTree is the only window remaining in it.
" autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
" FZF
nnoremap <C-p> :GFiles<CR>
nnoremap <silent> <leader><leader> :GFiles <C-R>=expand('%:h')<CR><CR>
nnoremap <silent> <leader>t :History<CR>
nnoremap <silent> <leader>bu :Buffers<CR>
nnoremap <silent> <leader>rg :RG<CR>
nnoremap <silent> <leader><enter> :Buffers<CR>
nnoremap <silent> <leader>l :Lines<CR>
function! RipgrepFzf(query, fullscreen)
let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case -- %s || true'
let initial_command = printf(command_fmt, shellescape(a:query))
let reload_command = printf(command_fmt, '{q}')
let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
endfunction
command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0)
" Window Mappings
nnoremap <leader>wj <C-w><C-j>
nnoremap <leader>wk <C-w><C-k>
nnoremap <leader>wl <C-w><C-l>
nnoremap <leader>wh <C-w><C-h>
" Keeping it centered
nnoremap n nzzzv
nnoremap N Nzzzv
nnoremap J mzJ`z
" Undo break points <= really helpful
" inoremap , ,<C-g>u
" inoremap . .<C-g>u
" inoremap ! !<C-g>u
" inoremap ? ?<C-g>u
" Airline
" let g:airline#extensions#bufferline#enabled=1
" let g:airline#extensions#brance#enabled=1
" let g:airline#extensions#tabline#enabled=1
" let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
" let g:airline_theme='papercolor'
" Bufferline
nnoremap <silent> gb :BufferLinePick<CR>
" Tabs
nnoremap <leader>tn :tabnew<CR>
nnoremap <leader>to :tabonly<CR>
nnoremap <leader>tc :tabclose<CR>
nnoremap <leader>tm :tabmove<CR>
nnoremap <leader>tl :tabnext<CR>
nnoremap <leader>th :tabprevious<CR>
" Moving lines
vmap <C-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <C-k> :m'<-2<cr>`>my`<mzgv`yo`z
inoremap <C-j> <esc>:m .+1<CR>==
inoremap <C-k> <esc>:m .-2<CR>==
nnoremap <C-k> :m .-2<CR>==
nnoremap <C-j> :m .+1<CR>==
" Git
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)
" CSS/SCSS
autocmd FileType scss setl iskeyword+=@~@
" Disable arrow movement, resize windows
nnoremap <Up> <cmd>resize +1<CR>
nnoremap <Down> <cmd>resize -1<CR>
nnoremap <Right> <cmd>vertical resize +1<CR>
nnoremap <Left> <cmd>vertical resize -1<CR>
" Toggle fold
" nnoremap <CR> za
" Easier line-wise movement
nnoremap gh g^
nnoremap gl g$
" Re-select blocks after indenting in visual/select mode
xnoremap < <gv
xnoremap > >gv|
" Use tab for indenting in visual/select mode
xnoremap <Tab> >gv|
xnoremap <S-Tab> <gv
" Repeat last f, t, F or T
nnoremap \ ;
" Ranger
nmap <leader>rf :RangerWorkingDirectory<CR>
nmap <leader>rw :RangerWorkingDirectoryNewTab<CR>
" Auto-resize splits when Vim gets resized.
autocmd VimResized * wincmd =
nmap <silent> t<C-n> :TestNearest<CR>
nmap <silent> t<C-f> :TestFile<CR>
nmap <silent> t<C-a> :TestSuite<CR>
nmap <silent> t<C-l> :TestLast<CR>
nmap <silent> t<C-v> :TestVisit<CR>
let g:test#javascript#runner = 'jest'
" CoPilot
" imap <silent><script><expr> <C-j> copilot#Accept("\<CR>")
" let g:copilot_no_tab_map = v:true
nmap <silent> lg :LazyGit<CR>
xmap / <Plug>Commentary
@rsimpson2
Copy link

Update to this:

" https://github.com/ThePrimeagen/.dotfiles/blob/master/nvim/.config/nvim/init.vim
" https://github.com/garybernhardt/dotfiles/blob/main/.vimrc
" https://gist.github.com/benawad/b768f5a5bbd92c8baabd363b7e79786f
" https://github.com/moraisaugusto/another-dotfiles
" https://github.com/rafi/vim-config

" ctrl-0 = alt-back
" ctrl-i = alt-forward
"
call plug#begin()
Plug 'pangloss/vim-javascript'
Plug 'leafgarland/typescript-vim'

Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'liuchengxu/vista.vim'
" Plug 'preservim/nerdtree'

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

Plug 'nvim-lualine/lualine.nvim'

Plug 'jiangmiao/auto-pairs'

Plug 'airblade/vim-gitgutter'

Plug 'editorconfig/editorconfig-vim'

Plug 'Mofiqul/vscode.nvim'
Plug 'tomasiser/vim-code-dark'

Plug 'kyazdani42/nvim-web-devicons'
Plug 'kyazdani42/nvim-tree.lua'
Plug 'folke/trouble.nvim'

Plug 'akinsho/bufferline.nvim'
Plug 'akinsho/toggleterm.nvim'

Plug 'mhinz/vim-startify'

" Plug 'github/copilot.vim'

Plug 'rbgrouleff/bclose.vim'
Plug 'francoiscabrol/ranger.vim'

Plug 'vim-test/vim-test'

Plug 'kdheepak/lazygit.nvim'

Plug 'tpope/vim-commentary'
call plug#end()

" set to auto read when file is changed outside
set autoread
au FocusGained,BufEnter * checktime

set autoindent
filetype plugin indent on
set smartindent
set expandtab
set shiftround
set shiftwidth=2
set softtabstop=2
set smarttab
set tabstop=2
set showtabline=2

set wildmode=longest,list

let mapleader=" "
nnoremap ; :

" Faster saving
nmap <leader>w :w!<CR>

" General
set hidden
set number

set encoding=utf-8
set linebreak

syntax on

set wrap
set clipboard=unnamed
set history=10000

set ruler
set backspace=eol,start,indent
set wildmenu

set ignorecase
set smartcase
set hlsearch
set incsearch

nnoremap <silent> <BS> :nohlsearch<CR>

set lazyredraw

set showmatch

set nobackup
set nowb
set noswapfile
set nowritebackup

" Misc. Key Mapping
inoremap jk <esc>
nnoremap <leader>pv :Ex<CR>

" Operate on display lines
" nnoremap k gk
" nnoremap gk k
" nnoremap j gj
" nnoremap gj j

" delete a word backwards
nnoremap dw vb"_d
" select all
nmap <C-a> gg<S-v>G

" Colors
" let g:vscode_style="light"
" let g:vscode_italic_comment=1
" colorscheme vscode
colorscheme codedark
set termguicolors

lua << EOF
require("bufferline").setup {
  options = {
    diagnostics = "coc",
    numbers = "buffer_id",
    show_tab_indicators = true
  }
}
require("nvim-tree").setup{
  update_cwd = true,
  update_focused_file = {
    enable = true,
    update_cwd = true,
    ignore_list = {}
  },
  disable_window_picker = 0,
  view = {
    width = 50,
    side = "left"
  },
  git = {
    ignore = false
  }
}
require("nvim-web-devicons").setup {}
require("lualine").setup {}
require("toggleterm").setup {
  direction = 'float'
}
require("trouble").setup {}
EOF

" Visual mode related
" Visual mode pressing * or # searches for the current selection
vnoremap <silent> * :<C-u>call VisualSelection('', '')<CR>/<C-R>=@/<CR><CR>
vnoremap <silent> # :<C-u>call VisualSelection('', '')<CR>?<C-R>=@/<CR><CR>

" Give more space for displaying messages
set cmdheight=2

" Longer updatetime (default is 4000 ms = 4 s) leads to noticeable
" delays
set updatetime=300
set nocompatible

set showcmd
set showmode

set ai
set si

set laststatus=2

let g:coc_global_extensions = [
  \ 'coc-tsserver'
  \ ]

if isdirectory('./node_modules') && isdirectory('./node_modules/prettier')
  let g:coc_global_extensions += ['coc-prettier']
endif

if isdirectory('./node_modules') && isdirectory('./node_modules/eslint')
  let g:coc_global_extensions += ['coc-eslint']
endif

nnoremap <silent> K :call CocAction('doHover')<CR>

nmap <F2> <Plug>(coc-rename)

nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gr <Plug>(coc-references)
nmap <silent> gi <Plug>(coc-implementation)

nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

nnoremap <silent> <leader>d :<C-u>CocList diagnostics<CR>
nnoremap <silent> <space>s :<C-u>CocList -I symbols<CR>
nnoremap <silent> <space>o :<C-u>CocList outline<CR>
" nnoremap <silent> <leader>e :<C-u>CocList extensions<CR>

nmap <leader>do <Plug>(coc-codeaction)
nmap <leader>rn <Plug>(coc-rename)

" use <c-space> to trigger completion.
if has('nvim')
  inoremap <silent><expr> <c-space> coc#refresh()
else
  inoremap <silent><expr> <c-@> coc#refresh()
endif

function! ShowDocIfNoDiagnostic(timer_id)
  if (coc#float#has_float() == 0 && CocHasProvider('hover') == 1)
    silent call CocActionAsync('doHover')
  endif
endfunction

function! s:show_hover_doc()
  call timer_start(500, 'ShowDocIfNoDiagnostic')
endfunction

autocmd CursorHoldI * :call <SID>show_hover_doc()
autocmd CursorHold * :call <SID>show_hover_doc()

nnoremap <leader>e <cmd>CocCommand explorer<CR>

" Trouble
nnoremap <leader>xx <cmd>TroubleToggle<CR>
nnoremap <leader>xw <cmd>TroubleToggle workspace_diagnostics<CR>
nnoremap <leader>xd <cmd>TroubleToggle document_diagnostics<CR>
nnoremap <leader>xq <cmd>TroubleToggle quickfix<CR>
nnoremap <leader>xl <cmd>TroubleToggle loclist<CR>
nnoremap gR <cmd>TroubleToggle lsp_references<CR>

" Vista
nnoremap <silent> <leader>v :Vista!!<CR>

" Buffers
" close all buffers
nnoremap <silent> <leader>ba :bufdo bd<CR>
nnoremap <silent> <leader>bl :bnext<CR>
nnoremap <silent> <S-l> :bnext<CR>
nnoremap <silent> <leader>bh :bprevious<CR>
nnoremap <silent> <S-h> :bprevious<CR>
nnoremap <silent> <leader>b :bw<CR>

" Return to last edit position when opening files (You want this!)
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif

" Switch CWD to the directory of current buffer
map <leader>cd :cd %:p:h<cr>:pwd<cr>

" NERDTree
" let NERDTreeShowBookmarks=1
" let NERDTreeChDirMode=0
" let NERDTreeShowHidden=1
" let NERDTreeQuitOnOpen=1
" let NERDTreeIgnore = []
" let NERDTreeWinSize=70
" nnoremap <leader>n :NERDTreeFocus<CR>
" nnoremap <C-n> :NERDTree<CR>
" nnoremap <C-t> :NERDTreeToggle<CR>
" nnoremap <C-f> :NERDTreeFind<CR>

" NvimTree
" https://github.com/kyazdani42/nvim-tree.lua
nnoremap <C-n> :NvimTreeToggle<CR>
nnoremap <leader>n :NvimTreeFocus<CR>
nnoremap <C-f> :NvimTreeFindFileToggle<CR>
" autocmd BufEnter * ++nested if winnr('$') == 1 && bufname() == 'NvimTree_' . tabpagenr() | quit | endif

" Close the tab if NERDTree is the only window remaining in it.
" autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif

" FZF
nnoremap <C-p> :GFiles<CR>
nnoremap <silent> <leader><leader> :GFiles <C-R>=expand('%:h')<CR><CR>
nnoremap <silent> <leader>t :History<CR>
nnoremap <silent> <leader>bu :Buffers<CR>
nnoremap <silent> <leader>rg :RG<CR>
nnoremap <silent> <leader><enter> :Buffers<CR>
nnoremap <silent> <leader>l :Lines<CR>

function! RipgrepFzf(query, fullscreen)
  let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case -- %s || true'
  let initial_command = printf(command_fmt, shellescape(a:query))
  let reload_command = printf(command_fmt, '{q}')
  let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}
  call fzf#vim#grep(initial_command, 1, fzf#vim#with_preview(spec), a:fullscreen)
endfunction

command! -nargs=* -bang RG call RipgrepFzf(<q-args>, <bang>0)

" Window Mappings
nnoremap <leader>wj <C-w><C-j>
nnoremap <leader>wk <C-w><C-k>
nnoremap <leader>wl <C-w><C-l>
nnoremap <leader>wh <C-w><C-h>

" Keeping it centered
nnoremap n nzzzv
nnoremap N Nzzzv
nnoremap J mzJ`z

" Undo break points <= really helpful
" inoremap , ,<C-g>u
" inoremap . .<C-g>u
" inoremap ! !<C-g>u
" inoremap ? ?<C-g>u

" Airline
" let g:airline#extensions#bufferline#enabled=1
" let g:airline#extensions#brance#enabled=1
" let g:airline#extensions#tabline#enabled=1
" let g:airline#extensions#tabline#formatter = 'unique_tail_improved'
" let g:airline_theme='papercolor'

" Bufferline
nnoremap <silent> gb :BufferLinePick<CR>

" Tabs
nnoremap <leader>tn :tabnew<CR>
nnoremap <leader>to :tabonly<CR>
nnoremap <leader>tc :tabclose<CR>
nnoremap <leader>tm :tabmove<CR>
nnoremap <leader>tl :tabnext<CR>
nnoremap <leader>th :tabprevious<CR>

" Moving lines
vmap <C-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <C-k> :m'<-2<cr>`>my`<mzgv`yo`z
inoremap <C-j> <esc>:m .+1<CR>==
inoremap <C-k> <esc>:m .-2<CR>==
nnoremap <C-k> :m .-2<CR>==
nnoremap <C-j> :m .+1<CR>==

" Git
nmap ]h <Plug>(GitGutterNextHunk)
nmap [h <Plug>(GitGutterPrevHunk)

" CSS/SCSS
autocmd FileType scss setl iskeyword+=@~@

" More Coc
" grep word under cursor
command! -nargs=+ -complete=custom,s:GrepArgs Rg exe 'CocList grep '.<q-args>

function! s:GrepArgs(...)
  let list = ['-S', '-smartcase', '-i', '-ignorecase', '-w', '-word',
          \ '-e', '-regex', '-u', '-skip-vcs-ignores', '-t', '-extension']
  return join(list', "\n")
endfunction

" Keymapping for grep word under cursor with interactive mode
nnoremap <silent> <leader>cf :exe 'CocList -I --input='.expand('<cword>').' grep'<CR>

" Disable arrow movement, resize windows
nnoremap <Up> <cmd>resize +1<CR>
nnoremap <Down> <cmd>resize -1<CR>
nnoremap <Right> <cmd>vertical resize +1<CR>
nnoremap <Left> <cmd>vertical resize -1<CR>

" Toggle fold
" nnoremap <CR> za

" Easier line-wise movement
nnoremap gh g^
nnoremap gl g$

" Re-select blocks after indenting in visual/select mode
xnoremap < <gv
xnoremap > >gv|

" Use tab for indenting in visual/select mode
xnoremap <Tab> >gv|
xnoremap <S-Tab> <gv

" Repeat last f, t, F or T
nnoremap \ ;

" Ranger
nmap <leader>rf :RangerWorkingDirectory<CR>
nmap <leader>rw :RangerWorkingDirectoryNewTab<CR>

" Auto-resize splits when Vim gets resized.
autocmd VimResized * wincmd =

nmap <silent> t<C-n> :TestNearest<CR>
nmap <silent> t<C-f> :TestFile<CR>
nmap <silent> t<C-a> :TestSuite<CR>
nmap <silent> t<C-l> :TestLast<CR>
nmap <silent> t<C-v> :TestVisit<CR>

let g:test#javascript#runner = 'jest'

" CoPilot
" imap <silent><script><expr> <C-j> copilot#Accept("\<CR>")
" let g:copilot_no_tab_map = v:true

nmap <silent> lg :LazyGit<CR>

xmap / <Plug>Commentary
``

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