reorganise vim config directory
This commit is contained in:
122
config/vim/functions.vim
Normal file
122
config/vim/functions.vim
Normal file
@@ -0,0 +1,122 @@
|
||||
" Section Functions {{{
|
||||
|
||||
" Window movement shortcuts
|
||||
" move to the window in the direction shown, or create a new window
|
||||
function! WinMove(key)
|
||||
let t:curwin = winnr()
|
||||
exec "wincmd ".a:key
|
||||
if (t:curwin == winnr())
|
||||
if (match(a:key,'[jk]'))
|
||||
wincmd v
|
||||
else
|
||||
wincmd s
|
||||
endif
|
||||
exec "wincmd ".a:key
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" recursively search up from dirname, sourcing all .vimrc.local files along the way
|
||||
function! ApplyLocalSettings(dirname)
|
||||
" convert windows paths to unix style
|
||||
let l:curDir = substitute(a:dirname, '\\', '/', 'g')
|
||||
|
||||
" walk to the top of the dir tree
|
||||
let l:parentDir = strpart(l:curDir, 0, strridx(l:curDir, '/'))
|
||||
if isdirectory(l:parentDir)
|
||||
call ApplyLocalSettings(l:parentDir)
|
||||
endif
|
||||
|
||||
" now walk back down the path and source .vimsettings as you find them.
|
||||
" child directories can inherit from their parents
|
||||
let l:settingsFile = a:dirname . '/.vimrc.local'
|
||||
if filereadable(l:settingsFile)
|
||||
exec ':source' . l:settingsFile
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" smart tab completion
|
||||
function! Smart_TabComplete()
|
||||
let line = getline('.') " current line
|
||||
|
||||
let substr = strpart(line, -1, col('.')+1) " from the start of the current
|
||||
" line to one character right
|
||||
" of the cursor
|
||||
let substr = matchstr(substr, '[^ \t]*$') " word till cursor
|
||||
if (strlen(substr)==0) " nothing to match on empty string
|
||||
return '\<tab>'
|
||||
endif
|
||||
let has_period = match(substr, '\.') != -1 " position of period, if any
|
||||
let has_slash = match(substr, '\/') != -1 " position of slash, if any
|
||||
if (!has_period && !has_slash)
|
||||
return '\<C-X>\<C-P>' " existing text matching
|
||||
elseif ( has_slash )
|
||||
return '\<C-X>\<C-F>' " file matching
|
||||
else
|
||||
return '\<C-X>\<C-O>' " plugin matching
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" execute a custom command
|
||||
function! RunCustomCommand()
|
||||
up
|
||||
if g:silent_custom_command
|
||||
execute 'silent !' . s:customcommand
|
||||
else
|
||||
execute '!' . s:customcommand
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! SetCustomCommand()
|
||||
let s:customcommand = input('Enter Custom Command$ ')
|
||||
endfunction
|
||||
|
||||
function! TrimWhiteSpace()
|
||||
%s/\s\+$//e
|
||||
endfunction
|
||||
|
||||
function! HiInterestingWord(n)
|
||||
" Save our location.
|
||||
normal! mz
|
||||
|
||||
" Yank the current word into the z register.
|
||||
normal! "zyiw
|
||||
|
||||
" Calculate an arbitrary match ID. Hopefully nothing else is using it.
|
||||
let mid = 86750 + a:n
|
||||
|
||||
" Clear existing matches, but don't worry if they don't exist.
|
||||
silent! call matchdelete(mid)
|
||||
|
||||
" Construct a literal pattern that has to match at boundaries.
|
||||
let pat = '\V\<' . escape(@z, '\') . '\>'
|
||||
|
||||
" Actually match the words.
|
||||
call matchadd("InterestingWord" . a:n, pat, 1, mid)
|
||||
|
||||
" Move back to our original location.
|
||||
normal! `z
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <leader>1 :call HiInterestingWord(1)<cr>
|
||||
nnoremap <silent> <leader>2 :call HiInterestingWord(2)<cr>
|
||||
nnoremap <silent> <leader>3 :call HiInterestingWord(3)<cr>
|
||||
nnoremap <silent> <leader>4 :call HiInterestingWord(4)<cr>
|
||||
nnoremap <silent> <leader>5 :call HiInterestingWord(5)<cr>
|
||||
nnoremap <silent> <leader>6 :call HiInterestingWord(6)<cr>
|
||||
|
||||
hi def InterestingWord1 guifg=#000000 ctermfg=16 guibg=#ffa724 ctermbg=214
|
||||
hi def InterestingWord2 guifg=#000000 ctermfg=16 guibg=#aeee00 ctermbg=154
|
||||
hi def InterestingWord3 guifg=#000000 ctermfg=16 guibg=#8cffba ctermbg=121
|
||||
hi def InterestingWord4 guifg=#000000 ctermfg=16 guibg=#b88853 ctermbg=137
|
||||
hi def InterestingWord5 guifg=#000000 ctermfg=16 guibg=#ff9eb8 ctermbg=211
|
||||
hi def InterestingWord6 guifg=#000000 ctermfg=16 guibg=#ff2c4b ctermbg=195
|
||||
|
||||
function! HtmlUnEscape()
|
||||
silent s/</</eg
|
||||
silent s/>/>/eg
|
||||
silent s/&/\&/eg
|
||||
endfunction
|
||||
|
||||
nnoremap <silent> <leader>u :call HtmlUnEscape()<cr>
|
||||
|
||||
" }}}
|
||||
Reference in New Issue
Block a user