我正在尝试创建一个在.tex可用时调用latexmk的键映射(如果.tex是当前打开且活动的缓冲区会更好)
我试过了:
:nnoremap <Leader>lw :if filereadable('*.tex')<cr>up!<cr>:!latexmk -pdf<cr>endif<cr>
当试图让latexmk -pdf运行时,但不幸的是,它只是在窗口中提示那些行,并且什么都不做:
~
:if filereadable('*.tex')
: up!
: :call Tex_RunLaTeX()
: endif
Press ENTER or type command to continue
请帮助。
(据说,如果.tex是当前打开且有效的缓冲区,可以这样做。)
答案 0 :(得分:1)
我觉得这可以通过autocmd完成。
当文件是tex文件时,autocmd仅加载映射。
autocmd FileType tex nnoremap <leader>lw :up! \| !latexmk -pdf<CR>
如果你想做这个filereadable('*。tex'),它只是检查目录中的文件是否是tex文件。您可以使用第一个链接中的expr映射。在表达式的else部分,我们只是放了一个空字符串,因此映射将不执行任何操作。
nnoremap <expr> <leader>lw filereadable('*.txt') ? ':up! \| !latexmk -pdf<CR>' : ''
答案 1 :(得分:1)
你需要做三件事:
<buffer>
的{{1}}选项创建特定缓冲区的本地映射。首先使用nnoremap
执行命令作为单个ex命令并删除<bar>
的&amp; :
的。我们还删除了filereadable部分,因为我们只是编写了文件。
<cr>
或者您可以使用像FDinoff建议的表达式映射。
请注意映射上的nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>
选项。这使得映射仅对当前缓冲区可用,而不是对每个缓冲区都可用。
现在我们需要确保此映射仅适用于<buffer>
文件类型。这可以通过tex
中的自动命令完成,如下所示:
.vimrc
另一种方法是通过创建文件类型插件。 (有关详细信息,请参阅autocmd FileType tex nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>
)
一个简单的例子就是创建一个名为:h ftplugin
的文件,并将映射放在里面:
~/.vim/ftplugin/text.vim
我个人更倾向于使用ftplugin方法,但在nnoremap <buffer> :up!<bar>!latexmk -pdf<cr>
文件中包含所有内容可能会很好。