Created
February 26, 2024 14:08
-
-
Save Tracnac/ca11e24075b5ade79a24194eb5b07593 to your computer and use it in GitHub Desktop.
Vim quick setup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" 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) . '/backup') | |
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='nord' | |
" 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 | |
" ALE | |
let g:ale_completion_enabled = 1 | |
let g:ale_fixers = { | |
\ '*': ['remove_trailing_lines', 'trim_whitespace'], | |
\ 'javascript': ['eslint'], | |
\ 'c': ['clang-format'], | |
\} | |
" 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 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
Plug 'junegunn/fzf.vim' | |
" 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 'dense-analysis/ale' | |
" Plug 'sheerun/vim-polyglot' | |
" Plug 'https://github.com/vim-syntastic/syntastic.git' | |
" 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=4 | |
endif | |
if !&sidescrolloff | |
set sidescrolloff=4 | |
endif | |
set winwidth=79 | |
set winheight=5 | |
set winminheight=5 | |
" Search option | |
set hlsearch | |
set smartcase | |
set showmatch | |
set incsearch | |
" Appearance | |
set termguicolors | |
let &t_ZH="\e[3m" | |
let &t_ZR="\e[23m" | |
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" | |
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" | |
colorscheme nord | |
if has('gui_running') | |
set guifont='VictorMono NF':h16:cANSI:qDRAFT | |
endif | |
set statusline+=%#warningmsg# | |
set statusline+=%{FugitiveStatusline()} | |
set statusline+=%* | |
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> | |
" nnoremap <C-Left> <C-W>h | |
" nnoremap <C-Down> <C-W>j | |
" nnoremap <C-Up> <C-W>k | |
" nnoremap <C-Right> <C-W>l | |
" 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