Vim (Vi improved) – edytor tekstu w środowiskach uniksowych i w Linuksie. Program powstał w roku 1991 jako następca uniksowego edytora Vi a napisał go holenderski programista Bran Molenaar. Jest programem rozprowadzanym na zasadzie GNU FDL. należy do tzw. charityware – ochotnicy gotowi zarejestrować program proszeni są o wpłacenie 10 euro na potrzeby głodujących dzieci i ofiar AIDS w Ugandzie. Edytor działa w środowisku tekstowym, choć możliwe użycie go w środowisku graficznym. Istnieje również wersja dla systemu MS Windows. Uważany jest za jeden z najpopularniejszych edytorów oprócz Emacs. Standardowo dołączany do każdej dystrybucji linuksa, jednak jest to wersja minimal. Nie posiada ona np. modułu sprawdzania pisowni czy też kolorowania składni. Żeby posiadać te funkcje, zwykle wystarczy doinstalować pakiet vim-enhanced
Zasada działania
Vim jest edytorem modalnym – oznacza to, że pracuje w różnych trybach. Najpopularniejsze z nich to:
- tryb wstawiania, w którym zachowuje się jak normalny edytor
- tryb nadpisywania w którym zastępowane są istniejące znaki
- tryb poleceń, w którym z klawiatury wydawane są polecenia nawigacyjne
- tryb wizualny, w którym możliwe sa operacje na zaznaczonych blokach tekstu.
Cechy programu
Vim jest niezwykle rozbudowanym edytorem o ogromnych możliwościach. Do standardowych możliwości edytora zaliczyć należy podświetlanie składni, możliwość korekty pisowni, możliwość pracy w wielu oknach, edycja tekstów postskryptowych w języku TEX. Jest edytorem bardzo plastycznym i wysoce konfigurowalnym. Jego minusem jest trudna nawigacja w długich liniach, stąd edytor poleca się głównie programistom; pisanie w nim zwykłych tekstów może być uciążliwe.
Kontrowersje
Podstawowym zarzutem stawianym vim-owi jest jego trudna obsługa i duża liczba apriorycznych poleceń. Zwolennicy edytora uważają natomiast, że jest on intuicyjny i logiczny. Duża grupa kontestujących wywodzi się ze środowisk wspierających konkurencyjny edytor Emacs. Istnieje niepisana wojna między zwolenników obu programów.
Podstawowe polecenia edytora
Operacje na plikach tekstowych
vim nazwatekstu.txt
– otwarcie tekstuZZ
– zapisanie tekstu i opuszczenie edytora:q!
– opuszczenie edytora bez zapisywania zmian:e!
– ładowanie poprzedniej wersji tekstu
Poruszanie się w trybach pracy
i
– przejście w tryb wstawianiaa
– przejście w tryb wstawiania pierwszego znaku za kursoremo
– rozpoczęcie pracy w trybie wstawiania od nowej linii pod kursoremO
– rozpoczęcie pracy w trybie wstawiania nowej linii nad kursoremR
– przejście w tryb nadpisywaniaA
– przejście w tryb wstawiania na koniec linii
Poruszanie się po tekście
h
– znak w lewoj
– znak w dółr
– znak góręl
– znak w prawow
– wyraz w prawob
– wyraz w lewoe
– przeniesienie kursora na koniec wyrazu, aby zacząć nowy, ea(mod)0
– do początku akapitu$
– do końca akapitugg
– powrót na początek tekstu[liczba]G
– przeniesienie do wiersza o określonym numerzeH
– przeniesienie kursora na górę ekranuM
– przeniesienie kursora na środek ekranuL
– przeniesienie kursora do ostatniego wiersza na stronieG$
– na koniec tekstufm
– przejdź do litery mFm
– przejdź do poprzedniej litery m
Poruszanie się po ekranie
^F
– ekran w dół^B
– ekran w górę^D
– pół ekranu w dół^U
– pół ekranu w górę
Kasowanie i zamiana
x
– kasuj znak pod kursoremX
– kasuj znak przed kursoremr
– zstąp znaks
– zmiana jednego znakudw
– kasuj wyraz za kursorem, d3w – kasuj 3 wyrazy za kursoremdb
– kasuj do początku wyrazud$
– kasuj do końca liniidd
– kasuj całą liniędG
– kasowanie do końca plikudgg
– wywala wszystko do początku plikup
– wstawianie (uprzednio skasowanej zawartości)u
– cofanie zmiany^R
– przywracanie zmianyx
– zmiana na wielką literęp
– eliminacja czeskiego błędu (kursor na pierwszej literze)
Wyszukiwanie
/wyraz
– szukaj wyraz za kursorem?wyraz
– szukaj wyraz przed kursorem
Schowek (operacja na bloku)
"*yy
– schowanie linii do schowka"*p
– wklejenie zawartości schowka
Okna i podział
:split
– dzieli ten sam txt na 2 okna:split innytekst.txt
– otwiera inny tekst w drugim oknie^W
– przemieszczanie się między oknami:only :close
– zamykanie okien:wall
– zapisywanie obu okien:wqall
– zapisywanie wszystkich okien i opuszczenie edytora
Varia
:set number
– wprowadzenie numeracji liniiJ
– łączenie wierszy za kursoremread !ls
– wczytywanie katalogu^L
– odświeża ekrang^g
– liczenie słów