2 Stimmen

Erzeugen eines Vim-Dateityps für Beamer-Präsentationen, der den tex-Dateityp basierend auf der Dateierweiterung und dem Inhalt der ersten paar Zeilen ändert

Wenn ich beamer tex Folienpräsentationen schreibe, habe ich ein paar Änderungen an der tex Dateityp, den ich standardmäßig auf Beamer-Dokumente anwenden möchte.

Wenn ich ein Beamer-Dokument erstelle, hat es eine .tex Dateierweiterung und eine Zeile wie die folgende in den ersten paar Zeilen:

\documentclass[...]{beamer}

Der Einfachheit halber könnten wir sagen, dass jede Datei mit einem .tex Erweiterung und der Text beamer irgendwo in den ersten 5 Zeilen sollte standardmäßig filetype beamer .

  • Wie kann ich den Dateityp automatisch auf beamer sowohl Informationen aus der Dateierweiterung als auch aus den ersten Zeilen der Datei verwenden?

Wie so oft hat mich der Prozess der Formulierung der Frage zu folgenden Erkenntnissen geführt :h new-filetype-scripts aber das erfordert immer noch ein gewisses Maß an Entschlüsselung. Jeder Tipp wäre sehr willkommen.

2voto

Andrew Radev Punkte 3847

Laut dem von Ihnen erwähnten Hilfeartikel müssen Sie eine scripts.vim Datei in Ihrem vim-Laufzeitverzeichnis mit einem Inhalt, der wie folgt aussieht so aussieht:

if did_filetype()
  finish
endif

if expand('%:e') == 'tex'
  for n in range(1, 5)
    if getline(n) =~ 'beamer'
      setfiletype beamer
      break
    endif
  endfor
endif

Interessanterweise klappt das bei mir nicht. Ich habe es geschafft, indem ich es in ftplugin/beamer.vim und ändern Sie es ein wenig in das Folgende:

for n in range(1, 5)
  if getline(n) =~ 'beamer'
    set filetype=beamer
    break
  endif
endfor

Wann immer die tex filetype geladen wird, wird auch der beamer-spezifische Kram ausgelagert. Ich würde empfehlen, die scripts.vim und ziehen Sie die zweite Möglichkeit in Betracht, wenn Sie es nicht auf diese Weise zum Laufen bringen können.

0voto

Jeromy Anglim Punkte 32121

Ich bin noch am Experimentieren, aber eine vorläufige Lösung scheint zu sein, eine Datei namens beamer.vim a ~/.vim/ftdetect mit dem folgenden Befehl:

au BufRead,BufNewfile *.tex if getline(1) =~ 'beamer' | set filetype=beamer.tex | endif  

Beachten Sie, dass ich den Befehl gegenüber den obigen Angaben leicht vereinfacht habe, und filetype beamer.tex enthält sowohl die tex-Funktionen als auch meine Beamer-Anpassungen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X