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
$ mvim
w powłoce, aby otworzyć GUI MacVima, - wydaj
$ mvim -v
w 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 .
-
:q
Enter (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
), -
ZQ
to skrót, który działa tak samo jak:q!
, -
:cq
Wpisz błąd wyjścia i powrotu (odrzuć wszystkie zmiany, aby kompilator nie skompilował tego pliku)
Aby zapisać zmiany i wyjść z Vima:
-
:wq
Enter (skrót od:write
i:quit
), -
:x
Enter (to samo co:wq
, ale nie napisze, jeśli plik nie został zmieniony), -
ZZ
to 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ć:
-
:wqa
Enter lub -
:xa
Enter - 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 -
:qa
Enter - 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 filename
Wprowadź lub; -
:x filename
Enter
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ń:
:st
enter
:sus
enter
:stop
wchodzić
:suspend
enter
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.
fg
enter
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.