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:

Standardowy komunikat startowy Vima

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 ENTER lub wpisz polecenie, aby kontynuować. Plik [O] K, (L) oad: .

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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow