首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用latexmk后如何通过vim命令关闭cmd窗口?

使用latexmk后如何通过vim命令关闭cmd窗口?
EN

Stack Overflow用户
提问于 2019-09-05 11:15:32
回答 1查看 76关注 0票数 0

我是vim新手,我正在用它来输入我的latex文档。我在Windows上工作,并在我的vimrc文件中定义了这个映射:

代码语言:javascript
复制
autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf -pv %<CR> 

运行latexmk时,它会打开一个cmd窗口,然后打开PDF查看器窗口。但是,它不会关闭cmd窗口,然后我必须通过按任意键来关闭该窗口。有没有办法定义我的地图,使它关闭命令行并打开我的PDF?我想像这样的东西

代码语言:javascript
复制
autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf %<CR> \| !latexmk -pv %<CR>

可能行得通,但事实证明它不行。

EN

回答 1

Stack Overflow用户

发布于 2019-09-06 02:30:57

您可以尝试:

代码语言:javascript
复制
autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf -pv %<CR> \| call feedkeys(' ')<CR>

feedkeys()模拟按下给定键,在出现空格键时,应为您关闭命令消息。

其他建议

由于你是Vim的新手,我想分享一些额外的建议来改进你的上述代码,你可能会感兴趣:

  • 您可以将<buffer>参数添加到映射中:

autocmd FileType tex inoremap,lc .

它将只为latex缓冲区映射您的快捷键。如果没有它,一旦latex文件被加载,每个缓冲区和窗口都会解释你的映射,我猜这不是你想要的。

  • 你可以创建一个专用的函数来执行你想要的工作:它将提高可读性并使其更容易修改。实际上,你的自动命令行读起来会变得很长,如果你想添加更多的特性,它可能会更长。

因此,您可以将您的代码转换为如下所示:

autocmd FileType tex inoremap,lc :call MakeLatex() function MakeLatex() w!!latexmk -pdf -pv % call feedkeys(‘') endf

  • 根据您希望映射的确切行为,您可以在映射中将<esc>替换为<c-o>

这样,在键入快捷键后,您可以停留在插入模式:

,lc :调用MakeLatex()

  • The最后一件要改进的事情(imho)是将所有这些放入一个单独的FileType文件中。通过这种方式,您可以分离出仅用于Latex文件的功能,并使添加更多基于文件类型的功能变得更容易。

为此,转到您的vim主目录(它应该类似于Windows上的~/.vim~/vimfiles )并创建文件<YOUR_VIM_DIR>/ftplugin/tex.vim;每次您想要编辑latex文件时都会加载该文件,而不需要任何autocmd FileType tex。然后将以下代码放入此文件中:

inoremap,lc :MakeLatex命令!-buffer MakeLatex调用s:make_latex()函数s:make_latex() w!!latexmk -pdf -pv % call feedkeys(‘') endf

与上面的版本相比,它是一个略微改进的版本,因为现在,所有内容都是缓冲区或脚本的本地内容。在以前的版本中,MakeLatex()函数的作用域对于Vim是全局的,而在Latex文件之外不需要它。在此版本中,s:make_latex()是脚本的本地命令,而MakeLatex命令是缓冲区的本地命令,因此命令/函数的范围实际上仅限于Latex文件。

希望这可以是有用的,快乐的this;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57797971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档