Как автоматически создать make-файл в той же директории, что и файл Latex? - PullRequest
2 голосов
/ 02 июня 2010

Когда я создаю .tex файл с помощью vim, я получаю хороший шаблон с

autocmd BufNewFile *.tex 0r $HOME/.vim/templates/skeleton.tex

в моем .vimrc. У меня также есть makefile-template в моем домашнем каталоге, но этот я должен вручную скопировать туда, где находится файл .tex. В среде Linux, как я могу автоматически копировать или автоматически генерировать make-файл одновременно с созданием файла .tex?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Переносимый ответ будет использовать не cp (что может перезаписать существующий ранее make-файл), а функции vim readfile () и writefile ().

Чтобы запустить его, лучше всего определить и выполнить функцию, которая загружает первый скелет и создает Make-файл на лету:

" untested code
"
function! s:NewTeXPlusMakefile()
  let where = expand('%:p:h')
  " see mu-template's fork for a more advanced way to find template-files
  let skeletons_path = globpath(&rtp, 'templates')

  " the current .tex file
  let lines = readfile(skeletons_path.'/skeleton.tex')
  call setline(1, lines)

  " the Makefile, that MUST not be overwritten when it already exists!
  let makefile = where.'/Makefile'
  if ! filereadable(makefile)
    let lines = readfile(skeletons_path.'/skeleton.makefile')
    call writefile(lines, makefile )
  endif
endfunction

augroup LaTeXTemplates
  au!
  au BufNewFile *.tex call s:NewTeXPlusMakefile()
augroup END
2 голосов
/ 02 июня 2010

Обычная команда ex для этого будет

:!cp $HOME/.vim/templates/skeleton.makefile %:p:h

Так что вам просто нужно добавить еще один autocmd (который будет выполняться после первого)

autocmd BufNewFile *.tex silent !cp $HOME/.vim/templates/skeleton.makefile %:p:h

(silent просто предотвращает печать команды копирования при исполнении).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...