繁体   English   中英

使用Latexmk后如何从vim命令关闭cmd窗口?

[英]How to close cmd window from vim command after using latexmk?

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

autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf -pv %<CR> 

运行latexmk时,它将打开一个cmd窗口,然后打开PDF查看器窗口。 但是,它不会关闭cmd窗口,然后我必须通过按任意键关闭该窗口。 有什么方法可以定义我的地图,使其关闭命令行并打开我的PDF? 我想像

autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf %<CR> \| !latexmk -pv %<CR>

可以工作,但事实并非如此。

你可以试试:

autocmd FileType tex inoremap ,lc <Esc>:w! \| !latexmk -pdf -pv %<CR> \| call feedkeys(' ')<CR>

feedkeys()模拟给定键的按下, feedkeys()是按空格键,它会为您关闭命令消息。


其他建议

当您刚接触Vim时,我可能会分享一些其他建议以改善您的上述代码,您可能会对这些建议感兴趣:

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

     autocmd FileType tex inoremap <buffer> ,lc ... 

    它将映射您shortkey 只有乳胶缓冲区。 没有它,一旦加载了乳胶文件,每个缓冲区和窗口都会解释您的映射,这不是您想要的。

  • 您可以创建专用功能来执行所需的工作:它将提高可读性并使其更易于修改。 确实,您的自动命令行正变得很长,以供阅读,如果您想添加更多功能,可能会更长。

    因此,您可以将代码转换为如下形式:

     autocmd FileType tex inoremap <buffer> ,lc <Esc>:call MakeLatex()<CR> function MakeLatex() w! !latexmk -pdf -pv % call feedkeys(' ') endf 
  • 根据您要映射的确切行为,可以在映射中用<co>替换<esc>

    这样,您可以在键入快捷方式后保持在“插入”模式:

     autocmd FileType tex inoremap <buffer> ,lc <CO>:call MakeLatex()<CR> 
  • 要改进的最后一件事(恕我直言)是将所有这些放到单独的ftplugin文件中。 这样,您可以分离只需要为Latex文件使用的功能,并使添加更多基于文件类型的功能更加容易。

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

     inoremap <buffer> ,lc <co>:MakeLatex<cr> command! -buffer MakeLatex call s:make_latex() function s:make_latex() w! !latexmk -pdf -pv % call feedkeys(' ') endf 

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

希望这可以是有用的,祝大家开心!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM