2

我有两个命令的正常映射,一个用于调用 LaTeX(映射到 F6 键),另一个用于 BiBTeX(F5)。这些工作正如我所期望的那样。而且我有一个功能可以按顺序运行它们,以确保正确插入所有参考和引文。这个函数是这样的:

function FullDocumentGeneration()
  execute "normal \<F6>"
  execute "normal \<F5>"
  execute "normal \<F6>"
  execute "normal \<F6>"
endfunction

这很好用,除了一个细节:运行命令后,会显示一条消息(在 shell 中)说按 Enter 以返回 vim(就像运行 shell 命令时通常一样),但随后执行流程无论如何都会进入 vim - ——不用我按 Enter。这特别烦人,因为我通常想检查程序输出,所以我必须按 Ctrl-Z 才能返回 shell。有没有办法避免这种情况?我在函数中做错了什么?

4

2 回答 2

0

据推测,下一个映射会干扰 hit-enter 提示。尝试插入

call getchar()

在各行之间,可能带有echo "Press any key"前缀。

于 2012-05-17T09:54:38.633 回答
0

当您使用执行时,一旦命令完成,您就会回到之前使用的任何模式。既然你正在编写一个函数来做你想做的事,为什么不在你的调用中将它全部放在一行中,例如:!cmd line 1 && cmd line2 && cmd line3,然后它会立即全部进入 shell。或者,或者,您可以编写一个 shell 脚本来执行您想要的操作,并通过扩展在当前文件上调用它%。例如,我一直在用 rst 和 pdflatex 编写,所以我一直在做以下事情。

:!rst2html.py % latex-files/%.tex && cd latex-files && pdflatex %.tex

%扩展为当前文件名。%:p展开为当前打开文件的绝对路径。

于 2012-05-23T21:41:44.273 回答