.vimrc

· · 个人记录

syntax on
syntax enable
set nu
set laststatus=2
set noswapfile
set nobackup
set tabstop=4
set shiftwidth=4
set mouse=a
set cindent
set foldmethod=marker
set foldmarker={{{,}}}
set undofile
set autoread
imap jj <ESC>
noremap H 5h
noremap K 5k
noremap L 5l
noremap J 5j
inoremap <F2> : exec "-join"
inoremap <F3> : exec "join"
noremap a "_d
noremap aa "_dd
noremap s "_x
noremap \ $
noremap gb #*<S-Left>cgn
noremap cW <S-Left>cw
noremap dW <S-Left>dw
noremap > :bn<CR>
noremap < :bp<CR>
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {}<ESC>i
inoremap {<CR> {<CR>}<ESC>O
inoremap /* /**/<ESC>hi
inoremap " <c-r>=Fuck("\"")<CR>
inoremap ' <c-r>=Fuck("'")<CR>
inoremap ) <c-r>=Skp(")")<CR>
inoremap ] <c-r>=Skp("]")<CR>
inoremap } <c-r>=Skp("}")<CR>
nmap <F6> :exec "w \| !clear"<CR><CR>
nmap <F7> :exec "w \| !g++ -std=c++17 -Wall -Wextra -Wshadow -fsanitize=undefined -O2 -o %< %"<CR>
nmap <F8> :exec 'w \| !/usr/bin/time -f "\%es, \%MKB" ./%<'<CR>
nmap <F5> :exec "w \| !g++ -std=c++17 -g -o %< % && gdb ./%<"<CR>

func Fuck(quo)
    return getline('.')[col('.') - 1] == a:quo ? "\<ESC>la" : a:quo . a:quo . "\<ESC>ha"
endfunc
func Skp(bra)
    return getline('.')[col('.') - 1] == a:bra ? "\<ESC>la" : a:bra
endfunc