Skip to content

Instantly share code, notes, and snippets.

@Tracnac
Created May 16, 2026 16:12
Show Gist options
  • Select an option

  • Save Tracnac/8265306a07b0119bb8eab78d62b41353 to your computer and use it in GitHub Desktop.

Select an option

Save Tracnac/8265306a07b0119bb8eab78d62b41353 to your computer and use it in GitHub Desktop.
" Minimal Vim
" Bootstrap (run once in a shell):
if !filereadable(expand('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
endif
" Create directories for persistent files (undo/backup/swap)
if has('win32')
let s:vim_dir = expand('$APPDATA') . '\\Vim'
call mkdir(s:vim_dir . '\\undo', 'p')
call mkdir(s:vim_dir . '\\backup', 'p')
call mkdir(s:vim_dir . '\\swap', 'p')
else
let s:vim_dir = expand('$HOME') . '/.vim'
call mkdir(s:vim_dir . '/undo', 'p')
call mkdir(s:vim_dir . '/backup', 'p')
call mkdir(s:vim_dir . '/swap', 'p')
endif
" Performance
set updatetime=300
set timeoutlen=500
set ttimeout
set ttimeoutlen=100
set complete-=i
" Persistent states
if has('win32')
let &undodir = s:vim_dir . '\\undo'
let &backupdir = s:vim_dir . '\\backup'
let &directory = s:vim_dir . '\\swap'
else
let &undodir = s:vim_dir . '/undo'
let &backupdir = s:vim_dir . '/backup'
let &directory = s:vim_dir . '/swap'
endif
" Leader key
let mapleader = " "
" --- Plugin customization ---
let g:fzf_layout = { 'down': '40%' }
let g:airline_theme = 'catppuccin_mocha'
" Plug
if filereadable(expand('~/.vim/autoload/plug.vim'))
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-sensible'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'catppuccin/vim', { 'as': 'catppuccin' }
call plug#end()
endif
" Basic behavior
filetype plugin indent on
syntax on
set termguicolors
set background=dark
colorscheme catppuccin_mocha
set encoding=utf-8
set lazyredraw
set nrformats-=octal
" Editing experience
set hidden
set backspace=indent,eol,start
set nowrap
" Indentation (sane defaults)
set expandtab
set shiftwidth=2
set softtabstop=2
set tabstop=2
set smarttab
set autoindent
set smartindent
set indentexpr=
autocmd FileType c,cpp,java set cindent
" Searching
set incsearch
set hlsearch
set smartcase
" Display
set number
if exists('+relativenumber')
set relativenumber
endif
set cursorline
set showcmd
set showmatch
set laststatus=2
set ruler
set showtabline=0
" set formatoptions+=j
set formatoptions-=cro
" hi StatusLineMode guifg=#282828 guibg=#fabd2f gui=bold ctermfg=Black ctermbg=Yellow
" set statusline=%#StatusLineMode#%{StatusMode()}%*\ %F\ %y\ %m%r%h%w\ %=\ [%l:%c]\ [%p%%]\ %{StatusTabs()}\ %{StatusBuffers()}\ %{exists('*FugitiveHead')?FugitiveHead():''}\ %{StatusALE()}
set sessionoptions-=options
set viewoptions-=options
set sidescroll=1
set sidescrolloff=2
" Disable mouse by default (change to 'a' to enable)
set mouse=
" Clipboard: leave empty (do not override system clipboard)
set clipboard=
" Wildmenu and completion conveniences
set wildmenu
set wildmode=longest,full
set wildignore+=*/tmp/*,*.so,*.swp,*.zip
set path+=**
" Prevent visual/terminal bells
set noerrorbells
set novisualbell
set t_vb=
" Basic file handling
set autoread
set nowritebackup
set undofile
set backup
set writebackup
set swapfile
set backupcopy=yes
"augroup MySettings
" autocmd!
" autocmd VimEnter * source ~/.vim/vim-personal.vim
"augroup END
" Keymaps for FZF
nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>g :GFiles?<CR>
nnoremap <leader>r :Rg<CR>
nnoremap <leader>h :History<CR>
nnoremap <leader>c :Commands<CR>
" System clipboard ONLY via leader keys
nnoremap <leader>y "+y
nnoremap <leader>Y "+Y
vnoremap <leader>y "+y
nnoremap <leader>p "+p
vnoremap <leader>p "+p
nnoremap <leader>P "+P
" Redo as U
nnoremap U <C-r>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment