[О блоге]
[наверх]
[пред]
[2016-08-12 23:13:03+03:00]
[e64b581865b0f78c78824285fa5e752b989d85dc]
Темы: [perl][python][tip][vim]
Помощник в вставке import-ов в Python коде
Написал небольшого помощника для вставки import-ов в Python коде.
Например из pyasn1 библиотеки приходится часто импортировать
encode/decode функции, ObjectIdentifier объекты. Запоминать, тем более
набирать, длинные "from pyasn1.codec.der.encoder import encode # type:
ignore" не хочется в принципе. Часто делается grep/git grep с поиском
используемого import и его copy-paste в код. Теперь можно просто набрать
encode, нажать <F3> и в виде меню completion он покажет все найденные
"from .* encode" строчки.
function! ImportCompl()
normal diw
let output = system('git grep "from .* ' . @" . '" -- "**/*.py" | perl -e "while(<>){s/^.*:\d+://; \$a{\$_}++}; print reverse sort keys %a"')
call complete(col('.'), split(output, "\n"))
return ''
endfunction
autocmd FileType python inoremap <F3> <C-R>=ImportCompl()<CR>
Выбор git grep вместо grep из-за скорости работы (не хочется чтобы было
100мс или больше времени ожидания результата поиска). Выхлоп git grep
можно обработать и внутри vimscript, но это сильно больше кода, хотя и
экономия целого процесса. Perl вместо sed+uniq+sort+whatever из-за
скорости и экономии процессов.
[оставить комментарий]