我是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>可能行得通,但事实证明它不行。
发布于 2019-09-06 02:30:57
您可以尝试:
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()
为此,转到您的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;
https://stackoverflow.com/questions/57797971
复制相似问题