15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
08.10.2024

Jak używać edytora Vi/Vim na Ubuntu: Kompletny przewodnik techniczny

Vi i Vim (Vi Improved) to modalne, sterowane klawiaturą edytory tekstu działające wyłącznie w terminalu, co czyni je niezastąpionymi w administracji serwerami, zdalnej edycji konfiguracji i skryptowych przepływach pracy na Ubuntu i innych dystrybucjach Linux. Vim rozszerza Vi o podświetlanie składni, wielopoziomowe cofanie zmian, podzielone okna, obsługę wtyczek i skryptowalną warstwę konfiguracji — przy minimalnym zużyciu zasobów systemowych.

Jeśli zarządzasz środowiskiem VPS Hosting lub serwerem dedykowanym, biegłość w Vimie nie jest opcjonalna — to podstawowa umiejętność. Sesje SSH nie zawsze mają dostęp do GUI, a Vim jest niemal powszechnie dostępny w każdym systemie uniksowym, z którym kiedykolwiek będziesz pracować.

Dlaczego Vim nadal dominuje w środowiskach serwerowych

Nowoczesne IDE są potężne, ale stają się nieistotne, gdy o 2 w nocy łączysz się przez SSH z bezgłowym serwerem Ubuntu, debugując uszkodzoną konfigurację Nginx. Modalna konstrukcja Vima oznacza, że każde naciśnięcie klawisza jest poleceniem — bez zależności od myszy, bez narzutu renderowania i bez opóźnień wprowadzanych przez warstwę graficzną.

Kluczowe powody, dla których administratorzy systemów polegają na Vimie:

  • Zero zewnętrznych zależności: Działa przez dowolne połączenie SSH, w tym łącza o niskiej przepustowości lub wysokich opóźnieniach
  • Spójna dostępność: Preinstalowany lub trywialnie instalowalny na Debian, Ubuntu, CentOS, Alpine i praktycznie każdej dystrybucji Linux
  • Szybkość na dużą skalę: Edycja plików konfiguracyjnych, logów lub skryptów liczących kilka tysięcy linii jest szybsza w Vimie niż w jakimkolwiek edytorze GUI po opanowaniu pamięci mięśniowej
  • Skryptowalność: Wbudowany język skryptowy Vima (Vimscript) i obsługa Lua (w Neovim) umożliwiają pełną automatyzację powtarzalnych zadań edycyjnych

Instalacja Vima na Ubuntu

Ubuntu jest dostarczany z minimalnym pakietem `vim-tiny`, któremu brakuje podświetlania składni, obsługi wielu plików i wielu zaawansowanych funkcji. Aby uzyskać pełną funkcjonalność, zainstaluj kompletny pakiet:

“`bash

sudo apt update

sudo apt install vim -y

“`

Aby zweryfikować zainstalowaną wersję i potwierdzić pełną obsługę funkcji:

“`bash

vim –version

“`

Szukaj `+syntax`, `+clipboard`, `+python3` i `+multi_byte` w flagach funkcji. Prefiks `-` oznacza, że dana funkcja została skompilowana bez tej funkcji w pliku binarnym. Jeśli potrzebujesz tych funkcji, a ich brakuje, zainstaluj zamiast tego `vim-gtk3` lub `vim-nox`:

“`bash

sudo apt install vim-nox -y # Headless full-feature build

sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration

“`

Krytyczny przypadek brzegowy: Na minimalnych obrazach serwera Ubuntu — takich jak te używane w kontenerach Docker lub serwerach Dedicated Servers inicjowanych przez cloud-init — nawet `vi` może być nieobecny. W takim przypadku przed próbą edycji jakichkolwiek plików konfiguracyjnych zainstaluj jawnie `vim`.

Otwieranie, tworzenie i odzyskiwanie plików

“`bash

vim filename.txt # Open existing file or create new one

vim /etc/nginx/nginx.conf # Open a system configuration file (use sudo if needed)

sudo vim /etc/ssh/sshd_config # Edit privileged files

vim +42 filename.txt # Open file and jump directly to line 42

vim +/searchterm file.txt # Open file with cursor on first match of searchterm

“`

Odzyskiwanie pliku wymiany: Vim automatycznie tworzy ukryty plik wymiany (`.filename.txt.swp`) podczas edycji. Jeśli sesja ulegnie awarii lub połączenie SSH zostanie przerwane, otwórz ponownie ten sam plik, a Vim wyświetli monit o odzyskanie niezapisanych zmian. Zawsze najpierw wybierz `(R)ecover`, zapisz odzyskaną zawartość, a następnie usuń plik wymiany za pomocą `:e` i `:!rm ~/.filename.txt.swp` lub uruchamiając `vim -r filename.txt`.

Ten mechanizm odzyskiwania jest szczególnie cenny podczas edycji krytycznych plików konfiguracyjnych na serwerach produkcyjnych — przerwane połączenie nie oznacza utraty pracy.

Zrozumienie modalnej architektury Vima

Modalna konstrukcja Vima jest najważniejszą koncepcją do przyswojenia. W przeciwieństwie do standardowych edytorów, gdzie każde naciśnięcie klawisza wstawia znak, Vim rozdziela nawigację, edycję i wykonywanie poleceń na odrębne tryby.

TrybAktywacjaGłówny cel
**Normal**`Esc` (domyślny przy otwarciu)Nawigacja, usuwanie, kopiowanie, wklejanie, wykonywanie makr
**Insert**`i`, `a`, `o`, `O`, `I`, `A`Wpisywanie i wstawianie tekstu
**Visual**`v` (znakowy), `V` (liniowy), `Ctrl+v` (blokowy)Zaznaczanie zakresów tekstu
**Visual Block**`Ctrl+v`Zaznaczanie i edycja kolumnowa
**Command-Line**`:`Operacje na plikach, wyszukiwanie/zamiana, ustawienia, polecenia zewnętrzne
**Replace**`R`Nadpisywanie istniejących znaków
**Ex**`Q`Wsadowe wykonywanie poleceń (rzadko używane interaktywnie)

Najczęstszy błąd początkujących to naciskanie klawiszy w trybie Normal w oczekiwaniu, że pojawi się tekst, a następnie panika, gdy `dd` usuwa linię lub `gg` przeskakuje na początek pliku. Zawsze sprawdzaj bieżący tryb w lewym dolnym rogu ekranu — tryb Insert wyświetla `– INSERT –`, tryb Visual wyświetla `– VISUAL –`, a tryb Normal nie pokazuje nic.

Polecenia nawigacji w trybie Normal

Efektywna nawigacja to to, co odróżnia użytkownika Vima jedynie funkcjonalnego od naprawdę szybkiego. Ucz się ich według priorytetu:

Podstawowy ruch kursora

KlawiszAkcja
`h`Przesuń o jeden znak w lewo
`l`Przesuń o jeden znak w prawo
`j`Przesuń o jedną linię w dół
`k`Przesuń o jedną linię w górę
`w`Przeskocz na początek następnego słowa
`b`Przeskocz na początek poprzedniego słowa
`e`Przeskocz na koniec bieżącego słowa
`0`Przeskocz na początek linii
`^`Przeskocz do pierwszego znaku niebędącego białym znakiem w linii
`$`Przeskocz na koniec linii

Nawigacja na poziomie pliku

KlawiszAkcja
`gg`Przeskocz do pierwszej linii pliku
`G`Przeskocz do ostatniej linii pliku
`:42`Przeskocz do linii 42
`Ctrl+f`Przewiń o całą stronę do przodu
`Ctrl+b`Przewiń o całą stronę do tyłu
`Ctrl+d`Przewiń o pół strony w dół
`Ctrl+u`Przewiń o pół strony w górę
`%`Przeskocz do pasującego nawiasu, nawiasu okrągłego lub klamrowego
`*`Przeskocz do następnego wystąpienia słowa pod kursorem
`#`Przeskocz do poprzedniego wystąpienia słowa pod kursorem

Wskazówka dla zaawansowanych: Poprzedź dowolne polecenie ruchu liczbą, aby je powtórzyć. `5j` przesuwa w dół o 5 linii. `3w` przeskakuje o 3 słowa do przodu. `10dd` usuwa 10 linii. Ten numeryczny mnożnik stosuje się do praktycznie każdego polecenia trybu Normal i jest kluczem do szybkiej edycji.

Wchodzenie i wychodzenie z trybu Insert

KlawiszZachowanie
`i`Wstaw przed kursorem
`a`Dołącz za kursorem
`I`Wstaw na początku linii
`A`Dołącz na końcu linii
`o`Otwórz nową linię poniżej i wejdź w tryb Insert
`O`Otwórz nową linię powyżej i wejdź w tryb Insert
`s`Usuń znak pod kursorem i wejdź w tryb Insert
`S`Usuń całą linię i wejdź w tryb Insert
`Esc` lub `Ctrl+[`Powróć do trybu Normal

Kluczowy nawyk: Wyrabiaj odruch naciskania `Esc` natychmiast po zakończeniu wstawiania tekstu. Pozostawanie w trybie Insert, gdy zamierzasz nawigować, jest źródłem większości przypadkowych edycji.

Zapisywanie, wychodzenie i zarządzanie plikami

Te polecenia są wykonywane z trybu Command-Line (najpierw naciśnij `:`):

PolecenieAkcja
`:w`Zapisz (zapisz) bieżący plik
`:w filename.txt`Zapisz pod nową nazwą pliku
`:q`Wyjdź (tylko jeśli nie ma niezapisanych zmian)
`:q!`Wymuś wyjście, odrzucając wszystkie niezapisane zmiany
`:wq` lub `:x`Zapisz i wyjdź
`ZZ`Zapisz i wyjdź (skrót trybu Normal)
`ZQ`Wyjdź bez zapisywania (skrót trybu Normal)
`:w !sudo tee %`Zapisz plik otwarty bez uprawnień sudo

Sztuczka `:w !sudo tee %` to niezbędna wiedza dla administratorów serwerów. Gdy otworzysz plik systemowy, taki jak `/etc/fstab`, bez sudo i wprowadzisz zmiany, nie możesz zapisać za pomocą `:w`. To polecenie przesyła zawartość bufora przez `sudo tee` w celu zapisania pliku z podwyższonymi uprawnieniami — bez konieczności zamykania i ponownego otwierania Vima.

Operacje edycji: usuwanie, kopiowanie, wklejanie i cofanie

Model edycji Vima jest zbudowany na operatorach + ruchach. Operator (jak `d` dla usunięcia lub `y` dla yank/kopiowania) połączony z ruchem (jak `w` dla słowa lub `$` dla końca linii) tworzy precyzyjną akcję edycyjną.

Podstawowe polecenia edycji

PolecenieAkcja
`x`Usuń znak pod kursorem
`X`Usuń znak przed kursorem
`dd`Usuń (wytnij) całą bieżącą linię
`D`Usuń od kursora do końca linii
`dw`Usuń od kursora do końca słowa
`d$`Usuń od kursora do końca linii
`d0`Usuń od kursora do początku linii
`yy` lub `Y`Yank (skopiuj) całą bieżącą linię
`yw`Yank od kursora do końca słowa
`p`Wklej za kursorem (lub poniżej bieżącej linii dla yanków liniowych)
`P`Wklej przed kursorem (lub powyżej bieżącej linii)
`u`Cofnij ostatnią zmianę
`Ctrl+r`Ponów ostatnio cofniętą zmianę
`.`Powtórz ostatnią zmianę (jedno z najpotężniejszych poleceń w Vimie)
`~`Przełącz wielkość liter znaku pod kursorem
`>>`Wcięcie bieżącej linii o jeden poziom
`<<`Usuń wcięcie bieżącej linii o jeden poziom

Polecenie `.` (kropka) jest prawdopodobnie najbardziej niedocenianą funkcją Vima wśród początkujących. Powtarza ostatnią złożoną akcję — jeśli usunąłeś słowo za pomocą `dw`, naciśnięcie `.` usuwa następne słowo. Jeśli zmieniłeś słowo za pomocą `cw` i wpisałeś zamiennik, `.` stosuje tę samą zamianę do następnego wystąpienia. Eliminuje to powtarzalne ręczne edycje w dużych plikach.

Tryb Visual: precyzyjne zaznaczanie tekstu

Tryb Visual zapewnia trzy granularności zaznaczania:

  • `v` — Zaznaczanie znakowe
  • `V` — Zaznaczanie liniowe (zaznacza całe linie)
  • `Ctrl+v` — Zaznaczanie blokowe (edycja kolumnowa)

Po dokonaniu zaznaczenia zastosuj operatory:

KlawiszAkcja na zaznaczeniu
`d`Usuń zaznaczony tekst
`y`Yank (skopiuj) zaznaczony tekst
`c`Zmień (usuń i wejdź w tryb Insert)
`>`Wcięcie zaznaczenia
`<`Usuń wcięcie zaznaczenia
`~`Przełącz wielkość liter zaznaczenia
`:`Wejdź w tryb Command-Line z wstępnie wypełnionym zakresem

Praktyczny przypadek użycia blokowego trybu Visual (`Ctrl+v`): Masz plik konfiguracyjny, w którym musisz zakomentować 15 kolejnych linii, dodając `#` na początku. Zaznacz pierwszą kolumnę tych linii za pomocą `Ctrl+v`, nawiguj w dół za pomocą `j`, naciśnij `I` (wielkie i), wpisz `#`, a następnie naciśnij `Esc`. Vim stosuje wstawienie do każdej zaznaczonej linii jednocześnie. To zadanie wymagałoby wyrażenia regularnego lub ręcznego powtarzania w większości innych edytorów.

Wyszukiwanie i zamiana

Wyszukiwanie

“`

/pattern Search forward for pattern (regex supported)

?pattern Search backward for pattern

n Jump to next match

N Jump to previous match

  • Search forward for word under cursor

Search backward for word under cursor

:noh Clear search highlighting

“`

Składnia wyszukiwania i zamiany

“`

:%s/old/new/g Replace all occurrences in entire file

:%s/old/new/gc Replace all with confirmation prompt for each

:%s/old/new/gi Case-insensitive replace across entire file

:10,20s/old/new/g Replace only within lines 10 through 20

:'<,'>s/old/new/g Replace within visually selected range

:%s/bwordb/new/g Replace whole word only (word boundary anchors)

“`

Obsługa wyrażeń regularnych: Vim używa własnego dialektu wyrażeń regularnych. Dostępne są: `b` dla granicy słowa, `d` dla cyfr, `s` dla białych znaków i `+` (jeden lub więcej). Dla rozszerzonej składni wyrażeń regularnych użyj prefiksu `v`: `:%s/v(foo|bar)/baz/g` dopasowuje „foo” lub „bar” i zastępuje „baz”.

Praca z wieloma plikami, buforami i podzielonymi oknami

Tutaj moc Vima staje się najbardziej widoczna podczas złożonych sesji edycyjnych.

Bufory

Bufor to reprezentacja pliku w pamięci. Vim może jednocześnie przechowywać wiele otwartych buforów.

“`

:e filename Open a file into a new buffer

:ls or :buffers List all open buffers

:b2 Switch to buffer number 2

:bnext or :bn Switch to next buffer

:bprev or :bp Switch to previous buffer

:bd Delete (close) current buffer

“`

Podzielone okna

“`

:split filename Horizontal split, open file in upper pane

:vsplit filename Vertical split, open file in right pane

Ctrl+w h/j/k/l Navigate between split panes

Ctrl+w = Equalize split pane sizes

Ctrl+w q Close current pane

“`

Karty

“`

:tabnew filename Open file in a new tab

:tabnext or gt Switch to next tab

:tabprev or gT Switch to previous tab

:tabclose Close current tab

“`

Praktyczny scenariusz: Podczas edycji konfiguracji serwera WWW na VPS z cPanel może być konieczne odwołanie się do głównego `nginx.conf` podczas edycji pliku wirtualnego hosta. Otwórz oba w pionowym podziale za pomocą `:vsplit /etc/nginx/nginx.conf` i nawiguj między panelami za pomocą `Ctrl+w l` i `Ctrl+w h` — nie ma potrzeby zamykania jednego pliku, aby skonsultować drugi.

Konfiguracja Vima za pomocą .vimrc

Plik `.vimrc` w katalogu domowym to trwała konfiguracja Vima. Jest wykonywany jako Vimscript za każdym razem, gdy Vim się uruchamia.

“`bash

vim ~/.vimrc

“`

Zalecana konfiguracja dla serwerów produkcyjnych

“`vim

" Display settings

set number " Show absolute line numbers

set relativenumber " Show relative line numbers (great for jump commands)

set cursorline " Highlight the current line

set scrolloff=8 " Keep 8 lines visible above/below cursor when scrolling

" Indentation

set autoindent " Copy indent from current line on new line

set smartindent " Context-aware indentation for code

set expandtab " Convert tabs to spaces

set tabstop=4 " Tab width = 4 spaces

set shiftwidth=4 " Indentation width for >> and <<

" Search behavior

set hlsearch " Highlight all search matches

set incsearch " Show matches as you type

set ignorecase " Case-insensitive search

set smartcase " Override ignorecase if search contains uppercase

" Usability

set mouse=a " Enable mouse in all modes

syntax on " Enable syntax highlighting

set encoding=utf-8 " Default encoding

set clipboard=unnamedplus " Use system clipboard for yank/paste

set undofile " Persist undo history across sessions

set undodir=~/.vim/undo " Directory for persistent undo files

" Visual

set showmatch " Briefly jump to matching bracket

set laststatus=2 " Always show status line

set wildmenu " Enhanced command-line completion

“`

Ważne: Dyrektywa `set undofile` tworzy trwałą historię cofania przechowywaną na dysku. Oznacza to, że możesz zamknąć plik, otworzyć go ponownie kilka dni później i nadal cofać zmiany z poprzedniej sesji. Utwórz katalog cofania przed włączeniem tej opcji:

“`bash

mkdir -p ~/.vim/undo

“`

Jest to szczególnie cenne przy wprowadzaniu przyrostowych zmian w plikach konfiguracyjnych na systemach produkcyjnych — na przykład podczas dostrajania ustawień PHP-FPM lub dostosowywania parametrów SSL na serwerze obsługującym SSL Certificates dla wielu domen.

Makra: automatyzacja powtarzalnych edycji

Makra są jedną z najpotężniejszych i najrzadziej używanych funkcji Vima. Makro rejestruje sekwencję naciśnięć klawiszy i odtwarza je.

“`

qa Start recording macro into register 'a'

[actions] Perform any sequence of Normal/Insert mode commands

q Stop recording

@a Replay macro stored in register 'a'

@@ Replay the last executed macro

10@a Replay macro 'a' ten times

“`

Przykład z życia wzięty: Masz plik CSV z 200 liniami i musisz otoczyć drugie pole każdej linii podwójnymi cudzysłowami. Nagraj makro na pierwszej linii, odtwórz je 199 razy za pomocą `199@a`, a transformacja zostanie ukończona w mniej niż sekundę. Nie jest wymagane żadne skryptowanie.

Znaczniki i skoki

Znaczniki pozwalają na zakładkowanie pozycji w pliku i natychmiastowy powrót do nich.

“`

ma Set mark 'a' at current cursor position

'a Jump to the line of mark 'a'

`a Jump to the exact position of mark 'a'

'' Jump back to position before last jump

Ctrl+o Jump to previous position in jump list

Ctrl+i Jump to next position in jump list

:marks List all current marks

“`

Vim vs. Nano vs. Emacs: wybór odpowiedniego edytora terminalowego

FunkcjaVimNanoEmacs
**Krzywa uczenia się**Stroma (system modalny)MinimalnaBardzo stroma
**Czas uruchamiania**Niemal natychmiastowyNiemal natychmiastowyWolniejszy
**Zużycie pamięci**Bardzo niskieBardzo niskieUmiarkowane do wysokiego
**Podświetlanie składni**PełnePodstawowePełne
**Ekosystem wtyczek**RozbudowanyMinimalnyRozbudowany
**Obsługa makr**Natywna, potężnaBrakNatywna
**Podzielone okna**TakNieTak
**Zdalna edycja**Przez SSH natywniePrzez SSH natywnieProtokół TRAMP
**Złożoność konfiguracji**Umiarkowana (.vimrc)MinimalnaWysoka (Elisp)
**Najlepszy dla**Zaawansowanych użytkowników, administratorów systemówSzybkich edycji, początkującychProgramistów, użytkowników Lisp

Do zadań administracji serwerami — edycji plików konfiguracyjnych, pisania skryptów powłoki, przeglądania logów — Vim zapewnia najlepszą równowagę między mocą, dostępnością i szybkością. Nano jest akceptowalny do jednorazowych edycji, gdy nie możesz sobie pozwolić na kognitywne obciążenie. Emacs jest uzasadnionym wyborem dla programistów żyjących w terminalu, ale jego ślad zasobów i czas uruchamiania czynią go mniej praktycznym w ograniczonych środowiskach serwerowych.

Typowe pułapki i jak ich unikać

1. Edycja plików produkcyjnych bez kopii zapasowej

Zawsze twórz kopię zapasową przed edycją krytycznych plików systemowych:

“`bash

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

sudo vim /etc/nginx/nginx.conf

“`

2. Zapomnienie o użyciu sudo

Jeśli otworzysz uprzywilejowany plik bez sudo i wprowadzisz zmiany, użyj `:w !sudo tee %` do zapisania bez utraty edycji.

3. Mylenie rejestrów

Gdy usuwasz tekst za pomocą `dd`, trafia on do domyślnego rejestru `"`. Jeśli następnie skopiujesz coś za pomocą `yy`, usunięty tekst zostanie nadpisany. Aby zachować yank przed usunięciem, użyj nazwanych rejestrów: `"ayy` kopiuje do rejestru `a`, a `"ap` wkleja z niego.

4. Pozostawianie plików wymiany na współdzielonych systemach

Pliki wymiany Vima w `/tmp` lub katalogu roboczym mogą dezorientować innych użytkowników lub zautomatyzowane procesy. Skonfiguruj dedykowany katalog wymiany w `.vimrc`:

“`vim

set directory=~/.vim/swap//

“`

Podwójny ukośnik na końcu powoduje, że Vim koduje pełną ścieżkę pliku w nazwie pliku wymiany, zapobiegając kolizjom.

5. Problemy z końcami linii w plikach wieloplatformowych

Jeśli edytujesz plik pochodzący z systemu Windows, może on mieć końce linii CRLF (`rn`). Vim wyświetli `^M` na końcu każdej linii. Napraw to za pomocą:

“`bash

:%s/r//g

“`

Praktyczna lista kontrolna kluczowych wniosków

Użyj tego jako szybkiej macierzy decyzyjnej przed sesjami Vima i w ich trakcie:

  • Przed edycją jakiegokolwiek pliku produkcyjnego: Utwórz kopię zapasową z sygnaturą czasową za pomocą `cp file file.$(date +%Y%m%d%H%M%S).bak`
  • Świadomość trybu: Jeśli naciśnięcia klawiszy nie wstawiają tekstu, naciśnij `Esc` i potwierdź swój tryb
  • Nawyk szybkiego zapisywania: Naciśnij `Esc` a następnie `:w` po każdej znaczącej zmianie — nie czekaj do końca
  • Użyj `:set number` tymczasowo, jeśli musisz przejść do konkretnej linii i nie masz jej w `.vimrc`
  • Dla globalnego wyszukiwania/zamiany: Zawsze testuj z `:%s/old/new/gc` (z potwierdzeniem) przed ślepym uruchomieniem `:%s/old/new/g`
  • Monit o plik wymiany przy otwarciu: Zawsze wybierz `(R)ecover`, zapisz zawartość, a następnie usuń plik wymiany
  • Dla edycji kolumnowych: Użyj blokowego trybu Visual `Ctrl+v` zamiast ręcznego powtarzania
  • Trwałe cofanie: Skonfiguruj `set undofile` w `.vimrc` na każdym serwerze, którym regularnie administrujesz
  • Integracja ze schowkiem: Jeśli `p` wkleja nieoczekiwaną zawartość, sprawdź, czy `set clipboard=unnamedplus` jest ustawiony i czy `xclip` lub `xsel` jest zainstalowany
  • W razie wątpliwości: `:help keyword` otwiera wbudowaną dokumentację dla dowolnego polecenia lub opcji

Niezależnie od tego, czy zarządzasz plikami konfiguracyjnymi w środowiskach Shared Web Hosting, czy utrzymujesz złożoną infrastrukturę na Dedicated Servers, efektywność Vima kumuluje się z czasem — każde przyswojone polecenie trwale usuwa tarcie z Twojego przepływu pracy.

FAQ

P: Jaka jest różnica między Vi a Vim na Ubuntu?

`vi` w nowoczesnych systemach Ubuntu jest zazwyczaj dowiązaniem symbolicznym do `vim` w trybie ograniczonej kompatybilności lub do `vim-tiny`. Prawdziwe Vi to oryginalny edytor z 1976 roku bez podświetlania składni, wielopoziomowego cofania i obsługi wtyczek. Vim dodaje ponad 100 funkcji do Vi, zachowując pełną wsteczną kompatybilność z wiązaniami klawiszy Vi.

P: Jak wyjść z Vima, gdy jestem całkowicie zablokowany?

Naciśnij `Esc` kilka razy, aby upewnić się, że jesteś w trybie Normal, a następnie wpisz `:q!` i naciśnij Enter. To wymusza wyjście bez zapisywania. Jeśli nawet to nie działa (rzadkie, ale możliwe w rekurencyjnych stanach poleceń), najpierw naciśnij `Ctrl+c`, a następnie `:q!`.

P: Czy Vim może edytować pliki przez SSH bez kopiowania ich lokalnie?

Tak. Użyj `vim scp://user@hostname//path/to/file` do bezpośredniej edycji zdalnych plików przez SCP. Vim obsługuje transfer w sposób przezroczysty. Alternatywnie użyj `rsync` do pobrania pliku, edycji lokalnej i przesłania z powrotem — jest to szybsze w przypadku dużych plików.

P: Jak włączyć podświetlanie składni dla określonego typu pliku, którego Vim nie rozpoznaje?

Uruchom `:set filetype=nginx` (lub `python`, `yaml`, `bash` itp.), aby ręcznie przypisać typ pliku dla bieżącej sesji. Aby uczynić to trwałym dla określonego rozszerzenia pliku, dodaj `autocmd BufRead,BufNewFile *.conf set filetype=nginx` do swojego `.vimrc`.

P: Czy Neovim jest lepszym wyborem niż Vim do użytku serwerowego?

Do czystych zadań administracji serwerami standardowy Vim jest wystarczający i bardziej powszechnie dostępny. Neovim oferuje konfigurację opartą na Lua, lepszą obsługę asynchronicznych wtyczek i wbudowanego klienta LSP — zalety, które mają znaczenie głównie w przepływach pracy programistycznej. Na serwerach produkcyjnych, gdzie instalujesz tylko to, co niezbędne, Vim pozostaje pragmatycznym wyborem.

15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij