Добрый день!
Часто приходится сортировать питоновские списки в виме, например:
a = [
'aaa' , 'XXX', 'tttt','dsgrg', 'sdgsfdg', 'gfdgffg', 'dfgfdgw:swf',
'sdfsdg', 'sdfgsdg', 'sdgsg', 'sdgsfdg' , 'sdgdsg'
]
а получить нужно:
a = [
'aaa', 'dfgfdgw:swf', 'dsgrg', 'gfdgffg', 'sdfgsdg', 'sdfsdg',
'sdgdsg', 'sdgsfdg', 'sdgsfdg', 'sdgsg', 'tttt', 'XXX'
]
т.е. отступ двойной отступ, ширина не больше 80-ти символов
Методом тыка написал скрипт который работает по вим7
Но его наверняка можно упросить и хотелось бы что бы он работал и под
6-м вимом
Есть специалисты?
Сам скрипт:
===================================================
func! StrICmp(str1, str2)
if (a:str1 <? a:str2)
return -1
elseif (a:str1 >? a:str2)
return 1
else
return 0
endif
endfunction
let s:cmpref = function( 'StrICmp' )
fun! PySort()
let ai_revert = 0
let tw_revert = 0
let ignorecase_revert = 0
if ! &autoindent
let ai_revert = 1
set autoindent
endif
if &textwidth == 0
let tw_revert = 1
set textwidth=80
endif
normal! gv"ay
let text = matchstr(@a, '\s*\zs.*\ze\s*')
let list = split(text, '\_s*,\_s*')
call sort(list, s:cmpref)
let @a = join(list, ', ')
normal! gv"ap
normal! >>
normal! >>
normal! gqq
if ai_revert
set noautoindent
endif
if tw_revert
set textwidth=0
endif
endfun
map <C-S> :call PySort()<CR>
===================================================
--
Pavel
PS: Сорри за оффтопик