[K] Podręczny edytor tekstowy

Piszę od czasu do czasu o aktualnie używanym edytorze tekstu - dla mnie jest to jedno z podstawowych narzędzi, bo tekstu codziennie wprowadzam do komputera bardzo dużo. Nic więc dziwnego, że chcę mieć narzędzie łatwe w obsłudze, a jednocześnie ułatwiające tyle rzeczy, ile tylko można. Dobrze, gdyby przy tym nie kosztowało fortuny, a najlepiej było zupełnie darmowe.

Przez lata moim podstawowym edytorem był SublimeText, ale po premierze wersji 4 moja sympatia do niego mocno stopniała, co skończyło się poszukiwaniem następcy. Ostatecznie został nim Notepad++ i przez ponad rok służył mi bardzo dzielnie.

Blaski i cienie

Nie zrozumcie mnie źle - Notepad++ jest świetnym programem. Malutkim, a posiadającym niemal wszystko, co jest potrzebne - i to już w samym programie, bez instalowania dodatkowych wtyczek. Wtyczki w zasadzie mam zainstalowane tylko trzy: QuickText do wstawiania snippetów, XML Tools do formatowania plików XML/HTML oraz DSpellCheck do sprawdzania pisowni.

Cóż zatem sprawiło, że znów zacząłem przemyśliwać o zmianie? Drobne niedogodności. Takie naprawdę niewielkie rzeczy, które pomnożone przez liczbę swoich wystąpień z czasem zaczęły coraz bardziej irytować. Na przykład automatyczne uzupełnianie. Podczas wpisywania znaczników HTML do artykułu, choćby takiego jak ten, który czytacie, chciałem mieć możliwość wygodnego wstawiania np. linków. Czyli wpisuję sobie literkę "a", naciskam klawisz Tab i już mam wpisany szkielet znacznika, czyli <a href=""></a>. Przy czym kursor od razu skacze mi do cudzysłowu, a po kolejnym naciśnięciu Tab do wnętrza znacznika. Pozostaje wkleić adres i wpisać tekst, pod jakim ten adres będzie dostępny dla użytkownika.

Z niewiadomych przyczyn w Notepadzie++ nie do końca to działa. Tzn. w większości wypadków działa, ale czasem nie - wtedy trzeba np. po "a" wpisać spację i dopiero wtedy Tab działa jak należy. Poza tym plugin QuickText jest jedyną sensowną wtyczką do wstawiania snippetów, którą znalazłem, ale definiowanie owych snippetów to prawdziwa mordęga.

Do tego dochodzi brak przydatnego niekiedy bieżącego podglądu HTML - owszem, da się to zrobić w przeglądarce, ale mnie chodzi o podgląd wewnątrz programu, najlepiej widoczny w trakcie edycji i odświeżający się na bieżąco.

No i na koniec wyszła mi jeszcze sprawa aktualizacji - dwa razy niebacznie zdarzyło mi się skorzystać z automatycznej aktualizacji w programie, co za pierwszym razem skończyło się totalną katastrofą, bo program - mimo że zainstalowany w wersji 64-bitowej - zaciągnął i zainstalował wersję 32-bitową, która wywaliła część pluginów i skasowała ustawienia, w tym pracowicie ustawione kolorowanie składni. Za drugim razem już nie było to tak dotkliwe, bo nauczony doświadczeniem miałem zgrane pliki ustawień. Niemniej, jakieś tam zaufanie zostało zachwiane.

Pozmieniało się

Po krótkim rozpoznaniu rynku okazało się, że zaszły zmiany. Poprzednio odrzuciłem program Brackets, ponieważ firma Adobe przestała go rozwijać. Okazało się jednak, że społeczność nie dała projektowi umrzeć i Brackets nadal istnieje. Za to pół roku temu zostało ogłoszone zakończenie prac nad Atomem, programem, który rok temu bardzo mi się spodobał i w sumie jedyną jego wadą było duże zużycie pamięci oraz miejsca na dysku. Mimo to wypróbowałem go, ale już samo wejście na stronę projektu w 8 przypadkach na 10 kończyło się błędem nr 500, po zainstalowaniu zaś aplikacji miałem problem z pobieraniem tematów i rozszerzeń - dałem więc spokój, bo pewnie z czasem nie będzie wcale lepiej.

Na placu boju z tych nowocześniejszych programów pozostały jeszcze LightTable oraz VisualStudio Code, w skrócie VSCode. Sprawdziłem wszystkie poza Atomem i do dalszych testów przeszedł VSCode, jako najlepiej rokujący.

Jako że ani cena, ani podejście autorów SublimeText choćby do funkcji drukowania nie uległy zmianom, SublimeText nadal nie wchodzi w grę.

Sporo sobie obiecywałem po nowym projekcie firmy JetBrains, nazwanym Fleet. Obecnie jest on w stadium beta i można sobie go używać nawet za darmo - czytając opis, czym ma być to narzędzie, czułem przyspieszone bicie serca, bo wydawało mi się, że wreszcie JetBrains jakimś sposobem odgadło i spełniło moje marzenie o tym, by edytor z IntelliJ (i pozostałych IDE) okroić i zrobić prosty edytor "dla ludu". I Fleet faktycznie ma szansę stać się czymś takim i kto wie, czy za rok nie będę się przesiadał właśnie na niego; niestety, obecna beta jest jeszcze trochę za mało rozwinięta. Nie ma snippetów, nie domyka znaczników HTML, brak jakichkolwiek możliwości doinstalowania dodatków, mało motywów kolorystycznych i tak dalej, i tak dalej. Rzecz jasna, Fleet nadaje się do klepania kodu, ale póki co jest jeszcze za mało rozbudowany (rozbudowana? w końcu to flota), by było to naprawdę wygodne - zwłaszcza jeśli ktoś korzysta na co dzień z "dorosłych" IDE tego producenta i wie, co one potrafią...

Obecne wymagania

Moje obecne wymagania nie są jakoś przesadnie wygórowane:

  • edycja różnych typów dokumentów tekstowych: czystych, HTML, CSS, PHP, Python
  • możliwość zapamiętywania otwartych dokumentów i ich ponownego otwierania przy kolejnym starcie
  • brak konieczności zapisywania dokumentów (edytor powinien wrzucać je do jakiegoś cache'a i nie wymagać zapisywania)
  • możliwość stosowania snippetów, czyli gotowych fragmentów tekstu, wstawianych przez wpisanie skrótu i naciśnięcie klawisza Tab
  • sprawdzanie pisowni w języku polskim
  • możliwość formatowania kodu XML/HTML
  • dużo operacji na ciągach tekstowych: sortowanie, usuwanie zduplikowanych linii, zmiany wielkości znaków
  • wyszukiwanie i zastępowanie z wykorzystaniem wyrażeń regularnych
  • zawijanie linii
  • multikursor
  • drukowanie
  • możliwość wybrania schematu kolorowania składni zbliżonego do tego z Darculi z IntelliJ-a

Myślę, że każdy, kto dużo pisze i dużo dokumentów tekstowych obrabia zgodzi się, że nie ma tu raczej niczego dziwnego lub wydumanego. A już zwłaszcza w kontekście narzędzi, które są (niby) skierowane do zawodowców.

I co z tym VSCode?

No i muszę powiedzieć, że VSCode wypada póki co wcale nieźle. Wprawdzie "z marszu" nie spełnił wszystkich wymagań, ale bardzo szybko okazało się, że instalowanie rozszerzeń jest banalne, a ich liczba - ogromna. Bez kłopotu znalazłem słownik języka polskiego i moduł drukowania, zainstalowałem sobie też bardzo fajny dodatek do sortowania oraz przetwarzania tekstu. W tym momencie miałem już wszystko, co potrzebne i zacząłem codzienne testy.

VSCode podczas normalnej pracy

Mimo że program - podobnie jak Atom - ma spore wymagania pamięciowe (ponad 300MB na 15kB plik HTML!), to uruchamia się całkiem sprawnie, a i praca w nim przebiega bez zacięć, opóźnień czy innych problemów wydajnościowych.

Muszę też pochwalić konfigurowalność, bo nawet jeśli czegoś nie da się ustawić wprost z kontrolek (np. wysokości linii), to można wejść do edycji pliku JSON, który tę konfigurację zawiera i zmienić teoretycznie niedostępne ustawienia tam. W ten sposób np. ustawiłem wspomnianą wysokość linii oraz przygasiłem nieco kolor tekstu w znalezionej wersji schematu kolorystycznego Darcula (oryginalny kolor był nieco zbyt kontrastowy).

Konfigurowanie programu w pliku JSON

Początkowo miałem problem ze snippetami, ponieważ są one zintegrowane z systemem podpowiedzi (tzw. suggestions) i niezmiernie irytowało mnie pojawiająca się co i rusz menu z wyborem pasujących elementów. Kiedy z kolei zwiększałem timeout, to nie działało wpisywanie pierwszych liter i naciskanie Tab - tabulator tylko zatwierdza pierwszy wybór, a dopóki się on nie pokaże, nie ma czego zatwierdzić... W końcu doszedłem do tego, jak skonfigurować całość, by po pierwsze nie rozpraszała, a po drugie, działała odpowiednio szybko i płynnie.

Natomiast z rzeczy nowych dodałem sobie bieżący podgląd edytowanego dokumentu. Chodzi o to, że najczęściej piszę w VSCode artykuły na bloga albo scenariusze do podcastu (a wcześniej robiłem to w Notepadzie++). W wypadku artykułów piszę je staromodnie, w czystym HTMLu. Problem w tym, że czasem się zdarza, że nie zauważę, że np. zamiast akapitu (znacznik <p>) wpisuję pogrubienie (znacznik <b>). No i potem, po przeklejeniu tekstu do edytora na Blogspocie, mam cały akapit pogrubiony...

Podgląd na żywo w zakładce obok

W dotychczas używanych edytorach można było sobie jakiś podgląd zorganizować, ale zwykle wyglądało to tak, że po prostu program wysyłał plik do domyślnej (lub wybranej) przeglądarki internetowej i tyle. W VSCode jest inaczej, ponieważ znalazłem rozszerzenie, które potrafi podgląd wyświetlić bezpośrednio w aplikacji. Teraz mogę pisać i jednocześnie na tym samym ekranie obserwuję, jak wygląda wyrenderowany kod HTML.

Przestawiać się czy nie?

Na razie używam VSCode głównie do pisania artykułów na bloga i skryptów do podcastu. Sprawdza się wyśmienicie, po ogarnięciu pierwszych niedogodności obecnie wszystko działa tak, jak bym sobie tego życzył. Czy zatem będzie to program na dłużej?

Z jednej strony wydaje się, że tak - naprawdę mam tu wszystko, czego chciałem. Jest multikursor, są snippety, jest podgląd "na żywo" tworzonego HTMLa. Kurczę, jest nawet miniatura dokumentu po prawej stronie, co sobie bardzo cenię od czasów SublimeTexta! A jednak...

Czuję już teraz, że prawdziwym konkurentem dla VSCode nie będzie wcale Notepad++, ale właśnie JetBrains Fleet. Popracowałem trochę z wersją beta (1.9 z połowy października) i czuję, że tu jest potencjał! Kocham środowiska IDE od JetBrains miłością wieloletnią i kiedy dojdą plug-iny, schematy kolorowania i możliwość definiowania własnych snippetów, to nawet bez drukowania i podglądu na żywo czuję, że przemigruję do Fleet. Na razie jeszcze nie nadaje się on do regularnej pracy, ale...

No i tak to sobie leci. Kolejny rok i kolejny edytor. Na koniec powiem tylko, że naprawdę dokonał się w tych narzędziach ogromny postęp. Dość powiedzieć, że rzeczy, które mnie zachwycały 10 lat temu w SublimeText i dla których kupiłem ten program, są teraz nawet w tych darmowych narzędziach: miniatura dokumentu, multikursor, autozapis czy brak konieczności jawnego zapisywania dokumentów (nawet nowych), eleganckie tematy kolorystyczne, szybkość działania. Powiem więcej, z ciekawości zainstalowałem sobie aktualną wersję SublimeTexta i... w zasadzie nie zauważyłem na pierwszy rzut oka żadnych różnic w stosunku do "trójki". Według dokumentacji jakieś różnice niby są, np. rendering ze wsparciem karty graficznej, odświeżony wygląd, lepsze wsparcie dla Pythona, polepszenie działania podpowiadania składni, ale po porównaniu tego do VSCode absolutnie nie mam ochoty płacić 80 euro za upgrade, zwłaszcza że na horyzoncie majaczy Fleet. Poczekam.

A co z Notepadem++? Ano nic. Nie wyrzucam go i będę go miał podpiętego jako podręczny edytor w TotalCommanderze. Bo "plusplusa" też polubiłem.

Komentarze