19 Jan 2014 21:42:35
Vim autocomplete, template paster extension
Данное расширение позволяет вставлять заготовки кода по хоткеям, также автодополняет кавычки, скобки и преносы фигурных скобок согласно заданному codestyle
" All autocompelte logic defined here.
if exists("g:InterfaceAutocompleteInit")
if (g:InterfaceAutocompleteInit == 1)
finish
endif
endif
let g:InterfaceAutocompleteInit = 1
" Enter \r & spaces by need.
function! CleverBackSpace()
imap <BS> <BS>
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:prevChar = strpart(a:lineContent, (a:pos[2] - 2), 1)
echo a:currentChar
echo a:prevChar
if (a:prevChar == '(' && a:currentChar == ')')
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<DEL>\<BS>"
elseif (a:prevChar == "'" && a:currentChar == "'")
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<DEL>\<BS>"
elseif (a:prevChar == '"' && a:currentChar == '"')
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<DEL>\<BS>"
elseif (a:prevChar == '{' && a:currentChar == '}')
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<DEL>\<BS>"
elseif (a:prevChar == '[' && a:currentChar == ']')
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<DEL>\<BS>"
else
imap <BS> <C-R>=CleverBackSpace()<CR>
return "\<BS>"
endif
endfunction
" Enter \r & spaces by need.
function! CleverEnter()
if exists('g:completionaActivated') && g:completionaActivated == 1
let g:completionaActivated = 0
return "\<CR>"
endif
imap <silent> <CR> <CR>
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
if (a:currentChar == ')' || a:currentChar == ']'
\ || a:currentChar == '}')
imap <silent> <CR> <C-R>=CleverEnter()<CR>
return "\<cr>.\<cr>\<UP>\<DEL>\<SPACE>\<SPACE>"
else
if (a:currentChar == '')
imap <silent> <CR> <C-R>=CleverEnter()<CR>
return "\<right>\<cr>\<right>"
else
imap <silent> <CR> <C-R>=CleverEnter()<CR>
return "\<cr>\<right>"
endif
endif
endfunction
" Provides array insert function
function! ArrayInput()
imap <silent> [ [
" Get next, current & newline chars.
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
let a:isSpace = a:currentChar == " "
let a:nextCharNL = a:nextChar == ""
" Insert characters.
if (and(strlen(a:currentChar) > 0, !a:isSpace))
if (and(a:currentChar != '[', a:currentChar != ']'))
imap <silent> [ <C-R>=ArrayInput()<CR>
return "["
else
imap <silent> [ <C-R>=ArrayInput()<CR>
return "["
endif
elseif (or(a:currentChar == ' ', a:nextCharNL))
imap <silent> [ <C-R>=ArrayInput()<CR>
return "[]\<LEFT>"
endif
endfunction
function! ColumnInput()
imap <silent> ( (
" Get next, current & newline chars.
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
let a:isSpace = a:currentChar == " "
let a:nextCharNL = a:nextChar == ""
" Insert characters.
if (and(strlen(a:currentChar) > 0, !a:isSpace))
if (and(a:currentChar != '(', a:currentChar != ')'))
imap <silent> ( <C-R>=ColumnInput()<CR>
return "("
else
imap <silent> ( <C-R>=ColumnInput()<CR>
return "("
endif
elseif (or(a:currentChar == ' ', a:nextCharNL))
imap <silent> ( <C-R>=ColumnInput()<CR>
return "()\<LEFT>"
endif
endfunction
function! ObjectInput()
imap <silent> { {
" Get next, current & newline chars.
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
let a:isSpace = a:currentChar == " "
let a:nextCharNL = a:nextChar == ""
" Insert characters.
if (and(strlen(a:currentChar) > 0, !a:isSpace))
if (and(a:currentChar != '{', a:currentChar != '}'))
imap <silent> { <C-R>=ObjectInput()<CR>
return "{"
else
imap <silent> { <C-R>=ObjectInput()<CR>
return "{"
endif
elseif (or(a:currentChar == ' ', a:nextCharNL))
imap <silent> { <C-R>=ObjectInput()<CR>
return "{}\<LEFT>"
endif
endfunction
function! QouteInput()
imap <silent> ' '
" Get next, current & newline chars.
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
let a:isSpace = a:currentChar == " "
let a:nextCharNL = a:nextChar == ""
" Insert characters.
if (and(strlen(a:currentChar) > 0, !a:isSpace))
if (a:currentChar == "]" || a:currentChar == ")" || a:currentChar == "}")
imap <silent> ' <C-R>=QouteInput()<CR>
return "''\<LEFT>"
elseif (a:currentChar != "'")
imap <silent> ' <C-R>=QouteInput()<CR>
return "'"
else
imap <silent> ' <C-R>=QouteInput()<CR>
return "'"
endif
elseif (or(a:currentChar == ' ', a:nextCharNL))
imap <silent> ' <C-R>=QouteInput()<CR>
return "''\<LEFT>"
endif
endfunction
function! DQouteInput()
imap <silent> " "
" Get next, current & newline chars.
let a:pos = getpos(".")
let a:lineContent = getline(a:pos[1])
let a:currentChar = strpart(a:lineContent, (a:pos[2] - 1), 1)
let a:nextChar = strpart(a:lineContent, (a:pos[2]), 1)
"let curCharNL = currentChar == ""
let a:isSpace = a:currentChar == " "
let a:nextCharNL = a:nextChar == ""
" Insert characters.
if (and(strlen(a:currentChar) > 0, !a:isSpace))
if (a:currentChar == "]" || a:currentChar == ")" || a:currentChar == "}")
imap <silent> ' <C-R>=QouteInput()<CR>
return "\"\"\<LEFT>"
elseif (a:currentChar != "\"")
imap <silent> " <C-R>=DQouteInput()<CR>
return "\""
else
imap <silent> " <C-R>=DQouteInput()<CR>
return "\""
endif
elseif (or(a:currentChar == " ", a:nextCharNL))
imap <silent> " <C-R>=DQouteInput()<CR>
return "\"\"\<LEFT>"
endif
endfunction
" All window related logic defined here.
if exists("g:InterfaceTempatesInit")
if (g:InterfaceTempatesInit == 1)
finish
endif
endif
let g:InterfaceTempatesInit = 1
function! Php_if()
return "yiWoif \<c-r>=ColumnInput()\<cr>!empty\<c-r>=ColumnInput()\<cr>pA)
\ \<c-r>=ObjectInput()\<cr>\<c-r>=CleverEnter()\<cr>"
endfunction
function! Php_comment()
return "i/**
* Preprocess variables/kb.
*/kukr"
endfunction
function! Php_html_if()
return "i<phpkbkbkb?okbphp if \<c-r>=ColumnInput()\<cr>kr: ?>
<?php enfikbkbdif; ?>klklklklklklkukr"
endfunction
function! Php_tag()
return "i<?php ?>klkl"
endfunction
function! Php_foreach()
return "oforeach \<c-r>=ColumnInput()\<cr>$ as $kr \<c-r>=ObjectInput()
\ \<cr>\<c-r>=CleverEnter()\<cr>kukrkrkrkrkrkrkrkr"
endfunction
if exists("g:InterfaceBindsInit")
if (g:InterfaceBindsInit == 1)
finish
endif
endif
let g:InterfaceBindsInit = 1
"Mappings.
imap <silent> [ <C-R>=ArrayInput()<CR>
imap <silent> ( <C-R>=ColumnInput()<CR>
imap <silent> { <C-R>=ObjectInput()<CR>
imap <silent> ' <C-R>=QouteInput()<CR>
imap <silent> " <C-R>=DQouteInput()<CR>
imap <silent> <CR> <C-R>=CleverEnter()<CR>
imap <BS> <C-R>=CleverBackSpace()<CR>
nmap 8t @=Php_foreach()<CR>
nmap 8p @=Php_tag()<CR>
nmap 8i @=Php_html_if()<CR>
nmap 8I @=Php_if()<CR>
nmap 8c @=Php_comment()<CR>
nnoremap <silent> <Space> :nohlsearch<Bar>:echo<CR>
nmap cp :let @" = expand("%")<CR>
nnoremap <S-F4> :%s/\s\+$//<CR>
nnoremap <S-F3> :!tail -n 30 /var/log/httpd/error.log <CR>
Comments:
PavlikRuban
20 мая 2013 в 20:36
Вот он, вот он! Знаменитый 40-сорокасантиметровый скрипт!
Ты все еще надеешься привлечь им самок?
аноним
22 июл 2013 в 16:12
If your flight is late, the window of time for airport staff to transfer your bag from a single plane for the subsequent narrows. Cheap Ray Ban Sunglasses http://diaryofdaedalus.com/author/panoftheforest/
аноним
30 янв 2014 в 11:46
bhshyqbwfmsvcbo, <a href="http://www.bzlybyvhwt.com/">qkwpwsngjd</a> , [url=http://www.yfjcndxabe.com/]pvymceuowv[/url], http://www.citxnksvsk.com/ qkwpwsngjd