160 lines
4.2 KiB
VimL
160 lines
4.2 KiB
VimL
filetype plugin indent on
|
|
syntax on
|
|
|
|
colorscheme habamax
|
|
|
|
set nobackup nowritebackup
|
|
set noswapfile
|
|
|
|
set number
|
|
|
|
set tabstop=8
|
|
set shiftwidth=4
|
|
set softtabstop=4
|
|
set expandtab
|
|
set autoindent
|
|
set smarttab
|
|
|
|
set mouse=a
|
|
|
|
set laststatus=2
|
|
|
|
set scrolloff=5
|
|
|
|
set ignorecase
|
|
set hlsearch
|
|
set incsearch
|
|
|
|
set nowrap
|
|
|
|
set timeoutlen=1000
|
|
set ttimeoutlen=0
|
|
set hidden
|
|
set wildmenu
|
|
set clipboard=unnamed,unnamedplus
|
|
set colorcolumn=75
|
|
"set backspace=indent,eol,start
|
|
|
|
set updatetime=100
|
|
set signcolumn=auto
|
|
|
|
" ----- Custom Functions --------------------------------------------------
|
|
" Align regex
|
|
command! -nargs=? -range Align <line1>,<line2>call AlignSection('<args>')
|
|
vnoremap <silent> <Leader>a :Align<CR>
|
|
function! AlignSection(regex) range
|
|
let extra = 1
|
|
let sep = empty(a:regex) ? '=' : a:regex
|
|
let maxpos = 0
|
|
let section = getline(a:firstline, a:lastline)
|
|
for line in section
|
|
let pos = match(line, ' *'.sep)
|
|
if maxpos < pos
|
|
let maxpos = pos
|
|
endif
|
|
endfor
|
|
call map(section, 'AlignLine(v:val, sep, maxpos, extra)')
|
|
call setline(a:firstline, section)
|
|
endfunction
|
|
|
|
function! AlignLine(line, sep, maxpos, extra)
|
|
let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)')
|
|
if empty(m)
|
|
return a:line
|
|
endif
|
|
let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)
|
|
return m[1] . spaces . m[2]
|
|
endfunction
|
|
|
|
" Window Operations
|
|
function! CreateOrSelectWindow()
|
|
let win_count = winnr('$')
|
|
|
|
if win_count == 1
|
|
execute 'vsplit'
|
|
endif
|
|
|
|
execute '2wincmd w'
|
|
endfunction
|
|
|
|
function! PutIntoShade()
|
|
let max_width = float2nr(&columns * 0.95)
|
|
let min_width = float2nr(&columns * 0.5)
|
|
|
|
if winwidth(0) > min_width
|
|
execute 'vertical resize ' . min_width
|
|
elseif winwidth(0) <= min_width
|
|
execute 'vertical resize ' . max_width
|
|
endif
|
|
endfunction
|
|
|
|
" Preserve paste line column
|
|
function! PasteAbove()
|
|
let c = col('.')
|
|
normal! P
|
|
call cursor(0, c)
|
|
endfunction
|
|
|
|
function! PasteBelow()
|
|
let c = col('.')
|
|
normal! p
|
|
call cursor(0, c)
|
|
endfunction
|
|
|
|
" ----- Custom Keymaps ----------------------------------------------------
|
|
nnoremap <silent> K <Nop>
|
|
|
|
vnoremap <silent> > >:normal gv<CR>
|
|
vnoremap <silent> < <:normal gv<CR>
|
|
|
|
vnoremap <silent> J :m '>+1<CR>gv=gv
|
|
vnoremap <silent> K :m '<-2<CR>gv=gv
|
|
|
|
nnoremap <silent> H :bnext<CR>zz
|
|
nnoremap <silent> L :bprev<CR>zz
|
|
|
|
nnoremap <silent> , :copen<CR>
|
|
nnoremap <silent> > :cn<CR>
|
|
nnoremap <silent> < :cp<CR>
|
|
|
|
nnoremap <silent> g/ :noh<CR>
|
|
|
|
nnoremap <silent> E :Ex<CR>
|
|
|
|
nnoremap <silent> <space>z :set relativenumber!<CR>
|
|
nnoremap <silent> <space>x :set wrap!<CR>
|
|
|
|
nnoremap gb :make<CR>
|
|
nnoremap gr :make run<CR>
|
|
|
|
nnoremap <silent> gw :close<CR>
|
|
nnoremap <silent> gq :bdelete<CR>
|
|
|
|
nnoremap <silent> ! :1wincmd w<CR>
|
|
nnoremap <silent> @ :call CreateOrSelectWindow()<CR>
|
|
nnoremap <silent> # :call PutIntoShade()<CR>
|
|
|
|
nnoremap <silent> P :call PasteAbove()<CR>
|
|
nnoremap <silent> p :call PasteBelow()<CR>
|
|
|
|
" ----- Highlights --------------------------------------------------------
|
|
" Todo Comments highlights
|
|
" Colors: https://vim.fandom.com/wiki/Xterm256_color_names_for_console_Vim
|
|
" NOTE: These are confirmed to work with 'habamax' color scheme.
|
|
highlight TODOPerf term=bold,underline cterm=bold,underline ctermfg=93 " purple
|
|
highlight TODOHack term=bold,underline cterm=bold,underline ctermfg=214 " orange
|
|
highlight TODOTodo term=bold,underline cterm=bold,underline ctermfg=51 " cyan
|
|
highlight TODONote term=bold,underline cterm=bold,underline ctermfg=46 " green
|
|
highlight TODOFix term=bold,underline cterm=bold,underline ctermfg=196 " green
|
|
highlight TODOWarning term=bold,underline cterm=bold,underline ctermfg=214 " orange
|
|
|
|
augroup HiglightTODO
|
|
autocmd!
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODOPerf', 'PERF:', -1)
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODOHack', 'HACK:', -1)
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODOTodo', 'TODO:', -1)
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODONote', 'NOTE:', -1)
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODOFix', 'FIX:', -1)
|
|
autocmd WinEnter,VimEnter * :silent! call matchadd('TODOWarning', 'WARNING:', -1)
|
|
augroup END
|