Linux manual

mcedit


NAZWA
mcedit - terminalowy edytor tekstowy dla systemów Unixowych

SKŁADNIA
mcedit [[+liczba] plik [-bcCdfhstVx?]]

OPIS
mcedit jest dowiązaniem (link) do mc, Midnight Commandera, wymuszając
na nim natychmiastowe uruchomienie wewnętrznego edytora. Edytor ten
jest terminalową wersją cooledit, odrębnego edytora X-window.

OPCJE
+liczba
Przechodzi do wiersza o zadanym numerze (nie należy umieszczać
odstępu pomiędzy znakiem "+" a liczbą).

-b Wymusza wyświetlanie czarno-białe.

-c Wymusza tryb kolorowy na terminalach, dla których mcedit
domyślnie używa trybu czarno-białego.

-C =,:=...
Używane do definiowania innego zestawu kolorów, gdzie
słowo_kluczowe jest jednym z:
normal, selected, marked, markselect, errors, reverse
menu, menusel, menuhot, menuhotsel i gauge.
Kolory są opcjonalne i mogą przyjmować wartości:
black, gray, red, brightred, green, brightgreen, brown,
yellow, blue, brightblue, magenta, brightmagenta, cyan,
brightcyan, lightgray oraz white.
Więcej informacji znajdziesz w sekcji Kolory w mc.1

-d Wyłącza obsługę myszy.

-f Wyświetla wkompilowane ścieżki poszukiwania plików Midnight Com-
mandera.

-t Używane tylko, gdy kod został skompilowany ze Sland i terminfo;
powoduje, że Midnight Commander użyje wartości zmiennej TERMCAP
do uzyskania informacji o terminalu zamiast informacji o syste-
mowej bazie danych terminali.

-V Wyświetla wersję programu.

-x Wymusza tryb xterm. Używane przy uruchamianiu na terminalach
potrafiących obsłużyć xterm (dwa tryby ekranu i zdolne wysyłać
sekwencje specjalne myszy).

FUNKCJE
Wewnętrzny edytor plików posiada większość funkcji powszechnie
używanych edytorów pełnoekranowych. Ma rozszerzalny limit wielkości
pliku (do szesnastu megabajtów) i bezproblemowo edytuje pliki binarne.
Obecnie obsługuje funkcje: kopiowania, przesuwania, usuwania, wycinania
i wstawiania bloków tekstu; klawisz dla klawisza cofania zmian (key for
key undo); rozwijalne menu; wstawianie pliku; definiowanie makr;
wyszukiwanie i zastępowanie z obsługą wyrażeń regularnych (oraz własne
wyszukiwanie i zastępowanie scanf-printf); przełącznik wstawianie-nad-
pisywanie; przenoszenie wyrazów (word-wrap); różnorodne funkcje tabu-
lacji; podświetlanie składni dla różnych typów plików; oraz możliwość
potokowania bloków tekstu poprzez polecenia powłoki jak indent czy
ispell.


KLAWISZE
Edytor jest bardzo prosty w użytkowaniu i nie wymaga szkolenia. Żeby
zobaczyć, co robi który klawisz, po prostu zajrzyj do odpowiedniego
menu rozwijalnego. A oto opis pozostałych klawiszy:

Ruch kursora przy wciśniętym Shift podświetla tekst (tylko na konsoli
Linuksa).
Ctrl-Ins kopiuje do pliku ~/.cedit/cooledit.clip, zaś
Shift-Ins wkleja z pliku ~/.cedit/cooledit.clip.
Shift-Del wycina do ~/.cedit/cooledit.clip,
a Ctrl-Del usuwa podświetlony tekst - wszystkie tylko na konsoli
Linuksa.

Klawisz uzupełnienia (completion key) (patrz mc.1) wykonuje również
twardy Return bez automatycznego wcięcia. Działa także podświetlanie
myszką i możesz unieważnić je jak zwykle przytrzymując klawisz Shift
podczas ciągnięcia myszką, by włączyć normalne podświetlanie myszą ter-
minala.

W celu zdefiniowania makra naciśnij Ctrl-R i użyj sekwencji klawiszy,
jaką chciałbyś zarejestrować. Na koniec naciśnij powtórnie Ctrl-R.
Możesz teraz przypisać makro do dowolnego klawisza naciskając go. Makro
zostanie wykonane, gdy naciśniesz Ctrl-A a następnie przypisany klaw-
isz. Makro wykonywane jest również po naciśnięciu Meta, Ctrl lub Esc i
przypisanego klawisza, pod warunkiem, że sekwencja ta nie jest używana
do obsługi innej funkcji. Po zdefiniowaniu makra zapisywane są w pliku
~/.cedit/cooledit.macros. Nie modyfikuj go, chyba że nie zamierzasz
ponownie używać makr w tej samej sesji edycji, gdyż mcedit buforuje
definicje makr w pamięci. mcedit nadpisuje makro jeżeli makro przyp-
isane do tego samego klawisza już istnieje, więc nie będziesz musiał
zmieniać tego pliku. Musisz ponownie uruchomić inne działające procesy
edytora, by zadziałały zmienione makra.

F19 sformatuje podświetlony kod C. W celu włączenia tej cechy stwórz
plik wykonywalny .cedit/edit.indent.rc w swoim katalogu domowym zaw-
ierający:

#!/bin/sh
# Użyj $HOME zamiast ~ jeśli nie działa.
# Być może będziesz też musiał użyć innej składni
# przekierowania wyjścia
usr/bin/ident -kr -pcs ~/.cedit/cooledit.block >& /dev/null
cat /dev/null > ~/.cedit/cooledit.error

C-p w podobny sposób uruchomi ispell na bloku tekstu. Odpowiednim
plikiem jest .cedit/edit.spell.rc.

#!/bin/sh
# Użyj $HOME zamiast ~ jeśli nie działa.
# Być może będziesz też musiał użyć innej składni
# przekierowania wyjścia
/usr/local/bin/ispell ~/.cedit/cooledit.block >& /dev/null
cat /dev/null > ~/.cedit/cooledit.error


PRZEDEFINIOWYWANIE KLAWISZY
Klawisze mogą być redefiniowane w menu opcji Midnight Commandera.

PODŚWIETLANIE SKŁADNI
Od wersji 3.6.0 cooledit posiada podświetlanie składni. Oznacza to, że
słowa kluczowe i elementy języka (jak komentarze C, stałe łańcuchowe
itd.) podświetlane są różnymi kolorami. Poniższy fragment wyjaśnia
format pliku ~/.cedit/syntax.

Plik ~/.cedit/syntax jest ponownie przeglądany przy otwieraniu w
edytorze każdego nowego pliku. Zawiera on reguły podświetlania, każdą w
osobnej linii, i definiuje, jakie słowa kluczowe będą podświetlane
jakim kolorem. Plik jest podzielony na sekcje, z których każda
rozpoczyna się linią z poleceniem file zakończonym wyrażeniem regu-
larnym. Wyrażenie regularne określa nazwę pliku, do jakiego odnosi się
dany zestaw reguł.

Po nim następuje opis wyświetlany po lewej stronie okna edytora,
objaśniający użytkownikowi typ pliku. Trzecim, opcjonalnym argumentem
jest wyrażenie regularne dopasowujące pierwszą linię tekstu pliku. Dane
reguły zostaną wczytane jeśli dopasowano nazwę pliku bądź pierwszą
linię tekstu.

Sekcja kończy się z początkiem kolejnej sekcji. Każda sekcja podzielona
jest na konteksty, a każdy kontekst zawiera reguły. Kontekst jest
zakresem wewnątrz tekstu, do którego odnosi się konkretny zestaw reguł.
Na przykład, obszar w obrębie komentarza w stylu C (tj.pomiędzy /* a
*/) ma swój własny kolor. To jest kontekst, mimo iż nie będzie miał w
środku innych reguł, gdyż raczej nie ma niczego, co chcelibyśmy
podświetlić wewnątrz komentarza C.

Prosta sekcja programu w C może wyglądać tak:

file .*.c CsProgramsFile (#include|/*)

wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_

# kolory domyślne
context default
keyword whole if 24
keyword whole else 24
keyword whole for 24
keyword whole while 24
keyword whole do 24
keyword whole switch 24
keyword whole case 24
keyword whole static 24
keyword whole extern 24
keyword { 14
keyword } 14
keyword "*" 6

# komentarze C
context /* */ 22

# dyrektywy preprocesora C
context linestart # 18
keyword 24

# stałe łańcuchowe C
context " " 6
keyword %d 24
keyword %s 24
keyword %c 24
keyword " 24

Każdy kontekst rozpoczyna się linią postaci:
context [exclusive] [whole|wholeright|wholeleft] [linestart]
ogranicznik [linestart] ogranicznik [kolor_znaków] [kolor_tła]
Jedynym wyjątkiem jest pierwszy kontekst. Musi on rozpoczynać się
poleceniem
context default [kolor_znaków] [kolor_tła]
albo cooledit zwróci błąd.

Opcja linestart nakazuje, by ogranicznik zaczynał się od początku
linii.

Opcja whole określa, że ogranicznik musi być całym wyrazem. Całe wyrazy
są tworzone z zestawu znaków, który może zostać zmieniony w dowolnym
miejscu pliku przy pomocy polecenia wholechars. Polecenie wholechars
umieszczone na samym początku ustawia zestaw znaków dokładnie na jego
wartość domyślną i w związku z tym mogłoby być pominięte. Możesz użyć
opcji wholeleft dla wskazania, że słowo musi być pełne tylko z lewej
strony, i podobnie dla prawej. Lewy i prawy zestaw znaków może być
ustawiony odrębnie przy pomocy wholechars [left|right] characters

Opcja exclusive powoduje, że podświetlony zostanie tekst pomiędzy
ogranicznikami, ale nie one same.

Każda reguła jest linią postaci:
keyword [whole|wholeright|wholeleft] [linestart] łańcuch znakowy
kolor_znaków [kolor_tła]
Łańcuchy znakowe kontekstu i słów kluczowych są interpretowane, tak że
możesz użyć tabulatorów i spacji przy pomocy sekwencji i s. Znaki
nowej linii i są wyszczególniane przy pomocy odpowiednio i .
Wynika to z tego, że separatorem jest biały znak, zatem nie może on
zostać użyty wprost. Również znak * musi być podany jako *. Samo *
jest znakiem uogólniającym, który dopasowuje dowolną liczbę znaków. Na
przykład
keyword "*" 6
koloruje wszystkie jednoznakowe stałe C na zielono. Mógłbyś również
użyć
keyword "*" 6
do pokolorowania stałych łańcuchowych, z wyjątkiem tego, że dopasowany
łańcuch nie może kończyć się w innej linii. Znaki uogólniające mogą być
też użyte wewnątrz ograniczników kontekstu, ale nie mo�żesz u�ży�ć znaku
uog�ólniaj�ącego jako pierwszego lub ostatniego.

Godna uwagi jest linia
keyword 24
Linia ta definiuje słowo kluczowe zawierające znak oraz znak nowej
linii. Ponieważ słowa kluczowe mają wyższy priorytet niż ograniczniki
kontekstu, to słowo kluczowe zapobiega temu, by kontekst kończył się na
końcu linii, jeśli linia kończy się na . Umożliwia zatem prawidłowe
podświetlenie dyrektywy preprocesora C nakazującej kontynuację w kole-
jnej linii.

Kolory są numerowane od 0 do 26. Możesz też posłużyć się dowoln�ą z
nazw kolorów wyszczególnionych w pliku /usr/lib/X11/rgb.txt, ale tylko
w wersji jednowyrazowej. Lepiej jest pozostać przy kolorach wyrażonych
liczbowo, by ograniczyć użycie palety kolorów.

Komentarza mogą być umieszczane w odrębnych liniach; zaczynają się one
od znaku #.

Z powodu prostoty rozwiązania, jest w nim trochę zawikłań, które nie
zostaną poprawnie obsłużone, ale nie są one zbyt irytujące. Na ogół
przy pomocy powyższych prostych reguł obsługiwany jest szeroki wachlarz
całkiem skomplikowanych sytuacji. Dobrze jest przyjrzeć się plikowi
składni, by zaczerpnąć pomysły prostych trików, jakie można wykorzystać
przy odrobinie wyobraźni. Jeżeli nie możesz uporać się z regułami,
jakie zakodowałem, a sądzisz, że masz regułę, która może być przydatna,
wyślij mi, proszę, e-mail ze swoim życzeniem. Nie proś jednak o obsługę
wyrażeń regularnych, gdyż jest to stanowczo niemożliwe.

Użyteczną wskazówką może być praca przy maksymalnym wykorzystywaniu
mo�żliwo�ści zamiast prób robienia rzeczy, z którymi ta implementacja
sobie nie radzi. Pamiętaj również, że celem podświetlania składni jest
zmniejszenie błędów przy programowaniu, a nie pokazanie ładnego kodu.


KOLORY
Domyślne kolory mogą być zmienione przez dodanie do zmiennej środowiska
MC_COLOR_TABLE. Pary kolorów znaków i tła mogą być określone na
przykład przy pomocy
MC_COLOR_TABLE="$MC_COLOR_TABLE:editnormal=lightgray,black:edit-
bold=yellow,black:editmarked=black,cyan"

OPCJE
Obecnie większość opcji może zostać ustawiona w oknie dialogowym opcji
edytora. Patrz menu Options (Opcje). Objaśnione poniżej opcje zdefin-
iowane są w .mc.ini i mają oczywiste odpowiedniki w oknie dialogowym.
Możesz je zmieniać, by zmienić zachowanie edytora, zmieniając plik.
Jeżeli nie podano inaczej, to tradycyjnie 1 ustawia włącza opcję, 0 ją
wyłącza.

use_internal_edit
Ignorowana przy wywoływaniu mcedit.

editor_key_emulation
1 dla klawiszy Emacsa, 0 dla zwykłych klawiszy Cooledit.

editor_tab_spacing
Długość znaku tabulacji. Domyślnie 8. Powinieneś unikać używania
innych wartości, gdyż większość innych edytorów i przeglądarek
tekstu zakłada tabulatory długości 8. Posłuż się opcją edi-
tor_fake_half_tabs chcąc symulować mniejsze odstępy tabulacji.

editor_fill_tabs_with_spaces
Nigdy nie wstawiaj znaków tabulacji. Wstaw zamiast nich odstępy
(ASCII 20h) wypełniające zadany rozmiar tabulacji.

editor_return_does_auto_indent
Automatyczne wcięcia. Naciśnięcie Return przesuwa kolejnymi
pozycjami tabulacji aż do osiągnięcia takiego samego wcięcia,
jak w pierwszej poprzedzającej linii zawierającej tekst.

editor_backspace_through_tabs
Pojedyncze naciśnięcie Backspace usuwa wszystkie odstępy aż do
lewego marginesu (jeśli nie ma tekstu pomiędzy kursorem a lewym
marginesem).

editor_fake_half_tabs
Emuluje połówki tabulacji. Dla potrzebujących tabulacji z krok-
iem 4, ale bez zmiany rozmiaru tabulacji z domyślnego 8 (kod
będzie tak samo sformatowany przy wyświetlaniu przez inne pro-
gramy). W trakcie edycji pomiędzy tekstem a lewym marginesem
przesuwanie i wstawianie tabulacji będzie zachowywać się tak,
jakby krokiem tabulacji było 4. W rzeczywistości do optymalnego
wypełniania będą używane odstępy i zwykłe tabulatory. Przy edy-
cji w innych miejscach wstawiany jest zwykły tabulator.

editor_option_save_mode
(0, 1 lub 2.) Tryb zachowywania (patrz również menu opcji)
pozwala na zmianę metody zapisywania pliku. Zachowywanie szybkie
(0) zapisuje plik natychmiast, obcinając (trunctate) plik
dyskowy do długości zerowej (tj.wymazując go) i zapisując do
niego zawartość edytora. Metoda ta jest szybka, ale niebez-
pieczna, gdyż błąd systemowy podczas zapisu pliku pozostawi
częściowo zapisany plik, prawdopodobnie uniemożliwiając
odzyskanie danych. Użycie opcji zachowywania bezpiecznego (1)
włącza tworzenie pliku tymczasowego, do którego wstępnie zapisy-
wana jest zawartość zmienionego pliku. W przypadku kłopotów
pierwotny plik jest nienaruszony. Po pomyślnym zapisaniu pliku
tymczasowego zmieniana jest jego nazwa na nazwę pliku pierwot-
nego, powodując jego zastąpienie. Najbezpieczniejszą metodą jest
tworzenie kopii zapasowych (2). Kopia zapasowa tworzona jest
przed dokonaniem jakichkolwiek zmian. W oknie dialogowym możesz
podać własne rozszerzenie plików kopii. Zauważ, że podwójne
zachowanie pliku zastąpi zarówno kopię zapasową jak i pierwotny
plik.

RÓŻNE
(Wyszukiwanie i zastępowanie scanf poprzednio nie działało poprawnie. W
obecnej edycji problemy z wyszukiwaniem i zastępowaniem zostały
usunięte.)

Możesz użyć wyszukiwania i zastępowania typu scanf do wyszukania i
zastąpienia łańcucha znakowego w formacie C. Przejrzyj najpierw strony
podręcznika systemowego omawiające sscanf i sprintf, by zapoznać się z
opisem budowy formatu łańcuchowego i jego działaniem. A oto przykład:
załóżmy, że chcesz zamienić wszystkie wystąpienia, powiedzmy,
otwierającego nawiasu, trzech oddzielonych przecinkami liczb i nawiasu
zamykającego, na słowo czerwone, trzecią z liczb, słowo czarne i drugą
z liczb. Powinieneś wówczas wypełnić okno dialogowe Replace (zastąp)
jak niżej:
Enter search string
(%d,%d,%d)
Enter replace string
czerwone %d czarne %d
Enter replacement argument order
3,2
Ostatnia linia nakazuje, by w miejsce pierwszej i drugiej liczby
zostały użyte trzecia a następnie druga z liczb.

Zaleca się użycie tej funkcji z włączonym potwierdzaniem zastępowania
(Prompt On Replace), gdyż dopasowanie jest znalezione, gdy liczba
znalezionych argumentów odpowiada liczbie podanych, co nie zawsze jest
rzeczywistym dopasowaniem. Ponadto scanf traktuje białe znaki jako
"rozciągliwe". Zauważ, iż format scanf %[ jest bardzo przydatny do
wyszukiwania łańcuchów znakowych i białych znaków.

Edytor wyświetla także znaki spoza USA (non-US) (o kodach od 160).
Przy modyfikacji plików binarnych powinieneś w menu opcji Midnight Com-
mandera ustawić liczbę bitów wyświetlania (display bits) na 7, co
zapewni porządne wyświetlanie odstępów.

PLIKI
/opt/gnome/mc.hlp

Plik pomocy programu.

/opt/gnome/lib/mc/mc.ini

Ogólnosystemowy plik konfiguracyjny Midnight Commandera, używany
wyłącznie, gdy użytkownik nie posiada własnego pliku ~/.mc.ini.

/opt/gnome/lib/mc/mc.lib

Globalne ustawienia Midnight Commandera. Ustawienia w tym pliku
są globalne dla każdej sesji Midnight Commandera. Przydatny do
zdefiniowania ustawień terminala obowiązujących dla całego sys-
temu (site-global).

$HOME/.mc.ini

Prywatna konfiguracja użytkownika. Jeśli istnieje, to konfigu-
racja odczytywana jest z tego właśnie pliku, zamiast z
ogólnosystemowego pliku startowego.

$HOME/.cedit/

Tymczasowy katalog użytkownika. Przetwarzane i zapisywane są w
nim polecenia operujące na blokach tekstu.

LICENCJA
Niniejszy program jest rozpowszechniany na warunkach licencji GNU Gen-
eral Public Licence opublikowanych przez Free Software Foundation.
Wbudowana pomoc Midnight Commandera zawiera Licencję, w szczególności
zastrzeżenie dotyczące braku gwarancji.

DOSTĘPNOŚĆĄ
Najświeższą wersję programu odnajdziesz na
ftp.nuclecu.unam.mx w katalogu /linux/local
oraz w Europie:
na sunsite.mff.cuni.cz w katalogu /GNU/mc
i na ftp.teuto.de w katalogu /lmb/mc.

Wersję dla X Window można znaleźć na
sunsite.unc.edu w katalogu /pub/Linux/apps/editors/X
lub też na argeas.argos.hol.gr w /pub/unix/cooledit.

PATRZ TAKŻE
cooledit(1), mc(1), gpm(1), terminfo(1), scanf(3).

AUTORZY
Twórcą edytora wbudowanego w program Midnight Commander jest Paul Sheer
(psheer@obsidian.co.za).

BŁĘDY
Więcej szczegółów znajdziesz w pliku README.edit dostarczanym w
pakiecie dystrybucyjnym.

Czy wiesz że? Jednym z najpopularniejszych programów do bezpośredniej wymiany plików jest winamp. Program dedykowany jest na platformę Windows.