从现有的gvim shell中运行命令(Running command in existing sh

2019-10-17 04:05发布

这一切都始于从shell。 比如我使用urxvtzsh 。 在那里,我打开一些文件gvim 。 在这种情况下,它是一个LaTeX文件。 现在我需要执行一些指令(编译文件,如pdflatex )。

我怎么能有原来的壳,从那里gvim启动,执行此命令?

这也将是可以接受的,如果gvim不得不一次打开一个新的外壳,之后执行的每一个未来的指定命令的调用( pdflatex在壳),而我仍然可以在其手动输入。

与运行问题:!pdflatex直接是,该输出显示,但如果它已经变得太长时间滚动是不可能的,以后我按回车键,它都走了。

与使用shell的想法意味着,窗口焦点并不在默认情况下进行切换。 所以一般我的命令的输出是可见的,但除非发生错误,就可以一直在工作gvim 。 现在,如果一个新的外壳是催生每次我运行该命令,这种工作流程肯定是不可能的。

Answer 1:

GVIM不保留一个“把手”来启动它的方式,允许其将命令发送回它的外壳。 因为他们同步执行的,你也可以不启动从GVIM壳,一直饲养它的命令,同时继续在GVIM工作。

恐怕你必须使用你的窗口管理器的功能,以启动(再后来重新激活)shell窗口,并发送命令,击键它。 在Windows中,这可以通过完成(在VBScript EG) WshShellRun() AppActivate()SendKeys()方法; 也有可能是在Linux上窗口控件类似的机制了。

如果你不介意你的GVIM 内部的壳(仿真,其所有的缺点),不过,也有插件,使这一点。



Answer 2:

您可能需要使用Conque 。 它也有缺点(可以是缓慢的,不那么频繁更新等),但至少它为你工作的期望。



Answer 3:

Vim的维基作为这个配方,我认为这将完全删除了一个外部的外壳需要解决您的问题。 这是,在情况下,源熄灭:

let b:tex_flavor = 'pdflatex'
compiler tex
set makeprg=pdflatex\ \-file\-line\-error\ \-interaction=nonstopmode
set errorformat=%f:%l:\ %m

基本上,你使用:make编译和quickfix窗口( :copen )列出的错误。



Answer 4:

你可以通过调用运行在vim shell命令!command

对于运行pdflatex您的特定用途的情况下,我增加了以下快捷方式在我/etc/vimrc

:nmap <F5> :w<CR>:make<CR>

:make将调用GNU使得在当前目录,这将最终调用pdflatex 。 这是非常灵活的,因为相同的快捷方式将取决于你所在的目录做不同的事情(如果你是用C语言编码,它通常会调用gcc )。 但是你必须要熟练用make :)。

因此,按F5节省了我的文件和编译它,现在我节省打字多岁小时:)。



文章来源: Running command in existing shell from gvim