O programie#
Program Notepad++, bardzo często określany też zamiennymi nazwami NPP, N++ czy NotepadPlusPlus, po bliższym poznaniu okazuje się wygodnym edytorem tekstu, jak również wygodnym środowiskiem programistycznym (szczególnie przy lekkich projektach).
Z uwagi na spójność i zwięzłość zapisu w dalszych częściach poradnika używany będzie wyłącznie skrót NPP.
W dużym uroszczeniu można powiedzieć, że na tle innych edytorów tekstu NPP nie jest najlepszy w żadnym konkretnym zadaniu, ale za to jest wystarczająco dobry we wszystkich tych zadaniach, które są najistotniejsze w codziennej pracy z tekstem. Dla mnie osobiście dobre opanowanie jednego wspólnego narzędzia do edycji kodu jest o wiele wygodniejsze niż konieczność sięgania po specjalnie zaprojektowane rozwiązania dla poszczególnych języków (np. Pythona czy C++), gdzie każde z nich ma własny interfejs i inne dziwactwa, których gruntowne poznanie wymaga dodatkowego czasu.
Czym jest Notepad++#
Jak podano na oficjalnej stronie projektu program Notepad++ to darmowy edytor kodu źródłowego i zamiennik windowsowego Notatnika, który obsługuje kilka języków. Działa w środowisku MS Windows i podlega licencji GNU General Public License v2.
Bazując na potężnym komponencie edycyjnym Scintilla # (strona domowa, WikiEN, WikiPL), Notepad++ został napisany w C++, używa czystego Win32 API i STL, co zapewnia wyższą szybkość wykonywania i mniejszy rozmiar programu. Poprzez optymalizację jak największej liczby procedur bez utraty przyjazności dla użytkownika, Notepad ++ stara się zmniejszyć światową emisję dwutlenku węgla. Przy zużyciu mniejszej mocy procesora komputer może zmniejszyć przepustowość i zmniejszyć zużycie energii, dzięki czemu środowisko jest bardziej ekologiczne.
Rysunek. Notepad++ - główne okno programu
Trzeba wyraźnie zaznaczyć, że Scintilla jest niezależnym projektem od Notepada++, który w zasadzie jest jej kolejnym klientem. Jest to podstawowe założenie projektu, od którego nie da się już odejść. Ma ono zarówno wady jak i zalety:
- Ilekroć komponent Scintilla naprawia błędy lub dodaje funkcjonalność, jest to wystarczające do wypuszczenia nowej wersji NPP zawierającej wszystkie te zmiany, bez dodatkowych prac programistycznych wykonanych przez zespół NPP.
- Jeśli komponent Scintilla ma ograniczenia, a twórcy przypisują im niski priorytet, to NPP najczęściej utknie w tym samym miejscu. Obejścia zazwyczaj są trudne do wdrożenia, jeśli takowe w ogóle istnieją.
Zakłada się, że pierwszy punkt niesie ze sobą zdecydowanie więcej korzyści niż drugi.
Podstawowe funkcje#
Program Notepad++, jak na swój stosunkowo niewielki rozmiar, obsługuje całkiem sporo funkcji usprawniających proces edycji kodu. Z tych najważniejszych warto wymienić:
- Obsługę ponad 80 języków (programowania, skryptowych, znacznikowych, specyficznych). Przekłada się to na odpowiednie podświetlanie składni, możliwość zwijania kodu, autouzupełnianie składni (nie dla każdego języka) czy w końcu wyszukiwanie i oznaczanie odpowiadających sobie pewnych fragmentów kodu (np. par nawiasów czy znaczników).
- Obsługę wcięć w kodzie
- Obsługę zakładek
- Obsługę kart
- Obsługę makr
- Obsługę wtyczek
- Obsługę skrótów klawiszowych
- Obsługę wielu kodowań (zestawów znaków) z możliwością konwersji dla tych najpopularniejszych
- Obsługę wyrażeń regularnych we wszystkich formach wyszukiwania czy zastępowania tekstu
- Rozpoznanie i wybranie właściwego znaku nowej linii (CR, CR + LF i LF) dla danego pliku (z możliwością ręcznej konwersji na inny).
- Automatyczne zapisywanie stanu plików
- Wiele gotowych operacji na tekście
- Możliwość jednoczesnej edycji tekstu w wielu miejscach
- Pracę w trybie podwójnego widoku z możliwością synchronizacji pionowej i poziomej
Oczywiście jest tego więcej, ale z punktu widzenia przyszłego użytkownika powyższe funkcje jasno wskazują, czego może się spodziewać.
Dlaczego wybrałem Notepada++?#
Swoje pierwsze kroki z edytowaniem kodu, głównie HTML-em, zacząłem stawiać z polskim programem Pajączek. Był wszędzie reklamowany, oferował sporo opcji, w tamtym czasie miał świetne wsparcie dla różnych kodowań znaków - niektóre edytory wiecznie miały z tym problem. Przyzwyczajenie robi swoje, dlatego nawet nie poszukiwałem żadnych alternatyw. Swoim klientom do szybkich edycji polecałem Notepada++, sam jednak jechałem na "pajęczynie". Niestety Pajączek stał w miejscu, tempo rozwoju było bardzo wolne, brakowało podstawowych funkcji znanych z nowocześniejszych edytorów tekstu. Już nie wspomnę o archaicznym interfejsie, śmietniku w opcjach programu i dziesiątkach kreatorów, z których nikt nie korzystał.
Powodem, który w głównej mierze zaważył nad zmianą edytora na inny było notoryczne "wykrzaczanie się" najnowszych wersji Pajączka pod systemem Windows XP. Miałem nadzieję, że z biegiem czasu zostanie to naprawione, niestety problem występował nieprzerwanie, aż do mojego całkowitego zmigrowania na inne narzędzie.
Przyszła pora na zmiany. W owym czasie Edytorów WWW było już całkiem sporo, jedne oferowały podstawowe funkcje znane z klasycznych procesorów tekstu, inne stanowiły kompletne zintegrowane środowiska programistyczne IDE (Integrated Development Environment) [WikiEN, WikiPL] dla webmasterki. Wybitnym specjalistą od kodu nie byłem, potrzebowałem czegoś lekkiego, funkcjonalnego, wciąż rozwijanego i, co najważniejsze, darmowego. Z racji tego, że system rozszerzeń z Firefoksa mam we krwi, to w moim nowym edytorze nie mogło zabraknąć możliwości instalowania i tworzenia pluginów.
Długo nie musiałem szukać. Przeanalizowałem dokładnie możliwości Notepada++ i był to program w sam raz dla mnie. Przy stanie mojej wiedzy i nabytego doświadczenia z tamtego okresu niczego więcej nie potrzebowałem. Co prawda na początku brakowało mi kilku opcji z Pajączka, ale szybko zastąpiłem je alternatywnymi rozwiązaniami.
Podjęta wtedy decyzja wydaje się być słuszna bo mimo upływu lat program Notepad++ wciąż pozostaje moim głównym edytorem tekstu.
Plusy i minusy#
Po wieloletniej (i wciąż trwającej) współpracy z programem Notepad++ mogę podzielić się pewnymi przemyśleniami na jego temat. Nadmienię tylko, że są to moje subiektywne odczucia i należy je traktować z pewnym dystansem.
Zacznijmy od plusów: #
- Jest to darmowy edytor uniwersalnego przeznaczenia. bez faworyzowania któregokolwiek z języków programowania.
- Występuje w wersji 32- jak i 64-bitowej (choć ta druga udostępniona stosunkowo późno).
- Projekt systematycznie (aczkolwiek wolno) rozwijany, z podstawowym wsparciem zagranicznych programistów.
- Cechuje go szybkość działania i małe zapotrzebowanie na pamięć RAM.
- Posiada klasyczny czytelny interfejs (bez nowomodnego Metro UI czy Material/Flat design) oraz sensownie pogrupowane opcje.
- Daje możliwość rozbudowy poprzez wtyczki (są wśród nich perełki). API dla dodatków jest bardzo stabilne i nawet najstarsze z nich (już porzucone) dalej działają.
- Wszystkie panele są dokowalne i można je "oderwać" od główne okna programu.
- Mamy aż 4 miejsca do dokowania paneli: lewo, prawo, góra, dół.
- Pasek narzędzi jest tam gdzie powinien (a przynajmniej jest) i można go dostosować pod swoje preferencje.
- Konfiguracja oparta na XML więc można ją swobodnie przetwarzać czy modyfikować.
Żeby nie było zbyt różowo przejdźmy do minusów: #
- Wydawany tylko dla systemów z rodziny Windows. Można uruchamiać na Unix/Mac poprzez Wine (WikiEN, WikiPL), ale nie ma gwarancji, że wszystko będzie działać prawidłowo (dotyczy głównie wtyczek). Alternatywnie można skorzystać z jakiegoś pełnoprawnego środowiska wirtualizacji z systemem Windows (np. VMWare), chociaż wydajność i komfort użytkowania NPP spod drugiego systemu operacyjnego może nieco siąść.
- Mimo otwartego źródła cechuje go bardzo wolny rozwój. W zasadzie jest to projekt jednoosobowy kierowany przez autora Dona Ho.
- Posiada bardzo ubogie podpowiadanie kodu, o IntelliSense (WikiEN, WikiPL) z prawdziwego zdarzenia można zapomnieć.
- Niewielka liczba wtyczek, często porzucanych (te starsze najczęściej bez wersji 64-bitowej), i zazwyczaj oferujących skąpe możliwości.
- Bieżące podpowiadanie i kolorowanie składni działa tylko dla jednego języka (z jednym małym wyjątkiem).
- Tendencja do ciągłej zmiany strony domowej czy dokumentacji (bez uprzedniego przeniesienia całej utworzonej do tej pory treści).
Sporo tych minusów, ale mnie osobiście jeszcze żaden nie nakłonił do przesiadki na inny edytor. Niestety, ale siła przyzwyczajenia robi tutaj swoje. Mimo wielu (nieudanych) już prób z innymi programami wciąż pracuję na dostrojonych pod siebie kilku wersjach NPP.
Nie jestem tutaj jakimś odosobnianym przypadkiem. Mimo upływu lat, zmieniających się trendów, nachalnych reklam ze strony silniejszej konkurencji, to NPP wciąż pozostaje w ścisłej czołówce tego typu narzędzi. Warto rzucić okiem na statystyki serwisu stackoverflow.com:
- Developer Survey Results 2019 (miejsce trzecie)
- Developer Survey Results 2018 (miejsce trzecie)
- Developer Survey Results 2017 (miejsce drugie)
- Developer Survey Results 2016 (miejsce pierwsze)
- Developer Survey Results 2015 (miejsce pierwsze)
Wyniki mówią same za siebie. Jeśli jeszcze nie miałeś okazji wypróbować NPP, to najwyższy czas nadrobić zaległości.
Alternatywa#
Jeśli chodzi o web-development (zazwyczaj front-end) to swego czasu bardzo dużą popularność zdobył edytor Sublime Text (w skrócie ST). Wersja darmowa oferuje wszystkie opcje, ale co kilka zapisów wyskakuje monit z prośbą o zakup licencji. Sprawdziłem go osobiście i muszę przyznać że sprawował się nieźle. Jest multiplatformowy (Windows, Linux, OS X), ma lekki i schludny interfejs, obsługuje rozszerzenia oraz udostępnia szeroką konfigurację (przez składnię/pliki JSON). Edytor ten jest szczególnie popularny wśród programistów webu dlatego powstaje dla niego masa świetnych dodatków automatyzujących wiele czynności, co jeszcze bardziej podnosi jego wartość.
Na chwilę obecną wydaje się, że prym wiodą produkty oparte na Electronie (GitHub), czyli:
Z wielkiej trójcy mnie osobiście najbardziej do gustu przypadł VSC. Cechuje go bardzo szybki rozwój, ogromna baza wtyczek, chyba największa społeczność skupiona wokół projektu ze wszystkich wymienionych do tej pory. Można by rzec, czego chcieć więcej? Problemów jest kilka:
- Wszystko co siedzi na Electronie jest bardzo zasobożerne. Ze względu na ogromne możliwości można by przymknąć na to oko, gdyby nie poniższe mankamenty.
- Brak wygodnego Paska narzędzi (wbudowanego lub w formie dodatku). Nie jestem w stanie zapamiętać pierdyliardy skrótów klawiszowych dla wszystkich potrzebnych mi akcji (zarówno edytora jak i używanych wtyczek). Ja wiem, że dla niektórych "zatwardziałych konsolowców" myszka jest passe, no ale przy takiej mnogości opcji po prostu brakuje klawiszy na klawiaturze. Mimo wielu próśb nic w tej sprawie nie drgnęło (bug 41309).
- Dodatkowych paneli nie można oderwać od głównego okna programu. Bardzo duży minus w przypadku stanowisk z wieloma monitorami. To nie jest trywialny błąd i wynika wprost z ograniczeń Electrona (bug 10121).
- Nawet panele w tym samym oknie mają ograniczone możliwości, tj. nie można ich swobodnie rozdzielać i przemieszczać między stronami (bug 26777).
Raczej nie spodziewałbym się rychłego rozwiązania powyższych problemów. Wydawać by się mogło, że ktoś decyzyjny z MS celowo utrzymuje taki stan rzeczy, aby przypadkiem nie zrobić zbyt dużej konkurencji nie mniej popularnemu (aczkolwiek płatnemu) produktowi Visual Studio. Po raz kolejny okazuje się, że nie można mieć wszystkiego za darmo. Dobrze że w odwodzie pozostaje sprawdzony w boju Notepad++. Samodzielna automatyzacja zadań w NPP (do zrobienia) to pożądany i kreatywny proces twórczy pozwalający rozszerzyć horyzonty na inne języki programowania i technologie, które mogą być przydatne w czasie ogólnej pracy z danym system operacyjnym. Zachęcam do eksperymentowania!