W tym artykule zajmiemy się edytorem tekstu w trybie terminalowym - joe.
W wielu artykułach czy poradach dotyczących Linuksa można spotkać przykłady wykorzystania edytorów z rodziny Vi/Vim. W nowszych przykładach często pojawia się edytor nano. Rzadziej można spotkać inne edytory. Jednym z nich jest joe
JOE - Joe's Own Editor
joe to wielofunkcyjny terminalowy edytor tekstowy. Powstał w latach '80 XX
wieku i szybko stał się obecny w wielu dystrybucjach Linuksa i systemach
Unix.
joe jest wzorowany na istniejących wcześniej procesorach tesktu WordStar
oraz Emacs, ale nie dzieli ich kodu.
Oprócza działania jako podstawowa komenda joe, edytor ten może też być
uruchamiany w trybie emulacji "zaprzyjaźnionych" edytorów odowiednio
komendami jmacs, jstar, albo jpico
Cechy i funkcje
Programem steruje się za pomocą skrótów klawiszowych, najczęśćie inicjonaych sekwencją Ctrl+K po której następuje klawisz danej funkcji, np. Ctrl+K H - wyświetlenie okienka pomocy.
- praca z wieloma plikami na raz,
- podział obszaru roboczego na okna ramach terminala/konsoli; możliwość edycji tego samego pliku w wielu oknach,

- wyszukiwanie/zastępowanie tekstu, wyszukiwanie z użyciem wyrażeń regularnych

- podświetlanie składni wielu popularnych typów plików np. Python, PHP, C, Java, Bash, HTML, YAML.
-
wywoływanie zewnętrznych poleceń, np do wyszukiwania w plikach, do załadowania wyjścia komendy do edytora itp.
-
kompilacja i uruchamianie kodu.
-
joe pokazuje na górnej belce stan pliku oraz pozycję kursora
- możliwość edycji bardzo dużych plików dzięki użyciu pliku typu swap. Ma to znaczenie w starszych komputerach z miejszą ilością RAMu
- uzupełnianie poleceń i nazw plików za pomocą tabulatora pdobnie jak w Bashu.
- możliwość przeglądania struktury plików
- przskakiwanie do nawiasów zamykających i tagów w niektórych językach np. XML
- sprawdzanie pisowni za pomocą zewnętrznych narzędzi słownikowych jak np. ispell, czy aspell
- funkcje undo i redo
- automatyczne formatowanie akapitów i zawijanie wierszy na wybranej kolumnie,
- możliwośc definiowania własnych makropoleceń,
- automatyczne wcięcia w językach programowania i markup
- tryb blokowy/kolumnowy - zaznaczanie prostokątnego bloku tekstu. Ma to zastosowanie np. przy obróbce plików tekstowych z danymi naukowymi.
- tryb nadpisywania i wstawiania,
- wbudowany kalkulator z funkcjami statystycznymi i naukowymi,
Instalacja
joe jest dostępny jako pakiet w głównych dystrybucjach Linuksa, moża go łatwo zainstalować poleceniami do instalacji pakietów: np.
Debian/Ubuntu:
$ sudo apt install joe
RedHat/Fedora/Rocky/Alma:
$ sudo dnf install joe
Jeśli nie działa sprawdzanie pisowni warto doinstalować polski słownik
$ sudo apt install aspell-pl
Proste użycie
joe uruchamiamy wpisując w terminalu polecenie joe:
$ joe
Działanie programu
Wdycję nowego lub isniejącego pliku rozpoczynamy poleceniem
$ joe plik.txt
joe używa często skrótów klawiszowych opartych na dwóch znakach. Zapis Ctrl+K F (zapisywane też ^KF) oznacza przytrzymanie klawisza Control, wciśnięcie klawisza K, puszczenie ich i w krótkim czasie wciśnięcie klawisza F. Kilka najważniejszych skrótów to:
- Ctrl+K F - wyszukiwanie,
- Ctrl+K H - pomoc,
- Ctrl+K U - skok na początek tekstu,
- Ctrl+K V - skok na koniec tekstu,
- Ctrl+Y - wycięcie linii,
- Ctrl+U - skok o stronę w górę,
- Ctrl+V - skok o stronę w dół,
- Ctrl+K X - wyjście z zapisem pliku,
Skróty można podejrzeć w pomocy programu wywoływane kombinacją Ctrl+K H:

Nawigacja po pomocy odbywa się za pomocą skrótów Esc . i Esc , ("escape kropa", "escape przecinek")
Po wywołaniu w edytorze akcji wymagającej interakcji użytkownika, np. wprowadzenie wyszukiwanego tekstu, program wyświetla u dołu terminala zapytanie i pole do wpisania żądanej informacji.
Akcje jak i całe działania programu można przerwać kombinacją Ctrl+C, co staj się intuicyjne dla osób pracujących w terminalu Linuksa, gdzie również działanie programów przerywa się przez Ctrl+C.
Oprócz zestawu skrótów klawiszowych z podstawowymi funkcjami edycji, joe ma zestaw poleceń dostępnych najczęściej za pomocą kombinacji Ctrl+T i dodatkowej litery, lub z menu wywoływanego przez Ctrl+T. Są to komendy służące do np. wyboru typu pliku i rodzaju podświetlania skłdni, przełączenia nadpisywania, przełączania i ustawień wcięć automatycznych. Jedną z ciekawszych funkcji jest tryb blokowy pozwalającyh zaznaczać prostokątny obszar tekstu w poprzek wierszy. Tryb ten przełącza się kombinacją Ctrl+T X. Można go użyć np. do przestawiania kolumn w tekstowym pliku z danymi naukowymi.
Przydatne informacje
Aby wkleić do joe coś ze schowka systemowego, co normalnie robi się z pomocą kombinacji Ctrl+V, możemy użyć kombinacji Ctrl+Shift+V
Analogicznie działa kopiowanie.
Plik konfiguracyjny
W joe, podobnie jak w wiele programach w Linuksie globalne opcje zmienia się za pomocą
plików konfiguracyjnych. Dla joe są to dwa pliki: globalny /etc/joe/joerc
oraz lokalny plik użytkownika ~/.joerc. Po świeżej instalacji plik globalny zawiera
domyślne ustawienia dla wszystkich użytkowników i może być zmieniany przez
administratora systemu. Nim nie będziemy się zajmować w tym artykule.
Natomiast plik ~/.joerc zazwyczaj nie istniej i trzeba go stworzyć samemu.
Zobaczmy to na przykładzie.
joe domyślnie tworzy kopie plików z dołączonym na końcu znakiem ~,
np.
$ ls
salatka-przepis.txt salatka-przepis.txt~
Można uniknąć tworzenia tych plików zmieniając konfigurację programu na swoim koncie.
W tym celu należy wpisać do pliku ~/.joerc linię o treści:
-nobackups
Warto przed tym zaimportować domyślną konfigurację systemową z pliku
/etc/joe/joerc. Jeśli plik .joerc
wcześniej nie istniał jego zawartość powinna wyglądać tak:
:include /etc/joe/joerc
-nobackups
Pliki DEADJOE
Czasami kiedy joe nie zostanie poprawnie zamknięty, to w bieżącym katalogu
pojawia się plik DEADJOE.
Jest to zapis stanu edytora z chwili błędnego zakończenia. Jest to plik
tekstowy, można go podejrzeć za pomocą samego joe. Jeśli nie widzimy w nim
żadnej istotnej treści, można go bezpiecznie usunąć.
Tworzenie plików DEADJOE również można zablokować w pliku ~/.joerc
dodając linię:
-nodeadjoe
Podsumowanie
joe to praktyczny edytor tekstowy do zastosowań terminalowych np. do pracy z plikami konfiguracyjnymi, pisania niewielkich artykułów, prowadzenia notatek, poprawek kodu i pisania skryptów. Edytor ten bardzo dobrze zachowuje się różnych emulatorach terminali, również w pracy zdalnej.
Ten artykuł powstał z użyciem edytora joe.
- Licencja: GNU General Public License version 2.0 (GPLv2)
- Wersja: 4.6
