.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>A)<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.