【问题标题】:Run a vim script written in python?运行用python编写的vim脚本?
【发布时间】:2012-10-17 07:39:11
【问题描述】:

这是参考Paul Biggar写的accepted answer here

在考虑了所有这些选项一段时间后,我决定采用以下解决方案。

使用橡胶信息从日志文件中获取错误和警告。上面的脚本将日志文件保存在 t.log 中。在 vim 中:

 autocmd FileType tex set makeprg=rubber-info\ t.log
 autocmd FileType tex set errorformat=%f:%l:\ %m

我想执行 his github script 以“持续构建 [LaTeX 文件],同时刷新 pdf。”鉴于他没有完全提供如何运行它的说明,我认为这是一个相当简单的过程。但是,我对vim很陌生,对编程/github一般知之甚少,所以我真的不知道如何开始。

我搜索了高低,并且取得了零进展。我不确定代码是否应该在 python 中编译,然后作为脚本运行,或者类似的东西。感谢您的帮助!

编辑: 根据 cmets 的讨论,我已成功使脚本可执行。但是我还是不知道怎么运行..?

【问题讨论】:

  • 你试过什么?假设您使脚本可执行并考虑第 48 行读取“filename = sys.argv[1]”,一个简单的“/path/to/texbuild 文件名”就足够了
  • 嗯,这很可能是问题所在;我不知道你刚才说什么! :) 我是初学者,所以我不知道如何做这两者中的任何一个(我假设使脚本可执行只是意味着将它放在某个“正确”的文件夹中?和一个“/path/to/texbuild 文件名" 会是某种类型的autocmd 写入我的vimrc 文件吗?)
  • 如果您在 Linux 上,您可以使用 "chmod u+x /path/to/texbuild" 使脚本可执行。然后将目标文件(您在 vim 中编辑的文件)作为参数运行它。
  • 啊,在 Windows 7 中有没有等效的方法?编辑:没关系,docs.python.org/faq/… 为该问题提供了必要的说明。
  • 好的,既然我已经使脚本可执行(按照上面的说明),我如何“以目标文件作为参数运行[脚本]”?有没有一些 vim 命令可以做到这一点?

标签: vim compiler-construction


【解决方案1】:

#!/usr/bin/env python

脚本顶部的状态以及正文中没有import vim 清楚地表明它应该使用从shell(或从vim)运行

chmod +x /path/to/texbuild # Needed only once
/path/to/texbuild {script-args}

。进一步探索表明,它希望将一个 tex 文件作为其第一个也是唯一的参数(唯一提到 sys.argv 的地方是 line 48),因此您可能应该使用以下命令来运行它:

augroup AutorunTexbuild
    autocmd!
    autocmd FileType tex :if !exists('b:runtexbuild') | call system('/path/to/texbuild '.shellescape(@%)) | let b:runtexbuild=1 | endif
    autocmd VimLeave * :call system('killall -TERM texbuild')
augroup END

。这假设您一次只在一个 vim 实例中编辑 tex 文件。看起来作者希望您手动运行该脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-11
    • 2017-06-17
    • 2018-03-16
    • 1970-01-01
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多