Jednym z najczęściej występujących narzędzi na naszych systemach operacyjnych są programy, które pozwalają nam na edycję tekstu. W Linuksie obok kompilatorów, debugerów czy innych narzędzi najczęściej właśnie jest spotykany edytor tekstowy. Służą one nam nie tylko do edytowania dokumentów czy czytania różnych prac, ale również do zmian w plikach konfiguracyjnych. Edytorów jest pełno. Poczynając od tych najbardziej podstawowych jak pico, nano, ed, ex, poprzez mcedit, typowo programistyczne jak joe bardzo rozbudowane jak vi, vim czy emacs aż po te graficzne jak KWrite, Kate, GEdit.

Swoją uwagę chcę skupić jednak na edytorach konsolowych, gdyż to one najczęściej są we wszystkich klonach systemu UNIX. Vi a praktycznie teraz Vima można spotkać w każdej dystrybucji Linuksa.

Vim - Edycja kilku plików

Zasadnicza różnica pomiędzy współczesnymi graficznymi edytorami a edytorami a edytorami takimi jak ex polega na skupieniu uwagi użytkownika na pracy z jednym wierszem tekstu. Plik tekstowy zostaje więc podzielony na poszczególne wiersze, które mogą być modyfikowane przez użytkownika pojedynczo za pomocą poleceń wydawanych programowi w trybie interaktywnym, w podobny sposób jak w wierszu poleceń systemów DOS lub UNIX.

VI – Visual In ex

Vi – jest to konsolowy edytor tekstowy. Jego twórcą jest William Nelson Joy (ur. 1954) znany jako Bill Joy. W 1976 roku napisał program vi dla bardzo wczesnego wydania systemu BSD (Berkeley Software Distribution, czasem nazywane Berkeley Unix). Dziś dość rzadko używa się czystego vi w codziennej praktyce, ponieważ został on wyparty przez swoje klony takie jak VIM, nvi lub elvis. Mimo tego vi nadal pozostaje jednym z cenniejszych i wygodnych narzędzi administratora systemu, ze względu na jego ogromną powszechność występowania oraz jednolitość implementacji.

Vi w przeciwieństwie do innych edytorów (poza jego klonami) jest edytorem modalnym. Oznacza to w praktyce, że edytor znajduje się w dwóch trybach pracy: tryb wstawiania (pisanie, kasowanie) oraz tryb poleceń (zapis, wyjście z edytora).

Zaraz po uruchomieniu program znajduje się w trybie poleceń. Jak widać vi jest słabo rozbudowanym graficznie programem. Jego ekran można podzielić na dwa obszary: pierwszy to obszar edycji a drugi to obszar poleceń. Tak naprawdę ten drugi to jedna linia na dole ekranu. Aby przejść do trybu wstawiania należy wydać polecenie i (insert – wstawianie) lub a (append – dopisywanie). Polecenia są wykonywane automatycznie. Nie trzeba ich potwierdzać przez wciskanie klawisza [Enter]. Aby wrócić do trybu poleceń wciskamy guzik [Esc].

Tak naprawdę vi jest jedynie edytorem ex działającym w trybie wizualnym (Visual In ex). Zatem wszystkie polecenia tegoż edytora są akceptowane przez vi. Polecenia programu ex wydawane są w trybie poleceń poprzez poprzedzenie ich dwukropkiem oraz wymagają one potwierdzenia klawiszem [Enter]. Kilka przykładowych poleceń ex:

  • :q! – wyjście bezwzględne, bez zapisu danych. Nie zapisane dane zostaną stracone
  • :q – wyjście pod warunkiem braku zmian od ostatniego zapisu. W innym przypadku program będzie prosił o skorzystanie z polecenia q!
  • :help – wyświetl pomoc. Przydatna lektura.
  • :w – zapis pliku
  • :w nazwa – zapis pliku pod nową nazwą
  • :e nazwa – otworzenie pliku do edycji

Polecenia można ze sobą łączyć i tak na przykład wydając polecenie :wq program zapisze edytowany przez nas plik po czym zakończy swoje działanie i wrócimy bezpiecznie do konsoli systemowej.
Kilka przykładowych poleceń vi:

  • ZZ – zapisuje dane w pliku i kończy pracę programu. (odpowiednikiem ex jest :wq)
  • h – przesuwa kursor o jeden znak w lewo
  • j – przesuwa kursor o jeden znak w dół
  • k – przesuwa kursor o jeden znak w górę
  • l – przesuwa kursor o jeden znak w prawo
  • w – przesuwa kursor o jedno słowo w prawo
  • b – przesuwa kursor o słowo w lewo
  • 0 – przesuwa kursor na początek wiersza
  • $ – przesuwa kursor na koniec wiersza
  • i – przechodzi do trybu wstawiania w miejscu kursora
  • a – przechodzi do trybu wstawiania za kursorem
  • x – usuwa znak z bieżącego wiersza w miejscu kursora

Większość z tych poleceń może być poprzedzona liczbą, na przykład 256x oznaczać będzie usunięcie kolejno 256 znaków z bieżącego wiersza.

VIM – VI iMproved

VIM – jest to mocno rozbudowana wersja znanego już nam edytora tekstowego vi. Twórcą tego programu jest Bram Moolenaar – holenderski programista. Edytor powstał w 1991. Oficjalną stroną projektu jest vim.org. Również jaki vi, vim są standardowo instalowany na wielu systemach operacyjnych i praktycznie rzecz biorąc vi jest zastępowane przez vima. Program uruchamiamy poleceniem:

[paszczak000@marta ~]$ vim

ale równie dobrze możemy wpisać vi, gdyż zapewne będzie to dowiązanie symboliczne do vima. Sam program po uruchomieniu przypomina nam swego poprzednika.

Vim - Pierwsze uruchomienie

Vim jak już wiadomo jest następcą edytora vi i zachowuje z nim pełną kompatybilność, co znaczy, że osoby potrafiące obsługiwać się vi bez żadnych problemów poradzą sobie z Vimem. Poza wsteczną kompatybilnością edytor został wyposażony w możliwość wielokrotnego wycofywania dokonanych zmian na edytowanym dokumencie. Domyślnie można cofnąć edycję aż tysiąckrotnie, kiedy zwykłe vi ograniczało się tylko do jednego cofnięcia. Zostały również poprawione różne efekty wizualne. Obecnie można przewijać ekran w poziomie. Przydaje się ta opcja przy edycji bardzo długich wierszy. W Vimie pojawia się 26 rejestrów (schowków) nazwanych dowolną literą alfabety do której można kopiować fragmenty tekstu. Zakres A – Z służy do kopiowania tekstu między plikami a edycja kilku plików jest możliwa w osobnych oknach (tzw. buforach).

Z kolejnych zmian jakie zostały wprowadzone do edytora jest możliwość kolorowania składni ponad kilkuset języków programowania. Vim wspiera języki takie jak PHP, HTML, C, C++, Perl etc oraz teksty przeznaczone dla narzędzi programistycznych takich jak: ctags, make, CVS czy GCC.

Inne ciekawsze rozwiązania jakie zostały wprowadzone to między innymi: możliwość przeglądania historii poleceń ex, przeglądanie katalogów (w osobnym oknie także na konsoli tekstowej i bez opuszczania edytowanego pliku), budowanie rozszerzeń, makr, zmianę w przypisaniach klawiszy, zapisywanie/otwieranie pliku w postaci zaszyfrowanej oraz obsługa rozszerzonych wyrażeń regularnych. To ostatnie w stopniu zbliżonym do wyspecjalizowanych, uniksowych narzędzi takich jak np. awk.

Mimo iż vim jest typowo konsolowym edytorem powstało wiele jego wersji działających w środowisku graficznym (również w systemach firmy Microsoft). Takim przykładem może być gvim W odróżnieniu od vi, VIM może pracować zarówno w sposób modalny jak i w trybie ciągłej edycji.

Konfiguracja Vima

Jeżeli znudziła Ciebie monotonia wyglądu i funkcjonalności edytora możesz zabrać się za konfigurację tego programu dla swoich potrzeb. Za pomocą kilku poleceń czy opcji z surowego i nieprzyjaznego dla oka programu możesz cieszyć intelekt i oko bogactwem funkcji czy kolorów. Konfigurację programu można przeprowadzić w dwojaki sposób. Jedną z nich jest wpisywanie komend w trakcie działania vima a drugą poprzez dopisanie odpowiednich poleceń w pliku konfiguracyjntm wczytywanym w czasie inicjalizacji. W systemach klasy GNU/Linux i Unix plik .vimrc znajduje się w katalogu domowym użytkownika. W systemach MS-DOS i Win32 odpowiada mu _vimrc. Więcej informacji na ten temat możesz przeczytać wywołując polecenie :h vimrc. Przykładowe opcje jakie można dopisać do pliku konfiguracyjnego:

Polecenie / Opcja Opis / Właściowści
syntax on włącza podświetlanie składni
set textwidth=XX ustawia długość linii na XX znaków
set noet ts=X sw=X ustawia wielkość tabulacji na X
set noautoindent wyłącza auto-wcięcia
set incsearch wyszukuje frazę podczas wpiwywania szukanego słowa
set number włącza numerowanie wierszy
set ruler pokazuje statystyki
set history=XX wielkość historii poleceń, gdzie XX to ilość zapamiętanych poleceń
set nocompatible wyłącza kompatybilność z vi
set backspace=indent,eol,start zawija tekst przy końcu linii
set showmode pokazuje tryb w jakim jesteśmy w lewym dolnym rogu
set showcmd pokazuje polecenia w prawym dolnym rogu
set formatoptions+=1 przenosi pojedyńcze literky do nowego wiersza
set backup tworzy kopie zapasowe plików
set backupdir=~/backup/,/tmp określa katalog, w którym tworzone będą kopie zapasowe
set laststatus=1 włącza pokazywanie linii statusu
filetype plugin indent on włącza odpowiednie pluginy dla danego typu pliku
autocmd BufNewFile * startinsert każdny nowy plik będzie rozpoczynany w trybie WPROWADZANIE
let g:html_use_css= “1 korzysta z ze styli css dla plikow html

Również możemy dopisać w tym pliku różne funkcje, które uprzyjemnią pracę z edytorem.

" umieszcza kursor w miejscu gdzie był ostatnio
autocmd BufReadPost *
	 if line("'"") > 0 && line ("'"") <= line("$") |
		exe "normal g`"" |
	 endif

" nie pozwala na modyfikowanie plikow tylko do odczytu
au BufReadPost * :call CheckReadonly()
function! CheckReadonly()
	if version >= 600
	if &readonly

	setlocal nomodifiable
	endif
	endif
endfunction

Jak widać są to bardzo proste skrypty, które uaktywniają podstawowe funkcje edytora. Więcej z nich (bardziej zaawansowanych i przydatnych) można wyszukać w Internecie, przeczytać w dokumentacji programu czy nawet podręczniku man. Wiele ciekawych skryptów znajduje się na stronie Josa von Riswicka lub na stronie vim.org.

Jeżeli chodzi o instalację skryptów oraz informacje na temat pliku vimrc można przeczytać wywołując polecenie :help source.

Vim mimo swoich bardzo imponujących możliwości a szczególnie pod względem automatycznego przetwarzania tekstu ma jednak kilka wad. Największym problemem jest operacja na pionowych blokach tekstu. Nie sprawia nam problemu skopiowanie pionowego bloku (tryb VISUAL BLOCK z włączanym kombinacją Ctrl-V względnie Ctrl-Q w trybie symulowania klawiszy edytorów firmy Microsoft). Natomiast problemem może być zastąpienie takim blokiem w trybie REPLACE innego bloku. Z reguły uzyskamy coś innego niż oczekiwaliśmy. Dzieje się tak dlatego, że Vim jest nadal edytorem wierszowym. Został on stworzony głównie do pisania kodu przez programistów a nie do zabawy na przykład z ASCII ART (gdzie swobodne manipulacje na pionowych blokach tekstu wymagają traktowania ekranu raczej jak matrycy znaków niż zbioru wierszy).

Z tego samego powodu poruszanie się w pionie po bardzo długich zawiniętych wierszach za pomocą klawiszy kierunku może sprawiać kłopoty. Powodują one zbyt długie skoki o tyle wierszy ekranowych, ile wymagało wyświetlenie fizycznego, zawiniętego do szerokości ekranu wiersza. Zgodne z oczekiwaniami działanie tych klawiszy można wymusić dopiero poprzedzając je literą g, przed którą, opcjonalnie, podaje się liczbę ekranowych wierszy, o jaką kursor ma się przemieścić. Aby wygodnie przesuwać tekst w pionie zalecam posługiwania się klawiszami [k] – góra, oraz [j] – dół. Są to polecenia starego i dobrego vi.

Tryby pracy Vima

Vim jest edytorem posiadającym więcej niż jeden tryb w jakim może pracować. Wyróżnia się trzy najbardziej elementarne tryby (NORMAL, INSERT i COMMAND-LINE/EX) oraz jak mówi twórca Vima sześć trybów podstawowych (basic modes) i 5 dodatkowych (additional modes). Opis oraz zasady działania każdego z trybów jest opisany w bardzo obszernej dokumentacji dostępnej w programie. Po wydaniu polecenia :help vim-modes zobaczymy terminologię i specyfikę trybów.

Zmiana trybów jest prosta i intuicyjna. Domyślnie program po uruchomieniu działa w trybie NORMAL. Tryby można zmieniać wciskając klawisz [Insert]. Jeżeli chcemy uzyskać tryb VISUAL możemy wcisnąć literkę v (wielkość liter ma znaczenie). Tryb REPLACE można uzyskać wciskając R lub będąc w trybie INSERT naciskając guzik [Insert]. Jak sama nazwa wskazuje tryb REPLACE służy do nadpisywania liter stojących za kursorem. Jakkolwiek szybka podmiana dłuższego fragmentu tekstu bez zmiany liczby znaków w pliku wynikowym jest mniej trywialna. Przynajmniej z punktu widzenia użytkownika przyzwyczajonego do pozornej intuicyjności edytorów nie-modalnych.

  • przełącz się w tryb VISUAL (v).
  • zaznacz w dowolny sposób ciąg znaków do skopiowania, którym zastąpisz inny ciąg. Tekst zaznaczasz za pomocą myszki bądź jednego z czterech klawiszy kierunkowych. Po zaznaczeniu tekstu naciśnij literkę [y]. Zaznaczenie zostanie skopiowane do pamięci podręcznej programu (rejestru). Maksymalnie możesz skopiować do 26 fragmentów. Zostaną one skopiowane do innych rejestrów nazwanych literami alfabetu. Aby to zrobić zaznacz tak jak poprzednio tekst oraz naciśnij kombinację klawiszy: [“] + [dowolna litera] + [y].
  • przełącz się w tryb REPLACE (R).
  • ustaw swój kursor edytora w miejscu, od którego ma nastąpić zastąpienie ciągu znaków. Aby uzyskać dostęp do pamięci rejestru należy przytrzymać jednocześnie klawisze

    [Ctrl] oraz [r] (w dokumentacji ta kombinacja oznaczana jest jako CTRL-R). W rezultacie, znak stojący pod kursorem zostanie chwilowo (tylko na ekranie) zastąpiony znakiem podwójnego cudzysłowu. Na kolorowym terminalu będzie on wyróżniony kolorem niebieskim dla podkreślenia jego tymczasowego charakteru.

  • ręcznie wpisać znak cudzysłowu (ostatnio skopiowany fragment zawsze trafia do tak oznaczonego, domyślnego rejestru). Ciąg znaków zostanie wklejony, co w trybie REPLACE oznacza jego podmianę. Edycja dobiegła końca.

Jeżeli chodzi o wklejanie fragmentów tekstu pomocna jest kombinacją klawiszy [Ctrl] + [r] + litera [a-z].

Czasem się zdarza, że w naszym tekście występują “krzaczki”. Trzeba wtedy zmienić kodowanie tekstu by uzyskać np. polskie znaki diakrytyczne. Robi się to następująco:

:e ++enc=

Przykłady kodowania znaków:

  • ‘termencoding’ jest zestawem znaków dla klawiatury, oraz (tylko w konsolowym Vimie) dla ekranu.
  • ‘printencoding’ jest zestawem znaków dla drukarki, jeśli oba +printer i +postscript są wkompilowane.
  • :se enc=utf8 – ustawienie w VIM-ie kodowania UTF-8
  • :se tenc=iso-8859-2 – poinformowanie VIM-a o obowiązującym kodowaniu na konsoli (terminal encoding)

Vim obsługuje również automatyczną konwersję znaków:

  • ‘fileencoding’ na ‘encoding’ podczas czytania z dysku
  • ‘termencoding’ na ‘encoding’ podczas wpisywania z klawiatury
  • (tylko w konsolowym Vimie): ‘encoding’ na ‘termencoding’ podczas wyświetlania
  • ‘encoding’ na ‘printencoding’ podczas drukowania przez PostScript
  • ‘encoding’ na ‘fileencoding’ podczas zapisu na dysk

Polecenia Vima

Najczęściej używane i znane polecenia są poleceniami trybu Ex. Ich składnia jest następująca:

:%s/wyrażenie regularne lub tekst docelowy/tekst dotychczasowy/gc

Znak procenta [%] oznacza, że polecenia zmiany tekstu będą działały na całym pliku. Ukośniki [/] separują poszczególne części polecenia. litera [g] (global) nakazuje wykonać polecenie maksymalną liczbę razy (domyślnie tylko raz dla każdego z wierszy). Końcowe, opcjonalne

wymusza interaktywność – potwierdzanie wykonania polecenia w przypadku odnalezienia ciągu spełniającego podane kryterium.
Wszystkie podstawowe polecenia vi są obsługiwane przez Vima. Mimo tego dochodzi jeszcze setka innych poleceń, które się bardzo przydają. Poniżej lista najciekawszych poleceń:

tryb NORMAL

  • ga – wartość kodu ASCII znaku spod kursora (dziesiętnie, szesnastkowo, ósemkowo)
  • g8 – wartość kodu znaku spod kursora przy założeniu, że jest to UTF-8
  • 50% – skok na połowę pliku
  • 10000go – skok do dziesięciotysięcznego bajtu pliku
  • g Ctrl-g – komplet informacji o pliku i położeniu kursora (kolumna, wiersz, słowo, liczba bajtów)
  • q: – otwarcie okna z historią poleceń trybu Ex

Sex w trybie Ex

  • :Sex – otwarcie okna z widokiem zawartości bieżącego katalogu (Split file explore)
  • :as – wartość kodu ASCII znaku spod kursora (dziesiętnie, szesnastkowo, ósemkowo)
  • :se wrap | se nolist | se lbr – zawinięcie długich wierszy z eleganckim łamaniem na granicy słów
  • :se noma – skuteczna blokada pliku (bufora) przed modyfikacją
  • :se ff=unix – wymuszenie uniksowego, pojedynczego znaku końca wierszy (spod dowolnego systemu)
  • :se is | se hls – włączenie przyrostowego podświetlenia wystąpień znaków spełniających kryterium wyszukiwania
  • :se vb – włączenie sygnału optycznego (visual bell) w miejce akustycznego
  • :sp nazwa_pliku – otwarcie nowego okna (bufora) edycyjnego w poziomie
  • :vsp nazwa_pliku – otwarcie nowego okna (bufora) edycyjnego w pionie
  • :%s/<[^>\n]*>//g – “oczyszczenie” pliku z kodu HTML
  • :syntax on – włączenie reguł podświetlania składni (wg rozszerzenia pliku)
  • :se syn=css – wymuszenie podświetlania składni wg reguł “języka” CSS2 (gdy rozszerzenie nie oddaje zawartości – np. .txt zamiast .css)

Inne ciekawe polecenia obsługiwane również przez vi

  • :set list – Znaki [$] pokażą koniec każdej linii
  • :set nolist – wyłącza :set list
  • :set number – numeracja linii
  • :set nonumber – brak numeracji linii
  • :set showmode – pokazuje tryby pracy edytora
  • :set noshowmode – ukrywa tryby pracy edytora
  • [Ctrl] + [f] – przesuwa tekst o jedną stronę
  • [Ctrl] + b – przesuwa tekst o jedną stronę wstecz
  • [G] – przeskakuje na koniec pliku/tekstu. Odpowiednikiem jest wydanie polecenia :$
  • [Ctrl] + u – przesuwa tekst w górę o pół ekranu
  • [Ctrl] + [d] – przesuwa tekst w dół o pół erkanu
  • [Ctrl] + [y] – przesuwa ekran w górę, nie przemieszczając kursora
  • [Ctrl] + [e] – przesuwa ekran w dół, nie przemieszczając kursrora
  • [M] – skocz do środka ekranu
  • [L] – skocz do końca ekranu
  • [H] – skocz do początku ekranu
  • [}] – paragraf w dół
  • [{] – paragraf w górę
  • [0] – przenosi kursor na początek linii
  • [$] – przenosi kursor na koniec linii
  • [^] – przenosi kursor do pierwszego znaku w linii. Omija białe znaki.
  • [w] – przesuwa kursor do początku następnego słowa
  • b – przesuwa kursor do początku poprzedniego słowa
  • [e] – przesuwa kursor na koniec następnego słowa
  • :9 – przenosi kursor na początek 9 linii
  • 18| -przenosi kursor na 18 znak w aktualnej linii
  • ITekst – wstawia ciąg “Tekst” na początku aktualnej linii
  • iTekst – wstawia ciąg “Tekst” w aktualnej pozycji kursora
  • ATekst – dodaje ciąg “Tekst” na końcu aktualnej linii
  • aTekst – dodaje łańcuch znaków “Tekst”
  • oTekst – otwiera nowa pustą linię poniżej kursora i wstawia “Tekst”
  • OTekst – otwiera nowa pustą linię powyżej kursora i wstawia “Tekst”
  • u – cofa ostatnią modyfikację
  • [.] – powtarza ostatnią modyfikację
  • [J] – Łączy aktualną linię (gdzie jest kursor) z następująca po niej
  • dd – usuwa aktualną linie
  • 7dd – usuwa 7 linii, zaczynając od bieżącej linii
  • :10,35d – usuwa 25 linii (od 10 do 35 włącznie)
  • D – usuwa tekst od pozycji kursora do końca linii
  • yw – zapisuje do bufora aktualne słowo
  • yy – zapisuje do bufora aktualną linię
  • 9yy – zapisuje do bufora 9 linii, zaczynając od aktualnej
  • p – wstawianie zawartości bufora
  • dw – usuwa aktualne słowo, zaczynając od pozycji kursora (pozostajesz w trybie poleceń)
  • 15dw – usuwa 15 słów
  • cw – zamienia aktualne słowo, poczynając od pozycji kursora (przełącza w tryb edycji)
  • 25cw – zmienia 25 słów
  • cc – zmienia tekst w aktualnej linii (kasuje linię i przechodzi do trybu edycji, skasowany tekst znajduje się w buforze)
  • 7cc – zmienia 7 linii, zaczynając od aktualnej
  • :10,35cc – zmienia linie od 10 do 35 włącznie
  • C – zmienia pozostałą część linii
  • s – zamienia znak, wskazywany przez kursor (przełącza w tryb edycji)
  • 10s – zamienia 10 znaków poczynając od pozycji kursora
  • /slowo – przeszukuje tekst w poszukiwaniu słowa “slowo”. n – następne wystąpienie. N – poprzednie wystąpienie
  • ?slowo – szukanie wstecz (zostaje zamienione znaczenie poleceń n i N) W przeszukiwaniu warto również pamiętać o tym że: [.] (kropka) zastępuje dowolny znak
  • /slow. – zostaną znalezione słowa zaczynające się na “slow” zakończone dowolnym znakiem nie specjalnym. Gdy pragniesz znaleźć słowo zawierające znaki specjalne ( * / . ! itd…) należy przed znakiem specjalnym wstawić znak ”
  • /s.12 – zostanie znalezione słowo “s.12”
  • fz – szuka następnego znaku “z” w aktualnej linii [;] – szuka następnego znaku “z” w aktualnej linii [,] – szuka poprzedniego znaku “z” w aktualnej linii
  • Fz – szuka poprzedniego znaku “z” w aktualnej linii [;] – szuka poprzedniego znaku “z” w aktualnej linii [,] – szuka następnego znaku “z” w aktualnej linii
  • :s/stare slowa /nowe słowa – jeśli w aktualnej linii znajdują się ciągi “stare slowa”, zostanie zamieniony tylko pierwszy
  • :s/stare slowa /nowe słowa/g – zamienia wszystkie wystąpienia ciągu “stare slowa” w aktualnej linii
  • :1,9s/stare slowa /nowe słowa/g – zamienia wszystkie wystąpienia ciągu “stare slowa” w liniach od 1 do 9
  • :10,$s/stare slowa /nowe słowa/g – zamienia wszystkie wystąpienia ciągu “stare slowa” w liniach od 10 do końca pliku
  • :%s/stare slowa /nowe słowa/g – zamienia wszystkie wystąpienia ciągu “stare slowa” w pliku

Wojna edytorów

Zwolennicy programów takich jak vi/VIM bardzo często wyśmiewają się ze zwolenników Emacsa. Często wojny te mają podstawy bliskie wojną religijnym. W “Kościele Emacs” używanie vi jest pokutą. Bardzo często krążą również dowcipy na temat ludzi korzystających z vi:

  • Jak wygenerować losowy ciąg znaków?
  • Posadzić nowego użytkownika przed vi i kazać mu wyjść.

Użytkownicy vi nie stronią również od dowcipów na temat samego Emacsa:

  • Emacs to świetny system operacyjny, szkoda tylko że nie ma dla niego dobrego edytora

Bibliografia

Podobne artykuły

  • zzz

    nie mam wystarczająco dobrej pamięci, więc nie dla mnie

  • Oj przyda się artykuł. Dziś mam kolokwium z SO i będzie obsługa vima.