From e64b581865b0f78c78824285fa5e752b989d85dc Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 12 Aug 2016 23:13:03 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=BE=D0=BC=D0=BE=D1=89=D0=BD=D0=B8=D0=BA?= =?utf8?q?=20=D0=B2=20=D0=B2=D1=81=D1=82=D0=B0=D0=B2=D0=BA=D0=B5=20import-?= =?utf8?q?=D0=BE=D0=B2=20=D0=B2=20Python=20=D0=BA=D0=BE=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Написал небольшого помощника для вставки 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 из-за скорости и экономии процессов. -- 2.50.0