Cheatsheets mit Dasheets

Programmierer versuchen ständig, ihre Arbeitsumgebung zu optimieren. Dazu beschäftigen sie sich mit einer Vielzahl von Tools, picken interessante heraus, erlernen deren Bedienung und versuchen dann, Befehle und Tastenkombinationen irgendwie ins Langzeitgedächtnis zu befördern.

Learning by doing heißt es immer so schön, oft ist es aber eher ein learning by RTFM, immer und immer wieder. Um diesen wiederkehrenden Wälzen der Referenzdokumentation zu entgehen, legen sich viele Leidensgenossen Spickzettel an. Genau um die geht es bei Dasheets, einem Tool zum Erzeugen und zum Suchen in Spickzetteln.

Meine Cheatsheet-Lösung besteht aus zwei Teilen. Dasheets erzeugt aus einer Datei mit den Spickzetteleinträgen ein Dash Docset. Dash übernimmt dann die Präsentation des Spickzettels und stellt ein Such- sowie Navigationsfunktionalität bereit.

Dash

Der Haupteinsatzzweck der Mac-Software Dash ist das Anzeigen und Suchen in API-Dokumentationen.

Dash

Die Dokumentationen sind in sogenannten docsets organisiert, der Dash-Autor hat schon dutzende erstellt, die meisten Programmiersprachen und viele hippe frameworks sind z. B. schon vertreten. Mit Generating Dash Docsets liefert er zusätzlich Informationen, wie man selbst docsets erzeugen kann. Das hat uns als Vorlage für Dasheets gedient.

Dasheets

Dasheets ist ein kleines Ruby-Programm, das als Gem ausgeliefert wird. Installiert wird es ganz einfach mit gem install dasheets.

Eine Spickzetteldatei kann wie folgt aussehen - ein Ausschnitt aus meinem Sublime-Text-Dasheet:

# sublime.dasheet
cheatsheet do
  title 'Sublime Text 3'
  short_name 'sublime'
  introduction '[Basis](https://gist.github.com/lucasfais/1207002), thanks Lucas!'

  category do
    id 'General'
    entry do
      name 'go to file'
      command '⌘T'
    end
    entry do
      name 'go to project'
      command '⌘⌃P'
    end
    entry do
      name 'go to method'
      command '⌘R'
    end
    entry do
      name 'new window'
      command '⌘⇧N'
      notes 'useful for new project'
    end
  end

  category do
    id 'Editing'
    entry do
      name 'select word'
      command '⌘D'
      notes 'repeat selects other occurrences in context for multiple editing'
    end
    entry do
      name 'insert line before'
      command '⌘⇧↩'
    end
    entry do
      name 'block comment'
      command '⌘⌥/'
    end
  end
end

Die Syntax der Quelldatei ist relativ einfach, weil sie als Ruby-DSL realisiert wurde. Neben ein paar Metainformation zum Spickzettel erfasst man Einträge mit Namen, Kommando und optionalen Notizen. Bei einigen Attributen ist es auch möglich, Markdown zu verwenden, so finden eigene Hervorhebungen, Listendarstellungen oder Verlinkungen ihren Weg ins Dasheet. Die Kategorien ermöglichen eine einfache Untergliederung. Ein paar mehr Informationen sind direkt bei Github oder in meinen Dasheets zu finden.

Die Generierung des docsets erfolgt dann ganz einfach auf der Kommandozeile mit dasheets generate sublime.dasheet. Es entsteht ein Verzeichnis sublime.docset, das direkt so in Dash eingebunden werden kann.

Dash übernimmt wie erwähnt die Präsentation und die Suche: Dasheets

Unser nächster Schritt ist jetzt das intensive Testen, ob wir mit Dasheets in der jetzigen Form wirklich besser im Kürzel- und Befehlsdickicht überleben können. Anmerkungen und Kritik sind natürlich auch von externer Seite willkommen!