【发布时间】:2021-11-13 16:14:13
【问题描述】:
我使用% 寄存器来编译使用pdflatex 的当前.tex 文件。我已将其映射到 ww,文件首先保存然后编译。
map :ww :w <CR> :!pdflatex % <CR>
这很好用。现在我尝试将% 复制到另一个寄存器,然后使用新寄存器创建类似的映射,但这不起作用。
let @a=@%
map :ww :w <CR> :!pdflatex a <CR>
当我编译时,我收到以下错误消息:
! I can't find file `a'.
<*> a
但是,当我使用echo @a 检查寄存器a 时,该寄存器已正确创建。所以我不明白为什么这不起作用。请帮忙。
附:我的最终目标是创建一个条件映射:
if % contains 'chapter':
map :ww :w <CR> :!pdflatex ../main.tex <CR>
else
map :ww :w <CR> :!pdflatex % <CR>
这样vim就可以处理目录结构了:
.
├── chapter1
│ ├── chapter1.tex
├── chapter2
│ ├── chapter2.tex
├── chapter3
│ ├── chapter3.tex
├── main.tex
【问题讨论】:
-
您的问题是
%不是寄存器,它只是当前文件的占位符(尽管"%也是保存该值的寄存器)。您可以使用 Ctrl-R 加上该寄存器的字母从寄存器中插入值,map :ww :w <CR> :!pdflatex <C-R>a <CR>也是如此,其中<C-R>是通过按 Ctrl-V 创建的单个“字母”,然后在插入模式下按 Ctrl-R . -
@L3viathan,您应该考虑将该评论转化为答案。
标签: vim vim-registers