Vim函数用于在尚未导入Python导入的情况下插入它

时间:2017-07-28 14:46:13

标签: python vim plugins import

我目前有一个Vim函数,它会将所选文本包装在time.time()块中,以便我可以快速计时。

我希望该功能也可以转到文件的顶部,检查import time是否存在,只有在{not}不存在的情况下才插入import time

有没有办法检查Vim中是否存在文本?

1 个答案:

答案 0 :(得分:3)

这就是我现在拥有的。它有效,但如果你有更好的东西,请发布你自己的解决方案!

另请注意,^M的行是通过按Ctrl-V,然后按插入模式中的Enter按钮形成的(Stack Overflow不会将其复制到非常孔)。

" easily wrap the selected text in a time.time() statement for quick timing
fun! s:PythonTiming(line1, line2)

    " mark line one  &&  keep track of lines selected
    execute 'normal!' 'me'
    let l:numDiff = a:line2 - a:line1

    " start timing
    execute 'normal!' 'Ostart = time.time()'

    " end timing
    while line('.') < a:line2 + 1
        execute 'normal!' 'j'
    endwhile
    execute 'normal!' 'oend = time.time()'
    execute 'normal!' 'oprint; print("end - start: "); print(end - start)'

    " add the `import time` statement if not already imported
    let match = search('import time', 'nw')
    if match == 0
        silent! execute 'normal!' 'gg/import/^M'
        execute 'normal!' 'oimport time'
    endif

    " go back to the initial mark
    execute 'normal!' '`e'

endfun
command! -range Time :call s:PythonTiming(<line1>, <line2>)