Skip to content

Instantly share code, notes, and snippets.

@hulucc
Created November 16, 2019 08:34
Show Gist options
  • Save hulucc/7822265634426b651bb30c9f276b6731 to your computer and use it in GitHub Desktop.
Save hulucc/7822265634426b651bb30c9f276b6731 to your computer and use it in GitHub Desktop.
" level 0
set nocompatible
syntax on
set encoding=utf-8
set fileformat=unix
set fileformats=unix,dos
set clipboard=unnamed
let $LANG='en_US.utf8'
let mapleader='g'
nnoremap <silent> <leader>ev :e $MYVIMRC<cr>
nnoremap <silent> <leader>m :messages<cr>
nnoremap <silent> Q :q!<cr>
nnoremap <silent> Z :qa!<cr>
nnoremap <silent> W :w! ++ff=unix<cr>
nnoremap <silent> X :bd!<cr>
nnoremap <silent> R :e!<cr>G
nnoremap <silent> T :enew!<cr>
nnoremap <silent> L :nohls<cr>
nnoremap <silent> U :redo<cr>
nnoremap <silent> <c-g> :wincmd p<cr>
" level 1
filetype on
filetype plugin on
filetype indent on
set number
set relativenumber
set numberwidth=1
set tabstop=4
set shiftwidth=4
set shiftround
set expandtab
set autoindent
set nowrap
set linebreak
set belloff=all
set backspace=indent,eol,start
set hidden
set noshowmode
set modifiable
set autoread
set noautowrite
set scrolloff=4
set sidescrolloff=8
set sidescroll=1
set virtualedit=all
set nolist
set display+=lastline
set modeline
set modelines=5
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set fileencoding=utf-8
set termencoding=utf-8
set ignorecase smartcase
set incsearch
set hlsearch
set wrapscan
let @/ = ""
set wildmenu
set splitright
set splitbelow
set foldlevelstart=20
set noswapfile
set directory=~/vimfiles/files/swap/
set backup
set backupdir=~/vimfiles/files/backup/
set backupext=.bak
set undofile
set undodir=~/vimfiles/files/undo/
set viminfo='100,n~/vimfiles/files/viminfo
set exrc
let g:netrw_silent=1
packadd! matchit
"set termwinkey=<c-e>
"set ttimeoutlen=10
nnoremap j gj
xnoremap j gj
nnoremap k gk
xnoremap k gk
xnoremap v $h
nnoremap <space> o<esc>
nnoremap <leader>p o<esc>P^
nnoremap <leader>P O<esc>P^
nnoremap <leader>H <c-w>H
nnoremap <leader>J <c-w>J
nnoremap <leader>K <c-w>K
nnoremap <leader>L <c-w>L
nnoremap <silent> yow :set wrap!<cr>
nnoremap <silent> yos :syntax sync fromstart<cr>
nnoremap <silent> yob :set invbuflisted<bar>redraw!<cr>
nnoremap <silent> yoc :let @*=expand('%:p')<bar>echo 'full path copied'<cr>
onoremap <silent> ae :<c-u>normal! ggVG<cr>
xnoremap <silent> ae :<c-u>normal! ggVG<cr>
onoremap <silent> il :<c-u>normal! ^v$h<cr>
xnoremap <silent> il :<c-u>normal! ^v$h<cr>
inoremap <c-v> <c-r>*
cnoremap <c-v> <c-r>*
tnoremap <c-v> <c-w>"*
vnoremap p "_dP
nnoremap <silent> ' :bnext<cr>
nnoremap <silent> <c-'> :bprev<cr>
nnoremap <silent> <leader>< 0d^
" restore previous position of file
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | execute "normal! g`\"" | endif
" level 3
set pythondll=C:\Python27\python27.dll
set pythonthreedll=C:\Users\hulucc\AppData\Local\Programs\Python\Python37\python37.dll
nnoremap <silent> <leader>ei :AsyncRun volt build<cr>
nnoremap <silent> <leader>ep :e ~/volt/dbs.yaml<cr>
nnoremap <silent> <leader>en :e ~/notepad<cr>
nnoremap <silent> <leader>eh :e C:\Windows\System32\drivers\etc\hosts<cr>
nnoremap <silent> <leader>eu :e D:\project\config\cmder\user_aliases.cmd<cr>
nnoremap <silent> <leader>eo :cd D:\project\config <bar> :NERDTreeToggle<cr>
nnoremap <silent> <leader>es :e ~/.ssh/config<cr>
nnoremap <silent> <leader>qh :Hexmode<cr>
nnoremap <silent> <leader>s :new<cr>
nnoremap <silent> <leader>v :vnew<cr>
nnoremap <silent> <leader>x :wincmd x<cr>
nnoremap <silent> <leader>l :!clear<cr><cr>
nnoremap <silent> } :vsp<bar>wincmd p<bar>set nobuflisted<bar>Sayo!<cr>
nnoremap <silent> { :sp<bar>wincmd p<bar>set nobuflisted<bar>Sayo!<cr>
nnoremap <silent> X :set nobuflisted<bar>Sayo!<cr>
nnoremap <silent> Q :Sayo<cr>
nnoremap <silent> " :NERDCommenterToggle<cr>
xnoremap <silent> " :NERDCommenterToggle<cr>
nnoremap <silent> E :NERDTreeToggle<cr>
nnoremap <silent> e :NERDTreeFocus<cr>
nnoremap <silent> m :ChooseWin<cr>
nnoremap <silent> , :call ToggleWindows()<cr>
nnoremap <silent> H :GV!<cr>
nnoremap <silent> <c-h> :GV<cr>
nnoremap <silent> B :Gblame<cr>
nnoremap <silent> <c-a> :if !switch#Switch()<bar>exe "normal! \<lt>c-a>"<bar>endif<cr>
nnoremap <silent> <c-x> :if !switch#Switch({'reverse': 1})<bar>exe "normal! \<lt>c-x>"<bar>endif<cr>
nnoremap <silent> <c-e> :NERDTreeFind<cr>
nnoremap <silent> <c-w> :WinResizerStartResize<cr>
nnoremap <silent> <c-s> :AsyncStop<cr>
nnoremap <silent> - :Rg<cr>
nnoremap <silent> _ :Rg <c-r><c-w><cr>
xnoremap <silent> _ y:Rg <c-r>0<cr>
nnoremap <silent> \ :Rgu<cr>
nnoremap <silent> \| :Rgu <c-r><c-w><cr>
xnoremap <silent> \| y:Rgu <c-r>0<cr>
nnoremap <silent> <c-r> :Far <c-r><c-w> <c-r><c-w> *<cr>
nnoremap <silent> <c-;> :TagbarToggle<cr>
nnoremap <silent> <leader>al :SidewaysRight<cr>
nnoremap <silent> <leader>ah :SidewaysLeft<cr>
inoreabbrev <silent> uuid4 <c-o>:py3 from uuid import uuid4<cr><c-r>=py3eval('uuid4().hex')<cr>
inoreabbrev <silent> guid4 <c-o>:py3 from uuid import uuid4<cr><c-r>=py3eval('str(uuid4())')<cr>
" level 4
function! s:init_python()
let $PYTHONUNBUFFERED=1
let &l:errorformat = '%+GTraceback%.%#,%I%.%#File "%f"\, line %l%m,%Z %m'
nnoremap <buffer> <silent> <s-cr> :TestNearest<cr>
nnoremap <buffer> <silent> <leader><cr> :TestFile<cr>
nnoremap <buffer> <silent> <cr> :AsyncRun -cwd=<root> -save=2 python -m <c-r>=substitute(expand('%:.:r'), '[\/\\]', '.', 'g')<cr><cr>
nnoremap <buffer> <silent> <nl> :%AsyncRun python<cr>
xnoremap <buffer> <silent> <cr> :AsyncRun python<cr>
nmap <buffer> <c-]> <Plug>(lsp-definition)
nmap <buffer> K <Plug>(lsp-hover)
nmap <buffer> <leader>r <Plug>(lsp-references)
nnoremap <buffer> <silent> <c-r> :Far <c-r><c-w> <c-r><c-w> *.py<cr>
endfunction
function! s:init_javascript()
setlocal tabstop=2 shiftwidth=2
nnoremap <buffer> <silent> <s-cr> :TestNearest<cr>
nnoremap <buffer> <silent> <leader><cr> :TestFile<cr>
nmap <buffer> <c-]> <Plug>(lsp-definition)
nmap <buffer> <leader>r <Plug>(lsp-rename)
nmap <buffer> K <Plug>(lsp-hover)
nmap <buffer> <c-k> <Plug>(lsp-references)
endfunction
function! s:init_vue()
syntax sync fromstart
endfunction
function! s:init_lua()
setlocal tabstop=2 shiftwidth=2
nnoremap <buffer> <silent> <nl> :%AsyncRun lua<cr>
xnoremap <buffer> <silent> <cr> :AsyncRun lua<cr>
endfunction
nnoremap <silent> <leader>qs :set ft=db <bar> ListConnection<cr>
function! s:set_connection(conn)
let b:db = g:dbs['conns'][a:conn]
let type = matchlist(b:db, '\v^(.*)://')[1]
let &filetype=g:dbs['types'][type]
endfunction
function! s:init_db()
let $TERM = 'cygwin'
if !exists('g:dbs')
py3 import json, os, yaml
let g:dbs = py3eval('yaml.safe_load(open(os.path.expanduser("~/volt/dbs.yaml")))')
endif
command! -nargs=1 SetConnection call s:set_connection(<q-args>)
command! ListConnection execute 'LoadFzfVim' <bar> call fzf#run({'source': sort(keys(g:dbs['conns'])), 'sink': 'SetConnection', 'window': 'split', 'options': '--layout=reverse'})
nnoremap <buffer> <silent> <cr> :%DB<cr>
nnoremap <buffer> <silent> <nl> mmvip:DB<cr>`m
nnoremap <buffer> <silent> <s-cr> :DB<cr>
xnoremap <buffer> <silent> <cr> :DB<cr>
nnoremap <buffer> R :let b:db='<c-r>=eval('b:db')<cr>'<left>
nnoremap <buffer> <silent> , :call TogglePreview()<cr>
endfunction
function! s:init_sql()
nnoremap <buffer> <silent> = :%!sqlformat -r -a -k upper -i lower -<cr>
xnoremap <buffer> <silent> = :!sqlformat -r -a -k upper -i lower -<cr>
endfunction
function! ToggleWindows()
let l:preview = get(filter(range(1, winnr('$')), "getwinvar(v:val, '&pvw')"), 0, 0)
if l:preview != 0
execute 'pclose'
else
execute 'ToggleQuickFix'
endif
endfunction
function! TogglePreview()
let l:preview = get(filter(range(1, winnr('$')), "getwinvar(v:val, '&pvw')"), 0, 0)
if l:preview != 0
let g:pbuffer = bufname(winbufnr(l:preview))
execute 'pclose'
else
if get(g:, 'pbuffer', '') != ''
silent! execute 'bot pedit ' . g:pbuffer
endif
endif
endfunction
function! s:init_preview()
nnoremap <buffer> <silent> , :call TogglePreview()<cr>
"unsilent echom 3
endfunction
if has('gui_running')
let g:shell = 'cmd /k ' . $CMDER_INSTALL_DIR . '\vendor\init.bat'
else
let g:shell = 'sh -c "cmd //k d:\\\\cmder\\\\vendor\\\\init.bat"'
endif
function! GetTerminal()
return get(filter(range(1,bufnr('$')), "getbufvar(v:val, '&buftype') == 'terminal'"), 0, -1)
endfunction
function! OpenTerminal(prefix, shell, focus)
let l:terminal = GetTerminal()
if l:terminal != -1
let l:window = bufwinnr(l:terminal)
if l:window != -1
if a:focus | execute l:window . "wincmd w" | endif
else
silent execute a:prefix . " sbuffer " . l:terminal
if !a:focus | execute "wincmd p" | endif
endif
else
execute a:prefix . " terminal " . a:shell
if !a:focus | execute "wincmd p" | endif
let l:terminal = GetTerminal()
endif
return l:terminal
endfunction
function! SendTerminal(raw, cmd)
let l:terminal = OpenTerminal('vertical bot', g:shell, 0)
let l:cmd = empty(a:cmd) ? @" : a:cmd
if !a:raw
let l:cmd = substitute(l:cmd, "[\<cr>\n\t]", " ", "g")
let l:cmd = substitute(l:cmd, ' \{2,}', " ", "g")
let l:cmd = trim(l:cmd, " ") . "\<cr>"
endif
call term_sendkeys(l:terminal, l:cmd)
endfunction
function! EnableSendTerminal()
nnoremap <buffer> <silent> <nl> mmvipy:call SendTerminal(0, 0)<cr>`m
xnoremap <buffer> <silent> <nl> y:call SendTerminal(0, 0)<cr>gv
nnoremap <buffer> <silent> <c-l> :call SendTerminal(1, "\<c-l>")<cr>
endfunction
nnoremap <c-z> :!<c-r>=g:shell<cr><cr><cr>
nnoremap <silent> ( :call OpenTerminal('bot', g:shell, 1)<cr>
nnoremap <silent> ) :call OpenTerminal('vertical bot', g:shell, 1)<cr>
nnoremap <buffer> <silent> <a-cr> mmvipy:call SendTerminal(0, 0)<cr>`m
function! s:init_terminal()
setlocal nobuflisted
tnoremap <a-b> <nop>
tnoremap <a-f> <nop>
tnoremap <buffer> <silent> <s-cr> <c-w>:quit<bar>wincmd p<cr>
" tnoremap <buffer> <silent> <nl> <c-w><c-c>:quit<cr>
tnoremap <buffer> <silent> <c-q> <c-w><c-c>:quit<cr>
nnoremap <buffer> <silent> <s-cr> :quit<bar>wincmd p<cr>
tnoremap <buffer> <silent> <c-o> <c-\><c-n>
tnoremap <buffer> <silent> <c-u> <c-\><c-n><c-u>
tnoremap <buffer> <silent> <c-w> <c-w>:WinResizerStartResize<cr>
tnoremap <buffer> <silent> <c-g> <c-w>:wincmd p<cr>
endfunction
function! ToggleHelp(prefix)
let l:help = get(filter(range(1,bufnr('$')), "getbufvar(v:val, '&buftype') == 'help' && bufwinnr(v:val) != -1"), 0, -1)
let l:window = bufwinnr(l:help)
if l:window != -1
let g:help = l:help
execute l:window . 'hide'
elseif get(g:, 'help', -1) != -1
execute printf('%s sbuffer %d | set nonu nornu | resize +5', a:prefix, g:help)
else
execute a:prefix . " help"
endif
endfunction
nnoremap <silent> <leader>k :call ToggleHelp('')<cr>
nnoremap <silent> <leader>K :call ToggleHelp('vert')<cr>
function! s:init_help()
nnoremap <buffer> <silent> Q :call ToggleHelp('')<cr>
endfunction
function! s:init_json()
nnoremap <buffer> <silent> = :%!jq .<cr>
xnoremap <buffer> <silent> = :!jq .<cr>
endfunction
function! s:init_markdown()
setlocal tabstop=2 shiftwidth=2
nnoremap <buffer> <silent> <nl> :MarkdownPreview<cr>
hi link mkdLineBreak Comment
endfunction
function! s:init_lsp()
set wrap
endfunction
function! s:init_far()
nnoremap <buffer> <c-r> :FarReplace <c-r>=b:far_ctx['replace_with']<cr>
nnoremap <buffer> <s-cr> :Fardo<cr>
nnoremap <buffer> <silent> U :Farundo<cr>
nnoremap <buffer> <silent> <space> :call g:far#change_exclude_under_cursor(-1)<cr>
xnoremap <buffer> <silent> <space> :call g:far#change_exclude_under_cursor(-1)<cr>
endfunction
function! s:init_sh()
call EnableSendTerminal()
endfunction
function! s:init_go()
" nnoremap <buffer> <silent> <s-cr> :AsyncRun go build<cr>
nnoremap <buffer> <silent> <nl> :AsyncRun go run .<cr>
nnoremap <buffer> <silent> <s-cr> :TestNearest<cr>
nnoremap <buffer> <silent> <leader><cr> :TestFile<cr>
nmap <buffer> <c-]> <Plug>(lsp-definition)
nmap <buffer> K <Plug>(lsp-hover)
nnoremap <buffer> <silent> = :silent LspDocumentFormatSync<cr>
" nmap <buffer> <leader>r <Plug>(lsp-references)
endfunction
function! s:init_quickfix()
nnoremap <buffer> <silent> , :ToggleQuickFix<cr>
endfunction
function! s:init_asciidoc()
setlocal tabstop=2 shiftwidth=2
endfunction
function! s:nginx()
nnoremap <buffer> <silent> <nl> :execute printf('AsyncRun nginx -p %s -c %s -s reload', $NGINX_HOME, 'd:\project\config\nginx\default.conf')<cr>
endfunction
au FileType python call s:init_python()
au FileType javascript,javascript.* call s:init_javascript()
au FileType lua call s:init_lua()
au FileType vue call s:init_vue()
au FileType db,db.* call s:init_db()
au FileType sql,*.sql,*.sql.* call s:init_sql()
au FileType help call s:init_help()
au FileType json call s:init_json()
au FileType markdown call s:init_markdown()
au FileType *.lsp-hover call s:init_lsp()
au FileType far call s:init_far()
au FileType sh call s:init_sh()
au FileType go call s:init_go()
au FileType qf call s:init_quickfix()
au FileType asciidoc call s:init_asciidoc()
au FileType nginx call s:nginx()
au BufRead,BufNewFile *.yaml.{tmpl,template} set filetype=yaml
au BufRead,BufNewFile *.template set filetype=yaml
au BufRead,BufNewFile *Dockerfile set filetype=dockerfile
au BufWinEnter * if &previewwindow | call s:init_preview() | endif
au TerminalOpen * if &buftype == 'terminal' | call s:init_terminal() | endif
" gui
if has('gui_running')
set guioptions-=g
set guioptions-=m
set guioptions-=r
set guioptions-=L
set guioptions-=t
set guioptions-=T
set guioptions+=c
set guifont=Fira_Code:h11:cDEFAULT:qDRAFT
set renderoptions=type:directx,gamma:1.0,contrast:0.5,level:1,geom:1,renmode:0,taamode:1
set lines=30
set columns=100
set autowrite
au CursorHold * silent! write
au CursorHoldI * silent! write
au VimLeave * silent! write
cd D:\project\config\notes
silent edit $HOME/notepad
endif
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment