vim Samouczek                
            Pierwsze kroki z vimem
        
        
            
    Szukaj…
Uwagi
Vim (lub „Vi IMproved”) to oparty na konsoli edytor tekstowy w wielu trybach ( modalny ). Jest szeroko stosowany i domyślnie dostępny we wszystkich systemach Unix, Linux i Apple OS X. Vim ma dużą aktywną społeczność i szeroką bazę użytkowników. Edytor obsługuje wszystkie popularne języki programowania, a wiele wtyczek jest dostępnych w celu rozszerzenia jego funkcji.
Programiści lubią edytor ze względu na jego szybkość, wiele opcji konfiguracji i potężną edycję opartą na wyrażeniach. W trybie „poleceń” edytorem sterowane są polecenia klawiaturowe, więc użytkownik nie jest rozproszony przez GUI lub wskaźnik myszy.
Vim jest oparty na wcześniejszym uniksowym edytorze „vi” stworzonym w latach siedemdziesiątych i nieprzerwanie rozwija się od 1991 roku. Dzięki makrom i wtyczkom edytor oferuje większość funkcji nowoczesnego IDE. Jest także wyjątkowo zdolny do przetwarzania dużych ilości tekstu za pomocą języka skryptowego (vimscript) i wyrażeń regularnych.
Głowne tematy:
- instalacja
- tryby edycji
- nawigacja
- podstawowa edycja
- zaawansowana edycja
- konfiguracja
- wtyczki
- vimscript
- makra
- społeczność
- powiązane projekty
Wersje
| Wersja | Data wydania | 
|---|---|
| 8.0 | 2016-09-12 | 
| 7.4 | 2013-08-10 | 
| 7.3 | 15.08.2010 | 
| 7.2 | 2008-08-09 | 
| 7.1 | 2007-05-12 | 
| 7.0 | 2006-05-07 | 
| 6.0 | 2001-09-26 | 
| 5.0 | 1998-02-19 | 
| 4.0 | 1996-05-29 | 
| 3.0 | 1994-08-12 | 
| 2.0 | 1993-12-14 | 
| 1.14 | 1991-11-02 | 
Instalacja
Vim na twoim komputerze - jeśli taki istnieje - najprawdopodobniej będzie „małą” wersją, której brakuje przydatnych funkcji, takich jak obsługa schowka, podświetlanie składni, a nawet możliwość korzystania z wtyczek.
Nie stanowi to problemu, jeśli wszystko, czego potrzebujesz, to szybki sposób edycji plików konfiguracyjnych, ale wkrótce uderzysz w wiele ścian, jeśli zamierzasz ustawić Vima jako głównego edytora.
Dlatego ogólnie zaleca się zainstalowanie pełnej wersji.
Instalacja na Linux / BSD
 W tych systemach sztuczką jest po prostu instalacja wersji GUI, która zawiera zarówno polecenie gvim do uruchomienia GUI, jak i polecenie vim do uruchomienia TUI. 
Arch i Dystrybucje oparte na Arch
$ sudo pacman -R vim
$ sudo pacman -S gvim
Debian i dystrybucje oparte na Debianie
$ sudo apt-get update
$ sudo apt-get install vim-gtk
Dystrybucje Gentoo i Gentoo
$ sudo emerge --sync
$ sudo emerge app-editors/gvim
Dystrybucje oparte na RedHat i RedHat
$ sudo yum check-update
$ sudo yum install vim-X11
Fedora
$ sudo dnf check-update
$ sudo dnf install vim-X11
Slackware i dystrybucje oparte na Slackware
$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim
Dystrybucje oparte na OpenBSD i OpenBSD
$ sudo pkg_add vim-x11
Dystrybucje oparte na FreeBSD i FreeBSD
$ sudo pkg install editors/vim
Instalacja w Mac OS X.
Strategia jest podobna do Mac OS X: instalujemy wersję GUI, aby uzyskać zarówno GUI, jak i TUI. W końcu powinniśmy być w stanie:
- kliknij dwukrotnie ikonę MacVim w Finderze,
- kliknij ikonę MacVim w Docku,
-  wydaj $ mvimw powłoce, aby otworzyć GUI MacVima,
-  wydaj $ mvim -vw powłoce, aby otworzyć TUI MacVima.
Regularna instalacja
Pobierz i zainstaluj oficjalną migawkę, tak jak w przypadku każdej innej aplikacji Mac OS X.
 Umieść skrypt mvim dostarczony w pakiecie z MacVimem gdzieś w $PATH . 
Kierownik pakietu
MacPorts:$ sudo port selfupdate
$ sudo port install macvim
$ brew install macvim
Aby ustawić MacVima jako domyślną konsolę Vima:
$ brew install macvim --with-override-system-vim
Instalacja w systemie Windows
Domyślnie nie ma Vima w systemach Windows. Możesz pobrać i zainstalować Vima ze strony Tuxproject, aby uzyskać bardziej aktualne i kompletne kompilacje, lub możesz pobrać i zainstalować Vima z oficjalnej strony Vima .
Chocolatey
> choco install vim
Budowanie Vima ze źródła
Jeśli powyższe metody nie odpowiadają twoim potrzebom, nadal możesz sam zbudować Vima, korzystając tylko z potrzebnych opcji.
Temat ten zostanie omówiony we własnej sekcji (obecnie w wersji roboczej).
Exiting Vim
Aby wyjść z Vima, najpierw upewnij się, że jesteś w trybie normalnym , naciskając Esc .
-  :qEnter (zapobiegnie wyjściu, jeśli masz niezapisane zmiany - skrót od: quit)
Aby odrzucić zmiany i wyjść z Vima:
-  :q!Wejdź, aby wymusić wyjście i odrzuć zmiany (skrót:quit!, nie mylić z:!q),
-  ZQto skrót, który działa tak samo jak:q!,
-  :cqWpisz błąd wyjścia i powrotu (odrzuć wszystkie zmiany, aby kompilator nie skompilował tego pliku)
Aby zapisać zmiany i wyjść z Vima:
-  :wqEnter (skrót od:writei:quit),
-  :xEnter (to samo co:wq, ale nie napisze, jeśli plik nie został zmieniony),
-  ZZto skrót, który robi to samo co:x(Zapisz obszar roboczy i zamknij edytor),
-  :[range]wq!Enter (wpisz wiersze w [zakresie])
 Aby zamknąć wielu buforów na raz (nawet w wielu oknach i / lub zakładek), należy dołączyć pismo do któregokolwiek z powyższych poleceń (te zaczynające się od a : ). Na przykład, aby napisać i zamknąć wszystkie okna, których możesz użyć: 
-  :wqaEnter lub
-  :xaEnter - Zapisz wszystkie zmienione bufory i wyjdź z Vima. Jeśli istnieją bufory bez nazwy pliku, które są tylko do odczytu lub których nie można zapisać z innego powodu, Vim nie zostanie zamknięty
-  :xa!Enter - Napisz wszystkie zmienione bufory, nawet te tylko do odczytu, i zamknij Vima. Jeśli istnieją bufory bez nazwy pliku lub których nie można zapisać z innego powodu, Vim nie zostanie zamknięty
-  :qaEnter - spróbuj wyjść, ale przestań, jeśli są jakieś niezapisane pliki;
-  :qa!Wejść - wyjść bez zapisywania (zmiany odrzutów w dowolnych niezapisanych plików)
 Jeśli otworzyłeś Vima bez określania pliku i chcesz go zapisać przed wyjściem, otrzymasz E32: No file name komunikatu o E32: No file name . Możesz zapisać plik i wyjść z: 
-  :wq filenameWprowadź lub;
-  :x filenameEnter
Wyjaśnienie:
 Klawisz : faktycznie otwiera tryb poleceń . Polecenie q jest skrótem quit , w , write i x , exit (możesz także wpisać :quit :write i :exit jeśli chcesz). Skróty, które nie zaczynają się od : takie jak ZZ i ZQ odnoszą się do mapowania klawiszy w trybie normalnym . Możesz myśleć o nich jak o skrótach. 
 The ! naciśnięcie klawisza jest czasem używane na końcu polecenia, aby wymusić jego wykonanie, co pozwala odrzucić zmiany w przypadku :q! . Umieszczanie ! na początku polecenia ma inne znaczenie. Na przykład można pomylić:! :!q zamiast :q! i vim zakończyłby się błędem 127. 
 Łatwym sposobem na zapamiętanie tego jest wymyślenie ! jako sposób nalegania na wykonanie czegoś. Tak jak piszesz: „Chcę rzucić!” 
Interaktywne samouczki Vim (takie jak vimtutor)
 vimtutor to interaktywny samouczek obejmujący najbardziej podstawowe aspekty edycji tekstu. 
W systemie podobnym do UNIXa możesz rozpocząć samouczek z:
$ vimtutor
W systemie Windows „Vim tutor” można znaleźć w katalogu „Vim 7.x” pod „Wszystkie programy” w menu Windows.
 Zobacz :help vimtutor po dalsze szczegóły. 
Inne interaktywne samouczki obejmują te oparte na przeglądarce:
- Vim Adventures - interaktywna wersja gry vimtutor dostępna w Internecie. Tylko kilka pierwszych poziomów jest bezpłatnych.
- Open Vim - interaktywny terminal, który uczy podstawowych komend z informacją zwrotną.
- Vim Genius - Kolejny interaktywny terminal, który zawiera również lekcje średnio-zaawansowane i zaawansowane, w tym makra i arglist.
Zapisywanie pliku tylko do odczytu edytowanego w Vimie
 Czasami możemy otworzyć plik, którego nie mamy uprawnień do napisania w Vimie bez użycia sudo . 
Użyj tego polecenia, aby zapisać plik tylko do odczytu edytowany w Vimie.
:w !sudo tee > /dev/null %
 Które możesz zmapować do :w!! w twoim .vimrc : 
cmap w!! w !sudo tee > /dev/null %
Zostanie wyświetlony monit, jak pokazano na obrazku.
 Naciśnij O a plik zostanie zapisany. Pozostaje otwarty w vi / vim dla dalszej edycji lub czytania i możesz normalnie wyjść, wpisując :q! ponieważ plik jest nadal otwarty jako tylko do odczytu. 
Objaśnienie poleceń
:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file
Źródła:
Zawieszenie vim
 Przy użyciu vim z linii poleceń, można zawiesić vim i wrócić do polecenia, bez faktycznego rzucenia vim . Dlatego później będziesz mógł odzyskać sesję vim z tego samego monitu. 
W trybie normalnym (jeśli nie, naciśnij klawisz esc, aby się tam dostać), wydaj dowolne z następujących poleceń:
:stenter
:susenter
:stopwchodzić
:suspendenter
Alternatywnie, w niektórych systemach, w trybie normalnym lub wizualnym , wydanie Ctrl + Z będzie miało ten sam efekt.
 Uwaga: Jeśli autowrite jest automatyczne autowrite , bufory ze zmianami i nazwy plików zostaną zapisane. Dodaj ! przed wejściem, aby uniknąć, np. :st! wchodzić . 
 Później, jeśli chcesz powrócić do sesji vim , jeśli nie zawiesiłeś żadnych innych zadań, wydanie poniższych instrukcji przywróci vim jako zadanie na pierwszym planie. 
fgenter
 W przeciwnym razie będziesz musiał znaleźć identyfikator zadania sesji vim , wpisując enter jobs a następnie poprzedzając pasujące zadania fg %[job ID] enter np. fg %1 enter . 
Podstawy
Uruchom interaktywne samouczki vim tyle razy, ile potrzeba, aby poczuć się dobrze z podstawami.
Vim ma kilka trybów, np. Tryb normalny, tryb wstawiania i tryb wiersza poleceń .
 Tryb normalny służy do edycji i nawigacji po tekście. W tym trybie h , j , k i l odpowiadają klawiszom kursora ← , ↓ , ↑ i → . Większość poleceń w trybie normalnym może być poprzedzona „zliczeniem”, np. 3j przesuwa się o 3 linie w dół. 
 Tryb wstawiania służy do bezpośredniego wstawiania tekstu, w tym trybie vim jest podobny do innych prostszych edytorów tekstu. Aby przejść do trybu wstawiania, naciśnij i w trybie normalnym. Aby wyjść, naciśnij <ESC> (klawisz Escape). 
 Tryb wiersza poleceń służy do uruchamiania bardziej złożonych poleceń, takich jak zapisywanie pliku i zamykanie vima. Naciśnij : aby uruchomić tryb wiersza poleceń. Aby wyjść z tego trybu, możesz także nacisnąć <ESC> . Aby zapisać zmiany w pliku, użyj :w (lub :write ). Aby wyjść z vima bez zapisywania zmian użyj :q! (lub :quit! ). 
Oto niektóre z bardziej przydatnych poleceń w vimie:
| Komenda | Opis | 
|---|---|
| i | (wstaw) wchodzi w tryb wstawiania przed bieżącą pozycją kursora | 
| I | wchodzi w tryb wstawiania przed pierwszym drukowalnym znakiem bieżącego wiersza | 
| a | (append) wchodzi w tryb wstawiania po bieżącej pozycji kursora | 
| A | wchodzi w tryb wstawiania po ostatnim drukowalnym znaku bieżącego wiersza | 
| x | usuń znak w bieżącej pozycji kursora | 
| X | usuń znak po lewej stronie do bieżącej pozycji kursora | 
| w | przejdź do następnego słowa | 
| b | przejdź do poprzedniego słowa | 
| 0 | przejdź na początek linii | 
| $ | przejdź na koniec linii | 
| r | replace - włącza tryb zastępowania jednego znaku. Następny wpisany znak zastąpi znak pod kursorem. | 
| R | przechodzi w tryb zastępowania na czas nieokreślony. Każdy wpisany znak zastąpi znak pod kursorem i przesunie kursor o jeden. | 
| s | substytut - usuwa znak w bieżącej pozycji kursora, a następnie przechodzi do trybu wstawiania | 
| S | usuń bieżący wiersz, na którym znajduje się kursor i wejdź w tryb wstawiania | 
| <Esc>,<Cc> | wyjdź z trybu wstawiania i powróć do normalnego trybu | 
| u | Cofnij | 
| <Cr> | przerobić | 
| dd,dw,dl,d$ | wytnij bieżącą linię, odpowiednio od kursora do następnego słowa, lub znak, bieżącą pozycję odpowiednio do końca bieżącej linii, uwaga: Djest odpowiednikiemd$ | 
| cc,cw,cl | zmień bieżący wiersz odpowiednio z kursora na następne słowo lub znak | 
| yy,yw,yl,y$ | szarpnięcie („skopiowanie”) bieżącej linii, odpowiednio od kursora do następnego słowa, lub znak, bieżąca pozycja do końca bieżącej linii | 
| p,P | wstaw („wklej”) odpowiednio odpowiednio przed lub przed bieżącą pozycją | 
| o,O | aby utworzyć nową pustą linię, przed lub przed bieżącą linią i przejść do trybu wstawiania | 
| :w | zapisz bieżący bufor na dysku | 
| :q!,ZQ | wyjdź bez pisania | 
| :x:wq,ZZ | napisz i wyjdź | 
| :help | otwórz okno z plikiem pomocy | 
| :help {subject} | pokaż pomoc na określony temat | 
| qz | rozpocznij nagrywanie, aby zarejestrować z,qaby zakończyć nagrywanie,@zaby je odtworzyć.zmoże być dowolną literą:qjest często używane dla wygody. Czytaj więcej: Makra | 
Co robić w razie awarii
 Vim zapisuje wszystkie niezapisane zmiany w pliku wymiany , dodatkowym pliku, który jest usuwany po zatwierdzeniu zmian przez zapisanie. Nazwa pliku wymiany jest zwykle nazwą edytowanego pliku poprzedzoną przez . oraz z sufiksem .swp (możesz to zobaczyć za pomocą :sw ). 
 Jeśli więc proces vima zakończy się, zanim zdążysz zapisać zmiany, możesz odzyskać pracę, stosując zmiany zawarte w pliku wymiany do bieżącego pliku, używając opcji wiersza polecenia -r . Na przykład jeśli myFile to plik, który edytujesz, użyj: 
$ vi -r myFile
odzyskać niezaangażowane zmiany.
Jeśli istnieje plik wymiany, vim powinien i tak poprosić o opcje odzyskiwania
$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
 Jeśli wybierzesz (R) ecover, zmiany z pliku swp zostaną zastosowane, ale plik wymiany nie zostanie usunięty, więc nie zapomnij usunąć pliku wymiany później, jeśli jesteś zadowolony z odzyskiwania. 

![Naciśnij ENTER lub wpisz polecenie, aby kontynuować. Plik [O] K, (L) oad:](http://i.stack.imgur.com/AUQss.png)