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
Homebrew: $ 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: D jest odpowiednikiem d$ |
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 , q aby zakończyć nagrywanie, @z aby je odtworzyć. z może być dowolną literą: q jest 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)