330 lines
9.2 KiB
VimL
330 lines
9.2 KiB
VimL
" -------------
|
|
" ### LOOKS ###
|
|
" -------------
|
|
set title
|
|
set iconstring=Vim
|
|
|
|
set listchars=tab:<·>,eol:¬,space:·,nbsp:⎵
|
|
|
|
filetype on
|
|
|
|
syntax on
|
|
|
|
set nowrap "do not wrap lines not fitting the screen
|
|
set sidescroll=1 "do not jump half a screens whenever manuvering a line not fitting the screen
|
|
|
|
set display=uhex "display hex chats as <[hex]> instead of ^C and ~C
|
|
|
|
set laststatus=2 "display status bar
|
|
set ruler
|
|
"set statusline+=%l,%c%V%=%P
|
|
|
|
set visualbell "flash instead of beeping
|
|
|
|
"autocmd InsertEnter * silent !echo -ne "\e[1 q"
|
|
"autocmd InsertLeave * silent !echo -ne "\e[0 q"
|
|
let &t_VS = "\e[0 q"
|
|
let &t_SI = "\e[1 q"
|
|
let &t_EI = "\e[0 q"
|
|
|
|
set showmatch "highlight pair of paranthesies
|
|
set hlsearch "highlight search
|
|
set wildmenu "visual command auto complete
|
|
|
|
se nostartofline "Do not jump to first char of line when scolling
|
|
|
|
set colorcolumn=100 " visual pseudo-margin on the right
|
|
|
|
colorscheme knight
|
|
|
|
set signcolumn=no
|
|
|
|
set shortmess-=S "show match count on search
|
|
|
|
" --------------------
|
|
" ### EASSE_OF_USE ###
|
|
" --------------------
|
|
set backspace=2
|
|
|
|
set undofile
|
|
if isdirectory("/home/anon/")
|
|
set undodir=/home/anon/stow/.cache/
|
|
set directory=/home/anon/stow/.cache/
|
|
set backupdir=/home/anon/stow/.cache/
|
|
else
|
|
set undodir=/tmp/
|
|
set directory=/tmp/
|
|
set backupdir=/tmp/
|
|
endif
|
|
|
|
set autoindent
|
|
|
|
set ignorecase "ignore case in searches
|
|
set smartcase "override ignorecase when upper case letters are used in the search
|
|
set wildignorecase "ignore case when auto completing file and directory names (does not to shells)
|
|
|
|
set autoread "chech for external changes in the file
|
|
|
|
set autochdir
|
|
|
|
set confirm "when quiting an unsaved filed, do not fail, instead ask back whether the buffer shall be saved, not saved, or cancel the operation
|
|
|
|
set mouse=a
|
|
nnoremap <LeftMouse> <nop>
|
|
|
|
set keywordprg=:call\ ContextualMan()\ \" " better 'K' help
|
|
|
|
set suffixes+=.info,.aux,.log,.dvi,.bbl,.out,.o,.lo,.obj " ignore on completion
|
|
|
|
set foldopen-=hor " do not unfold on horizontal movement
|
|
|
|
" always respect # pragma region
|
|
set foldmarker=#pragma\ region,#pragma\ endregion
|
|
set foldmethod=marker
|
|
|
|
" tabs/spaces
|
|
set tabstop=4
|
|
set shiftwidth=4
|
|
set expandtab
|
|
set softtabstop=4
|
|
|
|
" -----------------
|
|
" ### Functions ###
|
|
" -----------------
|
|
function ContextualMan()
|
|
let word = expand('<cword>')
|
|
let cmd = ":silent !"
|
|
|
|
if &filetype == "vim"
|
|
:help word
|
|
return
|
|
endif
|
|
|
|
if &filetype == "c"
|
|
let cmd .= "man -s 3,2 "
|
|
elseif &filetype == "cpp"
|
|
let cmd .= "man -s 3,2 " . word . "; [ $? == 16 ] && cppman "
|
|
elseif &filetype == "python"
|
|
let cmd .= "pydoc "
|
|
elseif &filetype == "tcl"
|
|
let cmd .= "man n "
|
|
elseif &filetype == "bash" || &filetype == "sh"
|
|
let cmd .= "man 1 "
|
|
else
|
|
let cmd .= "man 3 "
|
|
endif
|
|
|
|
let cmd .= word
|
|
|
|
execute cmd
|
|
redraw!
|
|
endfunction
|
|
|
|
function! ToUnicodeMathNotation(range)
|
|
let superscript_table = {'\^0': '⁰', '\^1': '¹', '\^2': '²', '\^3': '³', '\^4': '⁴', '\^5': '⁵', '\^6': '⁶', '\^7': '⁷', '\^8': '⁸', '\^9': '⁹'}
|
|
let subscript_table = {'ˇ0': '₀', 'ˇ1': '₁', 'ˇ2': '₂', 'ˇ3': '₃', 'ˇ4': '₄', 'ˇ5': '₅', 'ˇ6': '₆', 'ˇ7': '₇', 'ˇ8': '₈', 'ˇ9': '₉'}
|
|
let replace_table = extend(superscript_table, subscript_table)
|
|
for [key, value] in items(replace_table)
|
|
execute ":" . a:range . "s/" . key . "/" . value . "/g"
|
|
endfor
|
|
endfunction
|
|
|
|
function! Signcolumn_toggle()
|
|
if &signcolumn == 'no'
|
|
set signcolumn=yes
|
|
elseif &signcolumn == 'yes'
|
|
set signcolumn=no
|
|
endif
|
|
endfunction
|
|
|
|
function! Drawit_toggle()
|
|
if !exists("s:drawit_boolean")
|
|
let s:drawit_boolean = 0
|
|
endif
|
|
if s:drawit_boolean
|
|
DIstop
|
|
let s:drawit_boolean = 0
|
|
else
|
|
DIstart
|
|
let s:drawit_boolean = 1
|
|
endif
|
|
endfunction
|
|
|
|
let s:programming_mode_boolean = 0
|
|
function! Programming_mode_toggle()
|
|
if !s:programming_mode_boolean
|
|
let s:programming_mode_boolean = 1
|
|
|
|
set completeopt=menu,menuone,noselect
|
|
augroup ProgrammingModeGroup
|
|
autocmd InsertCharPre * call timer_start(100, {->pumvisible() ? '' : feedkeys("\<C-n>", 'n')})
|
|
augroup END
|
|
else
|
|
let s:programming_mode_boolean = 0
|
|
|
|
augroup ProgrammingModeGroup
|
|
autocmd!
|
|
augroup END
|
|
endif
|
|
endfunction
|
|
autocmd BufReadPost,BufNewFile *
|
|
\ if line2byte(1000) > 0 || &filetype ==# 'cpp' |
|
|
\ let s:programming_mode_boolean = 1 |
|
|
\ call Programming_mode_toggle() |
|
|
\ elseif !s:programming_mode_boolean |
|
|
\ call Programming_mode_toggle() |
|
|
\ endif
|
|
|
|
function! Spell_toggle()
|
|
if !exists("s:spell_boolean")
|
|
let s:spell_boolean = 0
|
|
endif
|
|
if s:spell_boolean
|
|
set nospell
|
|
let s:spell_boolean = 0
|
|
else
|
|
set spell spelllang=en_us
|
|
let s:spell_boolean = 1
|
|
endif
|
|
endfunction
|
|
|
|
function! Decancer()
|
|
:%s/\n\W*{/ {/
|
|
:%s/public /public\n/
|
|
:%s/override /override\n/
|
|
:%s/static /static\n/
|
|
endfunction
|
|
|
|
function! GitBlame()
|
|
let l:filename = expand('%')
|
|
let l:line_number = line('.')
|
|
execute 'silent !git blame -L ' . l:line_number . ',' . l:line_number . ' ' . l:filename
|
|
redraw!
|
|
endfunction
|
|
|
|
" --------------
|
|
" ### REMAPS ###
|
|
" --------------
|
|
" Diff_mode:
|
|
if &diff
|
|
map <C-p> :diffput<CR>
|
|
map <C-n> :diffget<CR>
|
|
endif
|
|
|
|
" Complete_on_tab:
|
|
inoremap <expr> <TAB> pumvisible() ? "<C-y>" : "<TAB>"
|
|
inoremap <expr> <CR> pumvisible() ? "\<C-g>u\<CR>" : "\<C-g>u\<CR>"
|
|
inoremap <expr> <C-j> pumvisible() ? "\<C-N>" : "<C-j>"
|
|
inoremap <expr> <C-k> pumvisible() ? "\<C-P>" : "<C-k>"
|
|
inoremap <S-Tab> <C-N>
|
|
|
|
" Function_keys:
|
|
" ### Visibility island
|
|
" F1: toggle whitespace visibility
|
|
map <F1> :set invlist<CR>
|
|
" F2: toggle visible line numbers
|
|
map <F2> :set nu!<CR>
|
|
" F3: toggle sign column
|
|
map <F3> :call Signcolumn_toggle()<CR>
|
|
" F4: unhighligh highlighted text
|
|
map <F4> :noh<CR>
|
|
|
|
" ### Feature island
|
|
" F5: Display Turbo Menu
|
|
map <F5> :call quickui#menu#open()<CR>
|
|
" F6: compile with bake
|
|
map <f6> :!bake %:p<CR>
|
|
" F7:
|
|
" NOTHING YET
|
|
" F8
|
|
" NOTHING YET
|
|
|
|
" ### Call once in a while island
|
|
" F9: copy file contents to clipboard
|
|
map <F9> miggVG"+y'izz
|
|
" F10:
|
|
noremap <F10> <Nop>
|
|
" F11:
|
|
noremap <F11> <Nop>
|
|
" F12: reload file
|
|
map <F12> :e!<CR>
|
|
"noremap <F12> <Nop>
|
|
|
|
" Tagbar_plugin:
|
|
nmap <C-W>m :TagbarToggle<CR>
|
|
|
|
" Misc:
|
|
nnoremap gb :call GitBlame()<CR>
|
|
|
|
"------------------
|
|
" ### VARIABLES ###
|
|
"------------------
|
|
let g:hitags_events = ["BufWrite"]
|
|
let g:sigs_events = ["BufWrite"]
|
|
|
|
let g:errtags_events = ["BufEnter", "BufWrite"]
|
|
|
|
" -------------
|
|
" ### NETRW ###
|
|
" -------------
|
|
let g:netrw_keepdir = 0
|
|
let g:netrw_banner = 0
|
|
"let g:netrw_browse_split = 2
|
|
let g:netrw_liststyle = 3
|
|
|
|
" ---------------
|
|
" ### QUICKUI ###
|
|
" ---------------
|
|
call quickui#menu#install('&Edit', [
|
|
\ [ '&Drawit', ':call Drawit_toggle()'],
|
|
\ [ '&Expandtab', ':set expandtab!'],
|
|
\ [ '&Brace unf*', ':%s/\n\s*{/ {/g'],
|
|
\ ])
|
|
call quickui#menu#install('&View', [
|
|
\ [ '&Spell', ':call Spell_toggle()'],
|
|
\ [ '&Netrw', ':Lex'],
|
|
\ [ '&Diff', ':diffthis'],
|
|
\ ])
|
|
call quickui#menu#install('&Modify', [
|
|
\ [ '&Remove trailing', ':%s/\s\+$//g'],
|
|
\ [ '&Retab', ':retab!'],
|
|
\ [ 'De&cancer', ':call Decancer()'],
|
|
\ ])
|
|
call quickui#menu#install('&Development', [
|
|
\ [ '&Ascii Escape', ':ShowEscapeDictionary'],
|
|
\ [ '&Make special', ':ShowMakeDictionary'],
|
|
\ [ '&Symbol map', ':TagbarToggle', '<C-W>m'],
|
|
\ [ '&Completion', ':call Programming_mode_toggle()'],
|
|
\ ])
|
|
|
|
" ------------
|
|
" ### TMUX ###
|
|
" ------------
|
|
function! Fname()
|
|
if expand("%:t") != ""
|
|
return expand("%:t")
|
|
else
|
|
return "vim"
|
|
endif
|
|
endfunction
|
|
|
|
if exists('$TMUX')
|
|
autocmd BufEnter * call system('tmux rename-window ' . Fname())
|
|
autocmd VimLeave * call system('sh -c "sleep 1 && tmux setw automatic-rename" & disown')
|
|
autocmd BufEnter * let &titlestring = expand("%:t")
|
|
"set title " already called
|
|
endif
|
|
|
|
" ------------------
|
|
|
|
|
|
set formatoptions-=cro
|
|
|
|
" TEMP:
|
|
highlight DiffChange ctermbg=3
|
|
|
|
" AI notes:
|
|
" <C-W>v<C-W>l
|
|
" :new
|
|
" :windo diffthis
|