From: Sergey Matveev Date: Fri, 12 Aug 2016 20:13:03 +0000 (+0300) Subject: Помощник в вставке import-ов в Python коде X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=e64b581865b0f78c78824285fa5e752b989d85dc;p=stargrave-blog.git Помощник в вставке import-ов в Python коде Написал небольшого помощника для вставки import-ов в Python коде. Например из pyasn1 библиотеки приходится часто импортировать encode/decode функции, ObjectIdentifier объекты. Запоминать, тем более набирать, длинные "from pyasn1.codec.der.encoder import encode # type: ignore" не хочется в принципе. Часто делается grep/git grep с поиском используемого import и его copy-paste в код. Теперь можно просто набрать encode, нажать и в виде меню 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 =ImportCompl() Выбор git grep вместо grep из-за скорости работы (не хочется чтобы было 100мс или больше времени ожидания результата поиска). Выхлоп git grep можно обработать и внутри vimscript, но это сильно больше кода, хотя и экономия целого процесса. Perl вместо sed+uniq+sort+whatever из-за скорости и экономии процессов. ---