.vimrc File Backup
September 25, 2025
note-to-self
There is no rhyme or reason to the structure, just a pile of settings. This has changed a lot since I moved to VSCode as my IDE; I removed a lot of the IDE-ish functionality I used to have with dozens more plugins.
set nocompatible
filetype off
filetype plugin on
filetype plugin indent on
:set vb t_vb=
syntax on
let mapleader = " "
set timeout timeoutlen=1000 ttimeoutlen=100
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
let g:pdv_template_dir = $HOME ."/.vim/bundle/pdv/templates_snip"
nnoremap <leader>doc :call pdv#DocumentWithSnip()<CR>
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tmuxline#enabled = 0
let g:airline_powerline_fonts = 1
let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
let g:airline_theme = "cool"
Plugin 'scrooloose/NERDTree'
let NERDTreeWinSize = 45
let NERDTreeQuitOnOpen = 1
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
Plugin 'tomtom/tcomment_vim'
Plugin 'ctrlpvim/ctrlp.vim'
map <leader>6 :CtrlP<CR>
map <leader>5 :CtrlPBuffer<CR>
map <leader>4 :CtrlPMRUFiles<CR>
set wildignore+=*/vendor/**
set wildignore+=*/node_modules/**
set wildignore+=*/docs/**
Plugin 'powerline/powerline'
Plugin 'edkolev/tmuxline.vim'
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
set undofile " Save undo's after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000 " How many undos
set undoreload=10000 " number of lines to save for undo
Plugin 'reedes/vim-pencil'
augroup pencil
autocmd!
autocmd FileType wiki call pencil#init({'wrap': 'soft'})
augroup END
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
nmap + :TagbarToggle<CR>
map <leader>7 :execute "g/### "<CR>
map <leader>8 :execute "g#^ [@A-Za-z0-9]#"<CR>
map <leader>9 :execute "g#^ [@A-Za-z0-9]#y a"<CR>
:command! -nargs=* Search execute "cexpr system(\"ag --html --js --yaml --json --markdown --sass --php --vimgrep --ignore 'vendor' '" . <q-args> . "' " . finddir('.git', '.;') . "/../\")"
:command! -nargs=* Find execute "cexpr system(\"ag --html --js --yaml --json --markdown --sass --php --vimgrep --ignore 'vendor' '" . <q-args> . "' " . expand('%:p:h') . "/\")"
map <leader>f :NERDTreeFind<CR>:pwd<CR>
autocmd BufEnter * lcd %:p:h
" change to the current directory for current file
nmap <leader>d :lcd %:p:h<CR>:pwd<CR>
:iab <expr> _dt strftime("%Y-%m-%d %a %I:%M %p")
map <leader>0 :cnext<CR>
setlocal cm=blowfish2
nnoremap ) :bn<CR>
nnoremap ( :bp<CR>
nnoremap <C-i> :bn<CR>
nnoremap <C-o> :bp<CR>
nnoremap <leader>p :vertical resize +50<CR>
nnoremap <leader>o :vertical resize -50<CR>
nnoremap <leader>1 :1wincmd w<CR>
" windows...
" jump between three windows
nnoremap <leader>1 :1wincmd w<CR>
nnoremap <leader>2 :2wincmd w<CR>
" split at current file position
nnoremap <leader>s :vsplit<CR><C-W>WL2jzt
" hide current split
nnoremap <leader>S :hide<CR>
" Thesaurus
:command! -nargs=* OT :e ~/17/vimwiki/tools/Thesaurus.wiki
:command! -nargs=* OD :e ~/17/vimwiki/tools/Dictionary.wiki
" Rhyming
":command! OR call :e ~/17/vimwiki/tools/RhymeWords.wiki<CR>
:command! -nargs=* OR :e ~/17/vimwiki/tools/RhymeWords.wiki
nmap <leader>' ci'
nmap <leader>" ci"
" Swap lines
nmap <leader>j ddp
set numberwidth=2
set number
function! NumberToggle()
if(&relativenumber == 1)
set number
set norelativenumber
else
set number
set relativenumber
endif
endfunc
nnoremap <leader>n :call NumberToggle()<CR>
au InsertEnter * hi LineNr ctermfg=196
au InsertLeave * hi LineNr ctermfg=240
:hi Search cterm=NONE ctermfg=black ctermbg=214
set tw=120
set history=1000
set ignorecase
set smartcase
set title
set hlsearch
set incsearch
set sm
set nowrap
set backspace=eol,start,indent
set expandtab
set tabstop=4
:retab
set shiftwidth=4
set smartindent
set laststatus=2
" remove trailing whitespace just before save
autocmd BufWritePre * %s/\s\+$//e
imap <C-j><C-j> <ESC>
imap <C-j><C-k> <ESC>gqip :w<CR>
map <C-k> <ESC>
map <C-l> <ESC>
nmap 88 I <ESC>0wv$h"zdi die(__FILE__ . ' ' . __LINE__ . print_r(<C-R>z, true));<ESC>
nmap <leader>md :call InsertLastDirName()<CR>
nmap <leader>mi :call InsertLastDirName()<CR>0i<ESC>F]i
iab )( ()
:nmap <silent> & :NERDTreeToggle<CR>
:nmap <silent> ^ <C-W>W
nmap _ <PageDown>
nmap - <PageUp>
" Refactoring
" For local replace
nnoremap gr gd[{V%::s/<C-R>///gc<left><left><left>
" For global replace
nnoremap gR gD:%s/<C-R>///gc<left><left><left>
" Indent and keep highlighted
vnoremap > ><CR>gv
vnoremap < <<CR>gv
set clipboard=unnamed
autocmd BufNewFile,BufReadPost *.md set filetype=markdown
au BufNewFile,BufRead *.php setfiletype php
au BufNewFile,BufRead *.wiki setfiletype wiki
"do not jump to the matching paren or bracket
set noshowmatch
set hidden
set cul
function! InsertLastDirName()
let l:currentfile = expand ('%:p')
let l:splittedfile= split(l:currentfile, '/')
let length = len(l:splittedfile)
let l:dirWeWant = '/' . l:splittedfile[length-2]
put =l:dirWeWant
endfunction
autocmd filetype crontab setlocal nobackup nowritebackup
These posts are for my own understanding. Reader beware. Info may be wrong but it reflects my current understanding.