π

Textbausteine/Snippets als praktisches Helferlein im Alltag

Show Sidebar

Update 2014-08-02: AutoHotkey-Konfiguration von Keith

Diesen Tipp kann wirklich jeder Computerbenutzer (selbstverständlich immer auch die weiblichen Computerbenutzer einschließend!) in der täglichen Computerarbeit brauchen: das automatische Einfügen von Textbausteinen (Englisch: snippet).

Einsatzbeispiele

Als Klassiker schlechthin wird in diesem Zusammenhang die Schlußformel "Mit freundlichen Grüßen" genannt. Wenn man die nicht ohnehin schon in seiner Email-Vorlage fix mitgespeichert hat, ist das durch ein Textbaustein-Programm sehr einfach erledigt. Aus dem eingegebenen Kürzel "mfg" wird automatisch die Langform "Mit freundlichen Grüßen" erstellt.

Oftmals belassen es Anwender auch bei diesem Anwendungsfall, was ich sehr schade finde. Gibt es doch so viel praktische Dinge, die mit Textbausteinwerkzeugen effizienter und lustiger gestaltet werden können.

Zum Beispiel brauche ich oft meine Emailadresse in Dokumenten und so weiter. Mir ist das zu dumm, sie jedes Mal händisch zu tippen. Weiters finde ich Textbausteinwerkzeuge hierfür auch sehr ratsam, da gerade bei solchen Dingen Tippfehler fatal sein können. Deshalb habe ich auf das Kürzel "$$email" meine Email in der Form "Karl.Voit@Example.com" (Serviervorschlag!) in korrekter Groß- und Kleinschreibung parat.

Warum das doppelte Dollar-Zeichen in "$$email"? Ich definiere gerne Kürzel, die auch unter Umständen in normalem Text vorkommen können. Würde ich "email" auf meine Emailadresse vervollständigen lassen, könnte ich das Wort "email" nicht mehr tippen. Deshalb das "$$" davor, das nie in normalem Text vorkommt.

Ebenso praktisch sind Textbausteine für lange Bezeichnungen wie beispielsweise "Univ.-Prof. Dipl.-Ing. Dr.techn. Hans Wurst". Die Postanschrift habe ich mit "$$adr" getippt. Meine Bankverbindung per "$$bank".

Aber auch kurze Dinge sind mit Textbausteinen praktisch umzusetzen. Wer Arbeitskollegen hat, deren ausländischen Namen Dinge wie Hatscheks beinhalten weiß, dass das auf einer deutschen Tastatur einfach nicht funktioniert. In so einem Fall kopiert man sich ein Mal den korrekt geschriebenen Namen in den Textbaustein und setzt ein Kürzel dafür.

Meine Kreditkartennummer muss ich bei Online-Bestellungen eingeben. Spätestens hier sollte der Vorteil von Textbausteinwerkzeugen klar sein: diese lange Nummer möchte niemand gerne öfters abtippen wollen. Deshalb: "$$kkn" auf die Kreditkartennummer ändern lassen.

Sehr oft brauche ich das aktuelle Datum oder die aktuelle Uhrzeit in Form vom ISO 8601-Format wie "2014-05-15" oder eben "2014-05-15T09.01.36". Dies habe ich auf "$$dd" (Datum) und "$$tt" (Zeit) gemappt. Herrlich zum Einleiten von Dateinamen, wie ich sie gerne verwende.

Doch auch ganze Emails lasse ich gelegentlich von meinem Textbausteinwerkzeug schreiben: immer wiederkehrende Standardantworten auf häufig vorkommende Standardfrage "Wo finde ich XY?" werden mit Textbausteinen deutlich weniger lästig.

In die selbe Kerbe schlägt das Verwenden von Textbausteinen für komplette Vorlagen wie Gesprächsprotokolle, Workflows, und so weiter. Hier kann man sehr kreativ werden und sich das Leben deutlich erleichtern.

Je nach Anwendungsfall ergeben sich sehr viele Möglichkeiten. Beispielsweise können Software-Tester von Textbausteinwerkzeugen profitieren, wenn sie sich auf deren Standardfälle jeweils ein Kürzel definieren: Text mit vielen Umlauten und Sonderzeichen; sehr langer Text; Text mit bösen Scripts drinnen; und so weiter. Programmierer werden die Möglichkeit schätzen, Vorlagen für Klassen, Funktionen, Scripts, und so weiter nutzen zu können.

Gundbegriffe

Um die Werkzeuge schneller einteilen zu können, möchte ich kurz ein paar Begrifflichkeiten einführen, die ich mir mal definiert habe.

Grundsätzlich unterscheide ich zwischen statischen, dynamischen und interaktiven Textbausteinwerkzeugen. Statische Textbausteine ersetzen eine bestimmte Zeichenfolge mit einer anderen, die immer gleich ist. Im Gegensatz dazu können dynamische Textbausteine eine bestimmte Zeichenfolge wie "$$dd" mit dem aktuellen Datum ersetzen, das bekanntlich jeden Tag anders ist.

Noch einen Schritt weiter gehen interaktive Textbausteine, die den Anwender während des Einfügens diverse Dinge fragen. Damit sind beispielsweise Textbausteine für Protokolle möglich, wo der Anwender nach dem Ort, die beteiligten Personen, das aktuelle Thema und so weiter gefragt wird und damit das Protokoll interaktiv vorausgefüllt wird. Mit dieser Methode ist es möglich, Teile wie das Thema an mehreren Stellen einzufügen, ohne, dass man sie mehrfach tippen muss.

Eine andere Art, Textbausteinwerkzeuge zu unterscheiden ist über deren Wirksamkeitsbereich: Einige Lösungen funktionieren nur in einem bestimmten Programm. Andere Lösungen bieten die Funktionalität in allen Programmen an und arbeiten somit auf Betriebssystem-Ebene.

Empfehlungen

Für Textbausteinlösungen gibt es viele Produkte. Das bekannteste wird wohl die AutoText-Funktion von Microsoft Word. Ich persönlich halte davon jedoch nichts, da ich Lösungen bevorzuge, die mir auf Betriebssystem-Ebene in jeder Anwendung zur Verfügung stellen.

Windows: HotStrings

Ac'tivAid (von heise) ist eine sehr praktische Sammlung von Softwarewerkzeugen, die das Leben unter Windows deutlich erträglicher machen. Vorsicht: nicht die Portable-Vartiante installieren, wenn du nicht weißt, was die Portable-Version anders macht! Eines von den ac'tivAid-Werkzeugen nennt sich HotStrings und bietet statische und dynamische Textbausteine programmunabhängig quasi auf Betriebssystem-Ebene.

Meine Definition von $$dd:

datum = %A_Now%
FormatTime, datum, %datum%, yyyy-MM-dd
Send, %datum%	  

Meine Definition von $$tt:

datum = %A_Now%
FormatTime, datum, %datum%, yyyy-MM-ddTHH.mm.ss
Send, %datum%	  

Bei Gelegenheit kannst du dir auch die anderen Tools von ac'tivAid durchschauen. Da sind einige sehr praktische Perlen dabei.

Windows: AutoHotkey

Keith Andrews hat mir per Email seine Konfiguration von AutoHotkey zukommen lassen, die ich hier gerne etwas gekürzt als Update einfügen möchte:

;
; Keith Andrews main ahk script
;
; +q  means Shift-q
; ^q  means Ctrl-q
; !x  means Alt+x
; #g  means Win+g
;
;; ::em1::kandrews@example.com
;; ::lgk::{Enter}{Enter}lg{Enter}{Enter}Keith{Enter}

; Some useful hotkeys

^F3::  ; Ctrl-F3   IBAN
  SendInput AT28380000000xxxxxxx
return

^F4::  ; Ctrl-F4   BIC
  SendInput RZSTATxx
return

^F7::  ; Ctrl-F7   office phone number
  SendInput {+}43-316-873-xxxx
return

^F8::  ; Ctrl-F8   mobile phone number
  SendInput {+}43-664-xxxxxxx
return

^F9::  ; Ctrl-F9   iso date stamp
  FormatTime, CurrentDate,, yyyy-MM-dd
  SendInput %CurrentDate%
return

^F10::  ; Ctrl-F10   iso date+time stamp
  FormatTime, CurrentTime,, yyyy-MM-dd HH:mm
  SendInput %CurrentTime%
return

^F11::  ; Ctrl-F11
  SendInput kandrews@example.com
return

^F12::  ; Ctrl-F12
  SendInput lg{Enter}{Enter}Keith{Enter}
return	  

GNU/Linux: AutoKey

AutoKey bietet unter GNU/Linux statische und dynamische Textbausteine auf Betriebssystem-Ebene. So ungefähr alle zwei Monate muss ich es neu starten weil es nicht mehr reagiert. Ansonsten funktioniert es wunderbar.

Für GNU/Linux gibt es auch noch TextSuggest, das ich allerdings noch nicht selbst ausprobiert habe. Es scheint aber nur ein statisches Textbausteinwerkzeug zu sein.

OS X: (derzeit keine Empfehlung)

Am Apple benutzte ich vormals ein Tool, das mittlerweile leider kostenpflichtig geworden ist. Ich habe bislang noch keinen freien Ersatz gefunden. Ich freue mich über Kommentare und Emails, wenn du einen Tipp für mich hast!

Würde ich mehr auf OS X arbeiten, würde ich natürlich auch keine kostenpflichtige Lösung überlegen. Derzeit habe ich dazu keine wirkliche Notwendigkeit.

GNU Screen

In der Textkonsole verwende ich gerne GNU Screen als Terminal-Multiplexer. Dieser bietet mit bindkey eine Funktion für Textbausteine innerhalb von allen GNU Screen Shells:

Beispiel-Textbaustein aus meiner .screenrc

bindkey -t "$$url" stuff "http://Karl-Voit.at/"	  

Dynamische Textbausteine sind ebenso möglich mit einer Indirektion über externe Scripts:

bindkey "$$dd" eval "screen /home/karl/bin/datestamp"	  

Das hier aufgerufene Script datestamp schaut so aus:

#!/bin/bash

TEMPFILE_RAW=/var/tmp/datestamp_raw_$$_$USER
TEMPFILE_FINAL=/var/tmp/datestamp_final_$$_$USER

/bin/date +%Y-%m-%d > "$TEMPFILE_RAW"; \
cat "$TEMPFILE_RAW" | tr -d '\n' > "$TEMPFILE_FINAL"; \
screen -X bufferfile "$TEMPFILE_FINAL"; \
screen -X readbuf

rm "$TEMPFILE_RAW" "$TEMPFILE_FINAL"

#end	  

Weil ich ohnehin auf allen meinen Rechnern, mit denen ich ernsthaft arbeite, ein Textbausteinwerkzeug auf Betriebssystem-Ebene betreibe, verwende ich bindkey auf GNU Screen nicht mehr.

Emacs: yasnippet

Die bislang mächtigste Lösung für Textbausteine, die ich benutzen durfte, war yasnippet am Emacs Editor. Es ist zwar "nur" auf Programm-Ebene, aber dafür mit seinen statischen, dyanmischen und interaktiven Textbausteinen extrem mächtig. Da ich selber ohnehin meistens im Emacs "lebe", verwende ich für alle komplexen Textbausteine yasnippet: Packlisten, interaktive Vorlagen für komplette Kursorganisationen, und so weiter. Es liefert mir einfach alles, was ich mir hier wünschen kann.

Android: Inserty

Auch am Android-Smartphone gibt es so etwas ähnliches in Form von Inserty. Es ist allerdings etwas anders gestrickt: man wählt in der App Inserty aus einer Liste von Bausteinen einen aus, der in die Android-Zwischenablage geschrieben wird. Danach wechselt man wieder in die Anwendung, wo man den Baustein einsetzen möchte und holt sich den Textbaustein aus der Zwischenablage. Verwende ich eigentlich nicht mehr.

Vermutlich gibt es auch einige Android-Tastaturen, die eine Textbausteinfunktion eingebaut haben. Ich freue mich über Kommentare und Emails mit Tipps hierzu.

Fazit

Textbausteine erleichtern das tägliche Leben auf so vielen Ebenen, sodass sich jeder bei der Nase nehmen sollte, wenn noch keine Lösung hierzu im Einsatz ist.

Weniger Zeit für dumme, fehleranfällige Dinge und mehr Zeit für spannende Sachen!

Comment via email or via Disqus comments below: