Skip to content

Instantly share code, notes, and snippets.

@Tracnac
Last active April 21, 2023 09:35
Show Gist options
  • Save Tracnac/3d76f37d7e608ea561bcbe963ac36936 to your computer and use it in GitHub Desktop.
Save Tracnac/3d76f37d7e608ea561bcbe963ac36936 to your computer and use it in GitHub Desktop.
VIM minimal

Sane default for vim

" Reset to default
set all&
set nocompatible
if exists('g:loaded_vimrc')
finish
else
let g:loaded_vimrc = 'yes'
endif
let mapleader=" "
let s:dir = has('win32') ? '$APPDATA/Vim' : '$HOME/.vim'
let &backupdir = expand(s:dir) . '/backup//'
let &undodir = expand(s:dir) . '/undo//'
let &dir = expand(s:dir) . '/swap//'
if !isdirectory(expand(s:dir))
call system("mkdir -p " . expand(s:dir) . "/{backup,undo,swap}")
end
" Plugins prefs
" Airline
let g:airline#extensions#tabline#enabled=1
let g:airline_powerline_fonts=0
let g:airline_theme='bubblegum'
" Tmuxline
let g:tmuxline_powerline_separators=0
" RainBow
let g:rainbow_active=1
" Yankring
let g:yankring_history_dir = '~/.vim/undo'
let g:highlightedyank_highlight_in_visual = 0
" Polyglot
let g:polyglot_disabled = ['sensible']
" Gutter
set updatetime=250
let g:gitgutter_sign_added = '+'
let g:gitgutter_sign_modified = '>'
let g:gitgutter_sign_removed = '-'
let g:gitgutter_sign_removed_first_line = '^'
let g:gitgutter_sign_modified_removed = '<'
let g:gitgutter_override_sign_column_highlight = 1
" NerdTree
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'
" Plugins
if filereadable(expand("~/.vim/autoload/plug.vim"))
runtime! autoload/plug.vim
silent! call plug#begin()
" Plug 'itchyny/lightline.vim'
" Theme
Plug 'https://github.com/vim-airline/vim-airline.git'
Plug 'https://github.com/vim-airline/vim-airline-themes.git'
Plug 'https://github.com/ryanoasis/vim-devicons.git'
Plug 'https://github.com/arcticicestudio/nord-vim.git'
Plug 'https://github.com/edkolev/tmuxline.vim.git'
" Tools
Plug 'https://github.com/tpope/vim-surround.git'
Plug 'https://github.com/luochen1990/rainbow.git'
Plug 'https://tpope.io/vim/commentary.git'
Plug 'https://github.com/preservim/nerdtree.git'
Plug 'https://github.com/ctrlpvim/ctrlp.vim'
" Plug 'https://github.com/vim-autoformat/vim-autoformat.git'
" Git
Plug 'https://github.com/tpope/vim-fugitive'
Plug 'https://github.com/airblade/vim-gitgutter.git'
" Clipboard and Undo
Plug 'https://github.com/vim-scripts/YankRing.vim.git'
Plug 'https://github.com/machakann/vim-highlightedyank.git'
" Plug 'https://github.com/mbbill/undotree.git'
" Language
Plug 'sheerun/vim-polyglot'
" Plug 'prabirshrestha/async.vim'
" Plug 'prabirshrestha/vim-lsp'
" Plug 'prabirshrestha/asyncomplete.vim'
" Plug 'prabirshrestha/asyncomplete-lsp.vim'
" Plug 'mattn/vim-lsp-settings'
call plug#end()
endif
" My sensible prefs
set undofile
set viminfo='256,\"32768,:256,h,n~/.vim/.viminfo
set history=8192
set path+=,**
set wildignore+=*.o,*.out,*.obj,.git
set wildignore+=*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz
set wildignore+=*.swp,*~,._*
" filetype plugin on
" syntax enable
set title
set shortmess+=I
set hidden
set timeoutlen=500
set listchars=tab:→\ ,trail:·,precedes:«,extends:»,eol:¶
set noerrorbells novisualbell t_vb=
set backspace=indent,eol,start
set nowrap
set wildmenu
set wildmode=longest,full
set et ts=2 sts=2 sw=2
set smarttab
set encoding=utf-8
set ruler
set rulerformat=%-14.(%l,%c%V%)\ %P
set laststatus=2
set noshowmode
set showcmd
set autoread
set cursorline
set cursorlineopt=number
set ttimeout
set ttimeoutlen=100
set display+=lastline
set formatoptions+=j
set wrap linebreak
set showbreak=" "
set shortmess+=A
set nowritebackup
set updatetime=300
if !&scrolloff
set scrolloff=1
endif
if !&sidescrolloff
set sidescrolloff=5
endif
set scrolloff=8
set winwidth=79
set winheight=5
set winminheight=5
" Search option
set hlsearch
set smartcase
set showmatch
set incsearch
" Appearance
colorscheme nord
if has('gui_running')
set guifont='VictorMono NF':h16:cANSI:qDRAFT
endif
if &t_Co >= 256
set termguicolors
end
if $TERM ==# 'screen-256color'
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
endif
set statusline+=%#warningmsg#
set statusline+=%*
set statusline+=%{FugitiveStatusline()}
if has('mouse')
set mouse=a
endif
set number
if exists('+relativenumber')
set relativenumber
:augroup numbertoggle
: autocmd!
: autocmd BufEnter,FocusGained,InsertLeave * set relativenumber
: autocmd BufLeave,FocusLost,InsertEnter * set norelativenumber
:augroup END
endif
" Shortcut
nnoremap <silent> <tab> :bnext!<CR>
nnoremap <silent> <s-tab> :bprevious!<CR>
nnoremap <silent> <CR> :nohlsearch<CR>
noremap <Leader>kt :call TrimWhitespace()<CR>
noremap <Leader>ol :set nolist<CR>
noremap <Leader>gy :YRShow<CR>
noremap <Leader>gg :Git<CR>
noremap <Leader>fn :enew<CR>
noremap <Leader>fw :bd<CR>
nnoremap Y y$
noremap n nzz
noremap N Nzz
noremap gV `[v`]
vmap <silent> <expr> p <sid>Repl()
noremap <leader>gf :NERDTreeToggle<CR>
noremap <leader>gF :NERDTreeFind<CR>
let g:ctrlp_map = '<c-f>'
" nnoremap <C-Left> <C-W>h
" nnoremap <C-Down> <C-W>j
" nnoremap <C-Up> <C-W>k
" nnoremap <C-Right> <C-W>l
if empty(mapcheck('<C-U>', 'i'))
inoremap <C-U> <C-G>u<C-U>
endif
" Func and autocmd
fun! TrimWhitespace()
let l:save = winsaveview()
keeppatterns %s/\s\+$//e
call winrestview(l:save)
endfun
command! TrimWhitespace call TrimWhitespace()
"Visual Yank
function! RestoreRegister()
let @" = s:restore_reg
return ''
endfunction
function! s:Repl()
let s:restore_reg = @"
return "p@=RestoreRegister()\<cr>"
endfunction
" NerdTree
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
\ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif
autocmd BufEnter NERD_* setlocal nornu | setlocal nonu
" Start NERDTree when Vim starts with a directory argument.
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') |
\ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd'.argv()[0] | endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment