|
" ~/.vimrc - Vim configuration |
|
" Last updated: 2023-03-14 |
|
" Description: |
|
" Personal Vim configuration focused on minimalism. |
|
" No plugins used. Uses built-in commands and external tools (grep, find, ctags). |
|
" For JS/TS development with fast file navigation, search, and function jumping. |
|
" |
|
" Notes: |
|
" - Use :e **/filename<Tab> to find files |
|
" - Use :vimgrep or :grep to search across files |
|
" - Use buffers (:bnext/:bprev) or tabs (:tabnew) for file navigation |
|
" - Use ctags + Ctrl-] / Ctrl-T to jump between functions |
|
|
|
colorscheme darkblue |
|
syntax on |
|
set relativenumber |
|
set encoding=UTF-8 |
|
set smarttab |
|
set smartindent |
|
set tabstop=4 softtabstop=4 |
|
set shiftwidth=4 |
|
set expandtab |
|
set re=0 |
|
set nowrap |
|
set noswapfile |
|
set scrolloff=8 |
|
set guicursor= |
|
set ignorecase |
|
set smartcase |
|
set incsearch |
|
set hlsearch |
|
set path+=** |
|
set wildmenu |
|
set wildignore+=*/node_modules/*,*.pyc,*.o |
|
set grepprg=grep\ -nH\ $* |
|
set mouse=a |
|
set nocompatible |
|
filetype plugin indent on |
|
set hidden |
|
set nowrap |
|
set number |
|
set ruler |
|
set showcmd |
|
set splitright |
|
set splitbelow |
|
set tags=./tags,tags; |
|
set tagstack |
|
set tagrelative |
|
set path+=** |
|
set suffixesadd+=.c,.h,.cpp,.hpp,.cc,.hh,.py,.js,.ts,.tsx,.jsx,.go,.rs,.java |
|
set wildignore+=*/.git/*,*/node_modules/*,*/dist/*,*/build/*,*/target/*,*.o,*.a,*.so,*.class |
|
if executable('rg') |
|
set grepprg=rg\ --vimgrep\ --smart-case\ --hidden |
|
set grepformat=%f:%l:%c:%m,%f:%l:%m |
|
endif |
|
|
|
command! -nargs=+ Grep silent grep! <args> | copen |
|
command! -nargs=+ LGrep silent lgrep! <args> | lopen |
|
command! COpen copen |
|
command! CClose cclose |
|
command! LOpen lopen |
|
command! LClose lclose |
|
command! MakeTags !ctags -R . |
|
let mapleader=" " |
|
nnoremap <leader>jd <C-]> |
|
nnoremap <leader>jb <C-t> |
|
nnoremap <leader>js g] |
|
nnoremap <leader>jv <C-w>] |
|
nnoremap <leader>jp :ptag <C-r><C-w><CR> |
|
nnoremap <leader>fw :Grep <C-r><C-w><CR> |
|
nnoremap <leader>fv :execute 'vimgrep /' . expand('<cword>') . '/gj **/*' <bar> copen<CR> |
|
nnoremap ]q :cnext<CR>zz |
|
nnoremap [q :cprev<CR>zz |
|
nnoremap ]Q :cnewer<CR> |
|
nnoremap [Q :colder<CR> |
|
nnoremap <leader>co :copen<CR> |
|
nnoremap <leader>cc :cclose<CR> |
|
nnoremap ]l :lnext<CR>zz |
|
nnoremap [l :lprev<CR>zz |
|
nnoremap <leader>lo :lopen<CR> |
|
nnoremap <leader>lc :lclose<CR> |
|
nnoremap gf gf |
|
nnoremap <leader>ff :find <C-r><C-w><CR> |
|
nnoremap <leader>ii [I |
|
nnoremap <leader>id [D |
|
nnoremap <leader>h :nohlsearch<CR> |
|
augroup my_quickfix_maps |
|
autocmd! |
|
autocmd FileType qf nnoremap <buffer> q :cclose<CR> |
|
autocmd FileType qf nnoremap <buffer> J :cnext<CR>zz<C-w>w |
|
autocmd FileType qf nnoremap <buffer> K :cprev<CR>zz<C-w>w |
|
augroup END |
Vim 8.2 Quick Navigation Cheatsheet
Tags
CTRL-]CTRL-T:tag Name:tjump Name:tselect Nameg]:tnext:tprevious:tagsCTRL-W ]:ptag NameSearch
/pattern?patternnN*#g*g#:nohlsearchProject search
:vimgrep /pattern/gj **/*:grep pattern -r .:copen:cclose:cnext:cprev:cfirst:clast:cwindow:colder:cnewerLocation list
:lvimgrep /pattern/gj **/*:lgrep pattern -r .:lopen:lclose:lnext:lprevFile and include lookup
gf:find name'path'.[I[CTRL-I[D[CTRL-D:checkpathTag setup
ctags -R .set tags=./tags,tags;set tagstackset tagrelativeset path+=**:findandgf.