# Notepad++

Notepad++ ist ein freier Texteditor für Windows. Als Zeichensätze werden ASCII und verschiedene Unicode-Kodierungen unterstützt, so können leicht auch fremdsprachige Textdateien verfasst werden. Die Bearbeitung von Quelltext wird besonders unterstützt: Für viele Programmiersprachen werden Syntax und Struktur durch typographische Mittel bzw. Code-Faltung hervorgehoben. Das Projekt basiert auf Scintilla, ist in der Programmiersprache C++ geschrieben und steht unter der GPL-Lizenz.

## Geschichte

Notepad++ wurde im September 2003 von Don Ho entwickelt, da er mit dem Editor JEXT nicht zufrieden war. Aus diesem Grund begann er in seiner Freizeit mit der Entwicklung von Notepad++, das er in C++ schrieb und das auf der Quellcode-Bearbeitungskomponente Scintilla basiert.
Im November 2003 wurde Notepad++ erstmals auf SourceForge veröffentlicht.
Mit der am 25. Oktober 2008 veröffentlichten Version 5.1 wurde die Software, neben der bereits bestehenden ANSI-Unterstützung, mit einer Unicode-Unterstützung ergänzt. Diese hat jedoch den Nachteil, dass ältere, bereits vorhandene Programmerweiterungen sogenannte Plug-ins teilweise nicht mehr verwendet werden können, da sie noch nicht Unicode-fähig sind. Beim Start der Anwendung werden alle ANSI-kompatiblen Plug-ins deaktiviert und können nicht mehr verwendet werden. Der Programm-Installer enthält nur die Unicode-Version, in der Version ohne Installer ist jedoch auch eine ANSI-Version enthalten. Mit dieser können die nicht für Unicode aktualisierten Plug-ins auch weiterhin verwendet werden. Sie unterstützt jedoch keine Unicode-Plug-ins.
Am 21. September 2009 wurde die Version 5.5 veröffentlicht, welche mit einer verbesserten Suchfunktion sowie einer Textauswahl per Aufziehkasten erweitert wurde. Zudem ist das Laden von Plug-ins nun auch ohne den Neustart des Programms möglich. Darüber hinaus wurden kleinere Verbesserungen und eine Reihe von Fehlerkorrekturen vorgenommen. Des Weiteren wurde bei den Änderungen auch die integrierte Komponente Scintilla von Version 1.78 auf Version 2.01 aktualisiert.
Am Freitag, den 13. Juni 2014 wurde die Version 6.6.6 veröffentlicht. Das Chamäleon im Logo wurde zu diesem Anlass rot eingefärbt sowie mit kleinen schwarzen Hörnern und einem Teufelsschwanz versehen. Der Blog-Eintrag zur Veröffentlichung der Version 6.6.6 endet mit den Worten „Enjoy your 666 Friday the 13th edition, and do some evil things with it ;)“.
Am 10. Januar 2015 erschien die Version 6.7.4, welche als Je suis Charlie edition bezeichnet wird. Nach Installation schreibt Notepad++ ein politisches Statement mit Bezug auf den Anschlag auf Charlie Hebdo in das Textfenster. Nach Erscheinen dieser Version wurde die Webseite von Notepad++ von Unbekannten verschandelt.

## Portabilität und Lokalisierung

Notepad++ ist als portable Version erhältlich. Zudem ist die Benutzeroberfläche in über 80 Sprachversionen verfügbar.
Über ein Plug-in kann eine Rechtschreibprüfung durchgeführt werden. Wörterbücher sind in vielen verschiedenen Sprachen verfügbar.

## Unterstützte Sprachen

Notepad++ bietet Syntaxhervorhebung für folgende Programmier- und Auszeichnungssprachen (ohne Plug-ins):
* ActionScript
* Ada
* ASN.1
* ASP
* Assembler
* AutoIt
* AviSynth
* BaanC
* Batch
* BlitzBasic
* C
* C++
* C#
* Caml
* CMake
* COBOL
* CoffeeScript
* Csound
* CSS
* D
* Diff
* Erlang
* ESCRIPT
* Forth
* Fortran
* FreeBASIC
* GDScript
* Go
* Gui4Cli
* Haskell
* Hollywood
* HTML
* INI-Datei
* Inno Setup
* Intel HEX
* Java
* JavaScript
* JSON
* JSP
* KiXtart
* LaTeX
* Lisp
* Lua
* Makefile
* Matlab
* MMIXAL
* MS-DOS-Style
* Nim
* nnCrontab
* NSIS-Skript
* Objective-C
* OScript
* Pascal
* Perl
* PHP
* PostScript
* PowerShell
* Properties
* PureBasic
* Python
* R
* Raku
* REBOL
* Registry-Datei
* Ressource-RC-Dateien
* Ruby
* Rust
* Scheme
* Shell
* Smalltalk
* Spice
* SQL
* S-Record
* Swift
* Tcl
* Tektronix Extended HEX
* TeX
* TOML
* Transact-SQL
* txt2tags
* TypeScript
* Verilog
* Visual Basic/VBS
* Visual Prolog
* VHDL
* XML
* YAML
Zusätzlich lassen sich Syntaxdefinitionen für weitere Sprachen über eine grafische Oberfläche einstellen. Dabei ist es möglich Schlüsselwörter, Kommentare und Operatoren selbst festzulegen und in verschiedenen Kategorien unterschiedlich zu formatieren.

## Funktionen

Notepad++ stellt eine Schnittstelle für Plug-ins zur Verfügung, über die das Programm um zusätzliche Funktionen erweitert werden kann. Einige der nachfolgend aufgeführten Funktionen sind im Programm integriert, andere liegen dem Installations-Paket als Plug-ins bei.
* Syntax-Hervorhebung
    Unterstützte Sprachen werden anhand der Dateinamenserweiterung erkannt oder die verwendete Sprache kann manuell festgelegt werden. Des Weiteren erkennt Notepad++ in das Dokument eingebettete Sprachen, wie z. B. JavaScript in einem HTML-Dokument und stellt sie entsprechend dar. Schlüsselwörter der Sprachen werden hervorgehoben.
* Autovervollständigung
    Mit der Tastenkombination Strg + Leertaste, optional auch automatisch, kann eine Funktion zur automatischen Text-Vervollständigung aufgerufen werden.
* Automatische Einrückung
    Einrückung kann entsprechend der Syntax oder entsprechend der vorhergehenden Zeile eingefügt werden.
* Multi-Dokument und Multi-Ansicht
    Mehrere Dokumente können gleichzeitig in Tabs geöffnet oder zum Vergleich von zwei Dateien nebeneinander dargestellt werden.
* Suchen und Ersetzen
    Die Suchfunktion unterstützt verschiedene Modi
*   * einen Normal-Modus für einfache Suchen
*   * einen erweiterten Modus, in dem auch Steuerzeichen inklusive Zeilenumbrüche verarbeitet werden können, sowie
*   * einen Modus für (Perl-kompatible) reguläre Ausdrücke zur Suche von Mustern (ab Version 6.0)
*   * Suchen in Dateien
* Drag-and-Drop-Unterstützung
* Dateistatuserkennung
    Wenn eine in Notepad++ geöffnete Datei von einem anderen Programm verändert oder gelöscht wurde, wird man über diese Veränderung informiert und kann die Datei dann neu laden oder entfernen.
* Dokumenten-Zoom
    Angezeigte Dokumente lassen sich mit Strg + Mausrad in mehreren Stufen vergrößern und verkleinern.
* Unterstützung für verschiedene Landessprachen
    Das Programm liegt in Übersetzungen für über 45 Sprachen vor.
* Lesezeichen
    Durch einen Klick auf den Dokumentenrand lassen sich Lesezeichen setzen, die mit F2 angesprungen werden können.
* Klammerhervorhebung
    Befindet sich der Cursor auf einer Klammer, wird die dazugehörige Klammer hervorgehoben dargestellt. Mit Strg + B kann der Cursor zu dieser entsprechenden Klammer bewegt werden.
* Stil-Konfigurator
    Notepad++ beinhaltet einen „Stil-Konfigurator“, mit dem man für jede unterstützte Sprache und für jedes Syntaxelement einzeln die Vorder- und Hintergrundfarbe, die Schriftart, die Schriftgröße und den Schriftstil (fett oder kursiv) einstellen kann. Sollten ein oder mehrere Schlüsselwörter nicht erkannt werden, kann man diese auch über den „Stil-Konfigurator“ hinzufügen.
* Makro-Aufzeichnung und Wiedergabe
* Code-Faltung
    Logisch zusammengehörende Quelltextabschnitte können „ein-“ und „ausgeklappt“ werden, um sie unsichtbar beziehungsweise sichtbar zu machen, je nachdem ob sie gerade benötigt werden oder nicht.
* Vollbildmodus
    Mit F11 kann man das Fenster in den Vollbildmodus schalten. Mit F12 kann danach zusätzlich das Dokument selbst maximiert werden (Statusleiste und Registerkarten werden ausgeblendet).
* Rechtschreibprüfung
    Wenn Aspell installiert ist, kann in Dokumenten eine Rechtschreibprüfung durchgeführt werden.
* Vordefinierte Textbearbeitungsfunktionen
    Das Plug-in TextFX stellt eine Reihe sehr nützlicher Bearbeitungsfunktionen zur Verfügung.
* Compiler-Integration
    Mit Hilfe des Plug-ins NppExec lassen sich externe Programme direkt aus Notepad++ heraus aufrufen und deren Ausgabe gefiltert anzeigen.
* Mehrzeiliges Bearbeiten
    Durch Drücken von Strg beim Klicken kann der Cursor an mehreren Position des Dokuments gleichzeitig platziert werden und dort dieselben Bearbeitungen ausführen. Durch Drücken von Alt kann über mehrere Zeilen hinweg ein rechteckiger Textblock ausgewählt werden.

## Funktionen durch zusätzliche Plug-ins (Auswahl)

* Funktionsliste Anzeige einer Liste der definierten Funktionen in einer Quelldatei.
* Symbol-Datenbank Mithilfe von Plug-ins wie tagLEET lassen sich Ctags einbinden. Das ermöglicht es für Quelldateien einen Index der verwendeten Bezeichner zu erstellen und diese zu referenzieren.
* Hex-Editor Binärdateien können angezeigt und verändert werden.

## Easter Eggs

Wenn man den Info-Dialog öffnet bzw. F1 drückt, während man einen bestimmten Text markiert hat, dann erscheint daneben ein entsprechendes Zitat. Auslöser für dieses Easter Egg sind beispielsweise Bill Gates, Steve Jobs, Linus Torvalds, Brian W. Kernighan, Albert Einstein, James Bond, Barack Obama, Don Ho, Space Invaders und Darth Vader. Bei Auswahl des Textes „random“ erscheint ein zufälliges Zitat.

## Aktivismus

Don Ho, der Gründer von Notepad++, unterstützt die Protestierenden in Hongkong sowie die Uiguren, die wegen ihrer ethnischen Herkunft in chinesische Lager gesteckt werden. Notepad++ wurde daraufhin in China verbannt. Beim Russisch-Ukrainischen Krieg positionierte sich Don Ho auf der Seite der Ukraine und bat um deren Unterstützung in Form von Spenden.