414 lines
9.2 KiB
VimL
414 lines
9.2 KiB
VimL
|
""""""""""""""""""""""
|
|||
|
" __ _____ __ __ "
|
|||
|
" \ \ / /_ _| \/ | "
|
|||
|
" \ V / | || |\/| | "
|
|||
|
" \_/ |___|_| |_| "
|
|||
|
" "
|
|||
|
""""""""""""""""""""""
|
|||
|
set nocp
|
|||
|
|
|||
|
set tsr+=~/.vim/thesaurus/thesaurus-vim-en
|
|||
|
set dict+=/usr/share/dict/words
|
|||
|
|
|||
|
" Save-vvvvv vvvv-with root v- To original file
|
|||
|
cnoremap w!! execute 'silent! write !sudo /usr/bin/tee % >/dev/null' <bar> edit!
|
|||
|
" Ignoring buffer warning ^^^^^^^^^^^
|
|||
|
|
|||
|
nnoremap <C-C> "+yy
|
|||
|
vnoremap <C-C> "+y
|
|||
|
|
|||
|
nnoremap <Leader>b :ls<CR>:b<Space>
|
|||
|
|
|||
|
set splitbelow
|
|||
|
set splitright
|
|||
|
|
|||
|
nnoremap <Space>j 10j
|
|||
|
nnoremap <Space>k 10k
|
|||
|
|
|||
|
nnoremap :W<CR> :w<CR>
|
|||
|
nnoremap z* *zz
|
|||
|
nnoremap z# #zz
|
|||
|
nnoremap Z* *zz
|
|||
|
nnoremap Z# #zz
|
|||
|
nnoremap zn nzz
|
|||
|
nnoremap zN Nzz
|
|||
|
nnoremap ZN Nzz
|
|||
|
nnoremap z[ [[zz
|
|||
|
nnoremap z] ]]zz
|
|||
|
|
|||
|
" Use 4 spaces
|
|||
|
set tabstop=8
|
|||
|
set softtabstop=0
|
|||
|
set expandtab
|
|||
|
set shiftwidth=8
|
|||
|
set smarttab
|
|||
|
set conceallevel=0
|
|||
|
" Except for makefiles
|
|||
|
autocmd FileType make setlocal noexpandtab
|
|||
|
|
|||
|
" Search up to ~ for tags file
|
|||
|
set tags=./tags;/
|
|||
|
|
|||
|
" setl spell
|
|||
|
|
|||
|
inoremap <C-J> <C-X><C-N>
|
|||
|
|
|||
|
" adjust a missed delete
|
|||
|
nnoremap du ujdd
|
|||
|
|
|||
|
onoremap ~a ta~
|
|||
|
onoremap ~b tb~
|
|||
|
onoremap ~c tc~
|
|||
|
onoremap ~d td~
|
|||
|
onoremap ~e te~
|
|||
|
onoremap ~f tf~
|
|||
|
onoremap ~g tg~
|
|||
|
onoremap ~h th~
|
|||
|
onoremap ~i ti~
|
|||
|
onoremap ~j tj~
|
|||
|
onoremap ~k tk~
|
|||
|
onoremap ~l tl~
|
|||
|
onoremap ~m tm~
|
|||
|
onoremap ~n tn~
|
|||
|
onoremap ~o to~
|
|||
|
onoremap ~p tp~
|
|||
|
onoremap ~q tq~
|
|||
|
onoremap ~r tr~
|
|||
|
onoremap ~s ts~
|
|||
|
onoremap ~t tt~
|
|||
|
onoremap ~u tu~
|
|||
|
onoremap ~v tv~
|
|||
|
onoremap ~w tw~
|
|||
|
onoremap ~x tx~
|
|||
|
onoremap ~y ty~
|
|||
|
onoremap ~z tz~
|
|||
|
|
|||
|
" Line numbers
|
|||
|
set number
|
|||
|
set relativenumber
|
|||
|
|
|||
|
set ignorecase
|
|||
|
set smartcase
|
|||
|
|
|||
|
set autoindent
|
|||
|
set smartindent
|
|||
|
|
|||
|
colorscheme desert
|
|||
|
|
|||
|
inoremap jj <Esc>l
|
|||
|
|
|||
|
" Add ; to end of line
|
|||
|
nnoremap :: m`A;<Esc>``
|
|||
|
|
|||
|
" Put above line at end of current line
|
|||
|
nnoremap K kddpkJ:s-//-//<-<CR>
|
|||
|
|
|||
|
nnoremap <. :s/ //<CR>
|
|||
|
nnoremap >. :s/\s\+$//e<CR>:s/.*\zs / /<CR>
|
|||
|
|
|||
|
nnoremap <C-I> ^
|
|||
|
nnoremap U ~
|
|||
|
|
|||
|
" Paste last yank (not delete))
|
|||
|
nnoremap "p "0p
|
|||
|
|
|||
|
" Window jumps
|
|||
|
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>
|
|||
|
|
|||
|
" inoremap <C-J> <Esc><C-W><C-J>
|
|||
|
" inoremap <C-K> <Esc><C-W><C-K>
|
|||
|
" inoremap <C-L> <Esc><C-W><C-L>
|
|||
|
" inoremap <C-H> <Esc><C-W><C-H>
|
|||
|
|
|||
|
inoremap <C-D> <C-X><C-K>
|
|||
|
|
|||
|
nnoremap ! :!
|
|||
|
|
|||
|
" Map directions to end/beginning of lines
|
|||
|
nnoremap yl y$
|
|||
|
nnoremap yh y^
|
|||
|
nnoremap dl d$
|
|||
|
nnoremap dh d^
|
|||
|
|
|||
|
" <C-P> will replace text after the cursor with unnamed reg contents
|
|||
|
nnoremap <C-P> m`v$hp``y$
|
|||
|
|
|||
|
set foldmethod=syntax
|
|||
|
set foldlevelstart=5
|
|||
|
|
|||
|
" PLUGINS "
|
|||
|
let g:NERDSpaceDelims = 1
|
|||
|
let g:NERDCompactSexyComs = 1
|
|||
|
|
|||
|
filetype plugin on
|
|||
|
|
|||
|
let IS_QT = !has("python")
|
|||
|
|
|||
|
if IS_QT " For Qt Creator, etc., use C hardcode
|
|||
|
nnoremap // m`I//<Esc>``:s-////--<Cr>
|
|||
|
nnoremap <Leader>te :stopprog<CR>:runprog<CR>
|
|||
|
else " Use plugin when in normal vim
|
|||
|
nnoremap // :call NERDComment(0,"toggle")<CR>
|
|||
|
nnoremap <Leader>te :w<CR>:!clear && cargo test<CR>
|
|||
|
" nnoremap w :call AfterUnderscore()<CR>
|
|||
|
nnoremap W :silent! call JumpCase("go")<CR>
|
|||
|
nnoremap gd lb:call Follow()<CR>
|
|||
|
endif
|
|||
|
|
|||
|
" Generate and display a printable version
|
|||
|
nnoremap <Leader>PP :ha > ~/.vim.ps<CR>:!xdg-open ~/.vim.ps<CR>
|
|||
|
vnoremap <Leader>PP :ha > ~/.vim.ps<CR>:!xdg-open ~/.vim.ps<CR>
|
|||
|
|
|||
|
nnoremap <Leader>p :call Build()<CR>
|
|||
|
nnoremap <Leader>R :call Run()<CR>
|
|||
|
|
|||
|
autocmd FileType vim ab nre nnoremap
|
|||
|
autocmd FileType vim ab ire inoremap
|
|||
|
|
|||
|
iab ruetn return
|
|||
|
iab reteun return
|
|||
|
iab reutner return
|
|||
|
|
|||
|
" Display last 5 lines of clisp output
|
|||
|
autocmd FileType lisp call SetUpBuild()
|
|||
|
autocmd FileType python call SetUpBuild()
|
|||
|
autocmd FileType ruby call SetUpBuild()
|
|||
|
|
|||
|
" Display last 5 lines of python output
|
|||
|
|
|||
|
function! SetUpBuild()
|
|||
|
let &cmdheight=10
|
|||
|
setl updatetime=400
|
|||
|
autocmd CursorHold * call Build()
|
|||
|
endfunction
|
|||
|
|
|||
|
function! LispBuild()
|
|||
|
redraw!
|
|||
|
silent write! /tmp/lisp.lisp
|
|||
|
echo system("clisp /tmp/lisp.lisp | tail -n 5")
|
|||
|
endfunction
|
|||
|
|
|||
|
function! PyBuild()
|
|||
|
redraw!
|
|||
|
silent write! /tmp/py.py
|
|||
|
echo system("python3 /tmp/py.py | tail -n 5")
|
|||
|
endfunction
|
|||
|
|
|||
|
function! RubyBuild()
|
|||
|
redraw!
|
|||
|
silent write! /tmp/rb.rb
|
|||
|
echo system("ruby /tmp/rb.rb | tail -n 5")
|
|||
|
endfunction
|
|||
|
|
|||
|
function! CBuild()
|
|||
|
redraw!
|
|||
|
if(filereadable(expand("%:h/makefile")))
|
|||
|
!make
|
|||
|
else
|
|||
|
silent write!
|
|||
|
silent !gcc %
|
|||
|
endif
|
|||
|
endfunction
|
|||
|
|
|||
|
function! Build()
|
|||
|
if(&ft=='lisp')
|
|||
|
call LispBuild()
|
|||
|
elseif(&ft=='ruby')
|
|||
|
call RubyBuild()
|
|||
|
elseif(&ft=='python')
|
|||
|
call PyBuild()
|
|||
|
elseif(&ft=='c')
|
|||
|
call CBuild()
|
|||
|
elseif(expand("%:p") =~ "banana_pi_kernel")
|
|||
|
setl updatetime=100000 " 100 seconds
|
|||
|
silent !/home/cprtools/.screen_build.sh
|
|||
|
endif
|
|||
|
|
|||
|
endfunction
|
|||
|
|
|||
|
function! Run()
|
|||
|
if(expand("%:p") =~ "banana_pi_kernel")
|
|||
|
silent !/home/cprtools/.screen_update.sh
|
|||
|
elseif(&ft=='c')
|
|||
|
call Build()
|
|||
|
!./a.out
|
|||
|
endif
|
|||
|
endfunction
|
|||
|
|
|||
|
nnoremap <Leader>/ I/**<CR>
|
|||
|
|
|||
|
nnoremap cw ciw
|
|||
|
nnoremap ciw cw
|
|||
|
"
|
|||
|
" Swap current word with next
|
|||
|
" nnoremap gs dawwP
|
|||
|
nnoremap gs "xdiwdwep"xp
|
|||
|
" Inverted
|
|||
|
nnoremap gb dawbP
|
|||
|
|
|||
|
noremap <C-,> ,
|
|||
|
noremap <C-;> ,
|
|||
|
|
|||
|
" Git without needing '!'
|
|||
|
cnoreabbrev git !git
|
|||
|
cnoreabbrev grepr !grepr
|
|||
|
|
|||
|
nnoremap <Leader>gd :!git diff %<CR>
|
|||
|
nnoremap <Leader>gD :!git diff<CR>
|
|||
|
nnoremap <Leader>gB :!git blame %<CR>
|
|||
|
nnoremap <Leader>gc :!git commit -m ""<Left>
|
|||
|
nnoremap <Leader>gh :!git --help<CR>
|
|||
|
nnoremap <Leader>gl :!git log<CR>
|
|||
|
nnoremap <Leader>gp :!git push<CR>
|
|||
|
nnoremap <Leader>gu :!git add -u<CR>
|
|||
|
nnoremap <Leader>ga :!git add %<CR>
|
|||
|
|
|||
|
nnoremap <Leader>r :source ~/.vimrc<CR>
|
|||
|
nnoremap <Leader>v :tabedit~/.vimrc<CR>
|
|||
|
nnoremap <Leader>n :tabedit~/.notes<CR>
|
|||
|
|
|||
|
"" Add back-Ticks to outside of current word
|
|||
|
" nnoremap gt bi`<Esc>ea`<Esc>
|
|||
|
|
|||
|
set expandtab
|
|||
|
set tabstop=4
|
|||
|
|
|||
|
autocmd BufNewFile,BufRead * if expand('%:t') !~ '\.' | setl spell | endif
|
|||
|
"
|
|||
|
" inoremap AA <Esc>A
|
|||
|
" inoremap II <Esc>I
|
|||
|
" inoremap OO <Esc>O
|
|||
|
"
|
|||
|
" inoremap SS <Esc>S
|
|||
|
" inoremap UU <Esc>u
|
|||
|
" inoremap DD <Esc>dd
|
|||
|
|
|||
|
" nnoremap Oj O<Esc>j
|
|||
|
" nnoremap OJ O<Esc>j
|
|||
|
" nnoremap ok o<Esc>k
|
|||
|
|
|||
|
highlight Conceal term=bold cterm=bold ctermfg=white ctermbg=NONE
|
|||
|
|
|||
|
highlight OverLengthC ctermbg=black ctermfg=red guibg=#592929
|
|||
|
match OverLengthC /\%81v.\+/
|
|||
|
|
|||
|
syntax match concConc ".\{-}m" conceal cchar=#
|
|||
|
syntax match concConc "#\[.\{-}\]" conceal cchar=#
|
|||
|
" hi link Conceal concConc
|
|||
|
|
|||
|
" Expand %% to the current files dir
|
|||
|
cabbr <expr> %% expand('%:p:h')
|
|||
|
|
|||
|
cnoreabbrev vimc tabedit ~/.vimrc
|
|||
|
cnoreabbrev cargo !cargo
|
|||
|
|
|||
|
" Try to add an arrow around the right and bottom of the visual selection
|
|||
|
vnoremap <C-L> $A \|<Esc>gv<Esc>yyp:s/./_/g<CR>:s/^_/\|/<CR>:s/_$/\|/<CR>o\|<Esc>oV<Esc>o<Esc>
|
|||
|
|
|||
|
" Skeletons "
|
|||
|
if has ("autocmd")
|
|||
|
augroup templates
|
|||
|
autocmd BufNewFile *.cpp 0r ~/.vim/templates/skeleton.cpp
|
|||
|
autocmd BufNewFile *.c 0r ~/.vim/templates/skeleton.c
|
|||
|
autocmd BufNewFile *.sh 0r ~/.vim/templates/skeleton.sh
|
|||
|
autocmd BufNewFile *.lisp 0r ~/.vim/templates/skeleton.lisp
|
|||
|
autocmd BufNewFile *.py 0r ~/.vim/templates/skeleton.py
|
|||
|
autocmd BufNewFile *.rb 0r ~/.vim/templates/skeleton.rb
|
|||
|
autocmd BufNewFile makefile 0r ~/.vim/templates/makefile
|
|||
|
augroup END
|
|||
|
endif
|
|||
|
|
|||
|
autocmd BufWrite .notes call SubColors()
|
|||
|
autocmd BufRead .notes set conceallevel=3
|
|||
|
autocmd BufRead .notes match OverLengthC /\%981v.\+/
|
|||
|
|
|||
|
function! SubColors()
|
|||
|
silent! %s/#\[black\]/\[30m/g
|
|||
|
silent! %s/#\[red\]/\[31m/g
|
|||
|
silent! %s/#\[green\]/\[32m/g
|
|||
|
silent! %s/#\[yellow\]/\[33m/g
|
|||
|
silent! %s/#\[yel\]/\[33m/g
|
|||
|
silent! %s/#\[blue\]/\[34m/g
|
|||
|
silent! %s/#\[magenta\]/\[35;1m/g
|
|||
|
silent! %s/#\[mag\]/\[35m/g
|
|||
|
|
|||
|
silent! %s/#\[reset\]/\[0m/g
|
|||
|
silent! %s/#\[u\]/\[4m/g
|
|||
|
silent! %s/#\[und\]/\[4m/g
|
|||
|
silent! %s/#\[underline\]/\[4m/g
|
|||
|
endfunction
|
|||
|
|
|||
|
function! ExMac()
|
|||
|
let l:macro_file_name = "__macroexpand__" . tabpagenr()
|
|||
|
let l:file_name = expand("%")
|
|||
|
" Create mark
|
|||
|
execute "normal! Oint " . l:macro_file_name . ";"
|
|||
|
execute "w"
|
|||
|
let buffbuff = system("gcc -E " . l:file_name . " | grep "
|
|||
|
\ . l:macro_file_name . " | sed 's/int __macroexpand__...//'")
|
|||
|
execute "normal!u"
|
|||
|
execute "w"
|
|||
|
echo buffbuff
|
|||
|
endfunction
|
|||
|
|
|||
|
|
|||
|
" w (and only w) will not skip past underscores
|
|||
|
function! AfterUnderscore()
|
|||
|
set iskeyword=@,48-57,#
|
|||
|
execute "normal! w"
|
|||
|
if getline('.')[col('.')-1] == '_'
|
|||
|
execute "normal! l"
|
|||
|
endif
|
|||
|
set iskeyword=@,48-57,_,192-255,#
|
|||
|
endfunction
|
|||
|
|
|||
|
function! Follow()
|
|||
|
let save_pos = getpos(".")
|
|||
|
let l:char = getline('.')[col('.')-1]
|
|||
|
execute "normal! gd"
|
|||
|
if getpos(".") == save_pos && l:char == getline('.')[col('.')-1]
|
|||
|
execute "normal! "
|
|||
|
endif
|
|||
|
endfunction
|
|||
|
|
|||
|
" W jumps to the next capitalized letter
|
|||
|
function! JumpCase(del)
|
|||
|
set noignorecase
|
|||
|
let l:char = getline('.')[col('.')-1]
|
|||
|
|
|||
|
while l:char == toupper(l:char)
|
|||
|
let l:col = col('.')
|
|||
|
execute "normal! l"
|
|||
|
let l:char = getline('.')[col('.')-1]
|
|||
|
if l:col == col('.')
|
|||
|
execute "normal! j^"
|
|||
|
if l:col == col('.')
|
|||
|
break
|
|||
|
endif
|
|||
|
endif
|
|||
|
endwhile
|
|||
|
|
|||
|
while l:char != toupper(l:char)
|
|||
|
let l:col = col('.')
|
|||
|
execute "normal! l"
|
|||
|
let l:char = getline('.')[col('.')-1]
|
|||
|
if l:col == col('.')
|
|||
|
execute "normal! j^"
|
|||
|
if l:col == col('.')
|
|||
|
break
|
|||
|
endif
|
|||
|
else
|
|||
|
if a:del == "del"
|
|||
|
execute "normal! x"
|
|||
|
endif
|
|||
|
endif
|
|||
|
endwhile
|
|||
|
|
|||
|
set ignorecase
|
|||
|
endfunction
|
|||
|
|
|||
|
set backspace=indent,eol ",start
|