Markdwn для компиляции PDF с помощью pandoc через vim с помощью команды - PullRequest
0 голосов
/ 31 октября 2018

Я использую pandoc markdown в качестве основного инструмента для создания документа с использованием vim . Когда мне нужно скомпилировать документ, я обычно набираю

:!pandoc Something.rmd --pdf-engine=xelatex -o Something.pdf

Но, когда я компилирую документ с использованием LaTeX, я сопоставил Ctrl + C для автоматической компиляции PDF, я использую эти две строки кода, «украденные» из Люк Смит :

autocmd FileType tex inoremap <C-C> <Esc>:!xelatex<space><c-r>%<Enter>a autocmd FileType tex nnoremap <C-C> :!xelatex<space><c-r>%<Enter>

Поскольку я не являюсь экспертом в программировании на vim и не очень хорошо понимаю, как работает .vimrc (я учусь медленно), мне было интересно, есть ли способ для привязки какой-либо клавиши (например, Ctrl + В) к автоматической компиляции PDF-файла из документа уценки.

1 Ответ

0 голосов
/ 31 октября 2018

Итак, вы хотите, чтобы Markdown соответствовал отображениям LaTeX, верно?!

Давайте сначала приведем в порядок исходные; к сожалению, многие люди просто копируют и вставляют вещи, которые можно увидеть в Интернете, не понимая их полностью. Узнайте, как искать команды и перемещаться по встроенному :help; это всеобъемлющее и предлагает много советов. Вы не будете изучать Vim так же быстро, как другие редакторы, но если вы посвятите себя постоянному обучению, он окажется очень мощным и эффективным редактором.

autocmd FileType tex nnoremap <C-C> :!xelatex<space><c-r>%<Enter>
autocmd FileType tex inoremap <C-C> <Esc>:!xelatex<space><c-r>%<Enter>a
  • Нет необходимости в специальной записи <space>.
  • Отображение будет определено глобально , но мы хотим это только для буферов LaTeX. Это важно после того, как вы определили свой вариант Markdown, если вы когда-либо будете редактировать оба в одном сеансе Vim. <buffer> сделает это локальным отображением.
  • c_CTRL-R вставляет специальный регистр %, который обозначает текущий файл. Но это не обязательно, в команде :! мы можем напрямую обратиться к ней через %. Cp. :help cmdline-special
  • Для отображения режима вставки можно использовать i_CTRL-O вместо <Esc>...a.
autocmd FileType tex nnoremap <buffer> <C-C> :!xelatex %<Enter>

Теперь, когда у нас это есть, мы можем определить вариант для Markdown. Это filetype (выясняется через :setl filetype?) равно markdown.

autocmd FileType markdown nnoremap <buffer> <C-C> !pandoc % --pdf-engine=xelatex -o %:r.pdf

То, что %:r - это еще одна специальная запись, которая удаляет последнее расширение из текущего имени файла, так что мы можем вместо него добавить .pdf.

Я оставлю вам вариант режима вставки для практики: -)

Заключительные слова

Я бы порекомендовал помещать любые параметры, сопоставления и специфичные для типов файлов autocmds в ~/.vim/ftplugin/{filetype}_whatever.vim (или {filetype}/whatever.vim; ср. :help ftplugin-name) вместо определения лотов :autocmd FileType {filetype}; он чище и лучше масштабируется; требует, чтобы у вас было :filetype plugin on, хотя. Настройки, которые переопределяют вещи в плагинах типов файлов по умолчанию, должны вместо этого указываться в ~/.vim/after/ftplugin/{filetype}.vim.

...