vim-latex 模板最后更改动态

vim-latex 模板最后更改动态

因此,我正在使用vim-latex套件,并希望最后一次变更每次编辑/保存时都会动态更改信息。如果您使用其中一个模板,则可以在序言中找到它,例如

%        File: raid.tex
%     Created: Tue Apr 01 09:00 AM 2014 E
% Last Change: Tue Apr 01 09:00 AM 2014 E
%

目前它根本没有改变。

谢谢!

编辑:更新添加示例模板文件

<+  +>      !comp!  !exe!
%        File: !comp!expand("%:p:t")!comp!
%     Created: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
% Last Change: !comp!strftime("%a %b %d %I:00 %p %Y ").substitute(strftime('%Z'), '\<\(\w\)\(\w*\)\>\(\W\|$\)', '\1', 'g')!comp!
%
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\author{Author Name}<++>
\title{<++>}
\begin{document}
\maketitle
<++>
\end{document}

使用模板生成的示例文件:

%        File: samplefile.tex
%     Created: Tue Apr 01 03:00 PM 2014 E
% Last Change: Tue Apr 01 03:00 PM 2014 E
%
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\author{Author Name}
\title{<++>}
\begin{document}
\maketitle
<++>
\end{document}

谢谢!

答案1

将以下行添加到您的.vimrc文件或~/.vim/ftplugin/tex

" --- Timestamps for TeX files -------------------------------------------
function! LastModified()
  if &modified
    let save_cursor = getpos(".")
    let n = min([8, line("$")])
    keepjumps exe '1,' . n . 's#^% Last modified: \zs.*# ' . strftime('%H:%M %A, %-d %B %Y') . '#e'
    call histdel('search', -1)
    keepjumps call setpos('.', save_cursor)
  endif
endfun

autocmd BufWritePre *.tex call LastModified()

答案2

上述答案对我来说不起作用,所以我只是分享我编写的宏作为“解决方法”:

let @z=":3\<CR>4wc$,z\<Esc>'':w | :\<BS>sleep 2000ms | :q\<BS>\<BS>q\<CR>"

我专门编写了这个程序以便与我的 latexsuite 模板一起使用,因此它将光标移到第 3 行,移动到前一个时间戳的开头,并使用以下映射插入新的时间戳:

inoremap ,z <C-R>=strftime("%c")<CR>

然后它将光标移回其先前的位置,然后保存并关闭文件。sleep 命令可能没有必要。

相关内容