Як використовувати редактор Vi/Vim на Ubuntu: Повний технічний довідник
Vi та Vim (Vi Improved) — це модальні текстові редактори з керуванням за допомогою клавіатури, що працюють повністю в терміналі, що робить їх незамінними для адміністрування серверів, редагування конфігурацій віддалено та роботи зі скриптами на Ubuntu та інших дистрибутивах Linux. Vim розширює Vi підсвічуванням синтаксису, багаторівневим скасуванням дій, розділеними вікнами, підтримкою плагінів і шаром конфігурації зі скриптами — при цьому споживаючи мінімальні системні ресурси.
Якщо ви керуєте середовищем VPS Хостингу або виділеним сервером, вільне володіння Vim — це не опція, а базова навичка. SSH-сесії не завжди мають доступ до графічного інтерфейсу, а Vim практично універсально доступний у кожній Unix-подібній системі, з якою вам доведеться працювати.
Чому Vim досі домінує в серверних середовищах
Сучасні IDE потужні, але вони не мають значення, коли ви підключені до headless-сервера Ubuntu через SSH о 2 годині ночі та налагоджуєте зламану конфігурацію Nginx. Модальний дизайн Vim означає, що кожне натискання клавіші є командою — немає залежності від миші, немає накладних витрат на рендеринг і немає затримки, спричиненої графічним шаром.
Основні причини, чому системні адміністратори покладаються на Vim:
- Нульові зовнішні залежності: Працює через будь-яке SSH-з’єднання, включаючи канали з низькою пропускною здатністю або високою затримкою
- Стабільна доступність: Попередньо встановлений або легко встановлюваний на Debian, Ubuntu, CentOS, Alpine та практично кожному дистрибутиві Linux
- Швидкість у масштабі: Редагування конфігураційних файлів, лог-файлів або скриптів з тисячами рядків у Vim відбувається швидше, ніж у будь-якому графічному редакторі після напрацювання м’язової пам’яті
- Можливість скриптування: Вбудована мова скриптів Vim (Vimscript) та підтримка Lua (у Neovim) дозволяють повністю автоматизувати повторювані завдання редагування
Встановлення Vim на Ubuntu
Ubuntu постачається з мінімальним пакетом `vim-tiny`, якому бракує підсвічування синтаксису, підтримки кількох файлів та багатьох розширених функцій. Для повної функціональності встановіть повний пакет:
“`bash
sudo apt update
sudo apt install vim -y
“`
Щоб перевірити встановлену версію та підтвердити повну підтримку функцій:
“`bash
vim –version
“`
Шукайте `+syntax`, `+clipboard`, `+python3` та `+multi_byte` у прапорцях функцій. Префікс `-` означає, що ця функція була виключена з бінарного файлу під час компіляції. Якщо вам потрібні ці функції, але вони відсутні, встановіть натомість `vim-gtk3` або `vim-nox`:
“`bash
sudo apt install vim-nox -y # Headless full-feature build
sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration
“`
Критичний граничний випадок: На мінімальних образах сервера Ubuntu — таких як ті, що використовуються в Docker-контейнерах або Виділених Серверах, завантажених через cloud-init — навіть `vi` може бути відсутнім. У такому випадку явно встановіть `vim` перед спробою редагування будь-яких конфігураційних файлів.
Відкриття, створення та відновлення файлів
“`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
“`
Відновлення з файлу підкачки: Vim автоматично створює прихований файл підкачки (`.filename.txt.swp`) під час редагування. Якщо ваша сесія завершилася аварійно або SSH-з’єднання обірвалося, знову відкрийте той самий файл, і Vim запропонує вам відновити незбережені зміни. Завжди спочатку вибирайте `(R)ecover`, збережіть відновлений вміст, а потім видаліть файл підкачки за допомогою `:e`, після чого `:!rm ~/.filename.txt.swp`, або запустивши `vim -r filename.txt`.
Цей механізм відновлення особливо цінний при редагуванні критичних конфігураційних файлів на виробничих серверах — обрив з’єднання не означає втрату роботи.
Розуміння модальної архітектури Vim
Модальний дизайн Vim — це єдина найважливіша концепція для засвоєння. На відміну від стандартних редакторів, де кожне натискання клавіші вставляє символ, Vim розділяє навігацію, редагування та виконання команд на окремі режими.
| Режим | Активація | Основне призначення |
|---|
| — | — | — |
|---|
| **Normal** | `Esc` (за замовчуванням при відкритті) | Навігація, видалення, копіювання, вставка, виконання макросів |
|---|
| **Insert** | `i`, `a`, `o`, `O`, `I`, `A` | Введення та вставка тексту |
|---|
| **Visual** | `v` (символьний), `V` (рядковий), `Ctrl+v` (блочний) | Виділення текстових діапазонів |
|---|
| **Visual Block** | `Ctrl+v` | Виділення та редагування за стовпцями |
|---|
| **Command-Line** | `:` | Операції з файлами, пошук/заміна, налаштування, зовнішні команди |
|---|
| **Replace** | `R` | Перезапис існуючих символів |
|---|
| **Ex** | `Q` | Пакетне виконання команд (рідко використовується інтерактивно) |
|---|
Найпоширеніша помилка початківців — натискання клавіш у режимі Normal з очікуванням появи тексту, а потім паніка, коли `dd` видаляє рядок або `gg` переміщується на початок файлу. Завжди перевіряйте поточний режим у нижньому лівому куті екрана — режим Insert відображає `– INSERT –`, режим Visual відображає `– VISUAL –`, а режим Normal нічого не показує.
Команди навігації в режимі Normal
Ефективна навігація — це те, що відрізняє користувача Vim, який просто функціонує, від того, хто справді швидкий. Вивчайте їх у порядку пріоритету:
Базовий рух курсора
| Клавіша | Дія |
|---|
| — | — |
|---|
| `h` | Перемістити ліворуч на один символ |
|---|
| `l` | Перемістити праворуч на один символ |
|---|
| `j` | Перемістити вниз на один рядок |
|---|
| `k` | Перемістити вгору на один рядок |
|---|
| `w` | Перейти на початок наступного слова |
|---|
| `b` | Перейти на початок попереднього слова |
|---|
| `e` | Перейти в кінець поточного слова |
|---|
| `0` | Перейти на початок рядка |
|---|
| `^` | Перейти до першого символу рядка, що не є пробілом |
|---|
| `$` | Перейти в кінець рядка |
|---|
Навігація на рівні файлу
| Клавіша | Дія |
|---|
| — | — |
|---|
| `gg` | Перейти до першого рядка файлу |
|---|
| `G` | Перейти до останнього рядка файлу |
|---|
| `:42` | Перейти до рядка 42 |
|---|
| `Ctrl+f` | Прокрутити на одну повну сторінку вперед |
|---|
| `Ctrl+b` | Прокрутити на одну повну сторінку назад |
|---|
| `Ctrl+d` | Прокрутити на пів сторінки вниз |
|---|
| `Ctrl+u` | Прокрутити на пів сторінки вгору |
|---|
| `%` | Перейти до відповідної дужки, круглої або фігурної дужки |
|---|
| `*` | Перейти до наступного входження слова під курсором |
|---|
| `#` | Перейти до попереднього входження слова під курсором |
|---|
Порада для досвідчених користувачів: Додайте перед будь-якою командою руху число, щоб повторити її. `5j` переміщує вниз на 5 рядків. `3w` переходить вперед на 3 слова. `10dd` видаляє 10 рядків. Цей числовий множник застосовується практично до кожної команди режиму Normal і є ключем до швидкого редагування.
Вхід та вихід з режиму Insert
| Клавіша | Поведінка |
|---|
| — | — |
|---|
| `i` | Вставити перед курсором |
|---|
| `a` | Додати після курсора |
|---|
| `I` | Вставити на початку рядка |
|---|
| `A` | Додати в кінці рядка |
|---|
| `o` | Відкрити новий рядок нижче та перейти в режим Insert |
|---|
| `O` | Відкрити новий рядок вище та перейти в режим Insert |
|---|
| `s` | Видалити символ під курсором та перейти в режим Insert |
|---|
| `S` | Видалити весь рядок та перейти в режим Insert |
|---|
| `Esc` або `Ctrl+[` | Повернутися до режиму Normal |
|---|
Критична звичка: Виробіть рефлекс натискання `Esc` одразу після завершення введення тексту. Залишатися в режимі Insert, коли ви маєте намір навігувати, є джерелом більшості випадкових правок.
Збереження, вихід та керування файлами
Ці команди виконуються з режиму Command-Line (спочатку натисніть `:`):
| Команда | Дія |
|---|
| — | — |
|---|
| `:w` | Зберегти (записати) поточний файл |
|---|
| `:w filename.txt` | Зберегти під новим ім’ям файлу |
|---|
| `:q` | Вийти (лише якщо немає незбережених змін) |
|---|
| `:q!` | Примусовий вихід із відкиданням усіх незбережених змін |
|---|
| `:wq` або `:x` | Зберегти та вийти |
|---|
| `ZZ` | Зберегти та вийти (скорочення в режимі Normal) |
|---|
| `ZQ` | Вийти без збереження (скорочення в режимі Normal) |
|---|
| `:w !sudo tee %` | Зберегти файл, відкритий без привілеїв sudo |
|---|
Трюк `:w !sudo tee %` є обов’язковим знанням для системних адміністраторів. Коли ви відкриваєте системний файл на зразок `/etc/fstab` без sudo та вносите зміни, ви не можете зберегти за допомогою `:w`. Ця команда передає вміст буфера через `sudo tee` для запису файлу з підвищеними привілеями — без необхідності закривати та повторно відкривати Vim.
Операції редагування: видалення, копіювання, вставка та скасування
Модель редагування Vim побудована на операторах + рухах. Оператор (наприклад, `d` для видалення або `y` для yank/копіювання) у поєднанні з рухом (наприклад, `w` для слова або `$` для кінця рядка) створює точну дію редагування.
Основні команди редагування
| Команда | Дія |
|---|
| — | — |
|---|
| `x` | Видалити символ під курсором |
|---|
| `X` | Видалити символ перед курсором |
|---|
| `dd` | Видалити (вирізати) весь поточний рядок |
|---|
| `D` | Видалити від курсора до кінця рядка |
|---|
| `dw` | Видалити від курсора до кінця слова |
|---|
| `d$` | Видалити від курсора до кінця рядка |
|---|
| `d0` | Видалити від курсора до початку рядка |
|---|
| `yy` або `Y` | Скопіювати (yank) весь поточний рядок |
|---|
| `yw` | Скопіювати від курсора до кінця слова |
|---|
| `p` | Вставити після курсора (або нижче поточного рядка для рядкових копіювань) |
|---|
| `P` | Вставити перед курсором (або вище поточного рядка) |
|---|
| `u` | Скасувати останню зміну |
|---|
| `Ctrl+r` | Повторити останню скасовану зміну |
|---|
| `.` | Повторити останню зміну (одна з найпотужніших команд у Vim) |
|---|
| `~` | Змінити регістр символу під курсором |
|---|
| `>>` | Збільшити відступ поточного рядка на один рівень |
|---|
| `<<` | Зменшити відступ поточного рядка на один рівень |
|---|
Команда `.` (крапка) є, мабуть, найбільш недооціненою функцією Vim серед початківців. Вона повторює вашу останню складену дію — якщо ви видалили слово за допомогою `dw`, натискання `.` видаляє наступне слово. Якщо ви змінили слово за допомогою `cw` та ввели заміну, `.` застосовує ту саму заміну до наступного входження. Це усуває повторне ручне редагування у великих файлах.
Режим Visual: точне виділення тексту
Режим Visual надає три рівні деталізації виділення:
- `v` — Посимвольне виділення
- `V` — Порядкове виділення (виділяє цілі рядки)
- `Ctrl+v` — Блочне виділення (редагування стовпців)
Після виділення застосуйте оператори:
| Клавіша | Дія над виділенням |
|---|
| — | — |
|---|
| `d` | Видалити виділений текст |
|---|
| `y` | Скопіювати (yank) виділений текст |
|---|
| `c` | Змінити (видалити та перейти в режим Insert) |
|---|
| `>` | Збільшити відступ виділення |
|---|
| `<` | Зменшити відступ виділення |
|---|
| `~` | Змінити регістр виділення |
|---|
| `:` | Перейти в режим Command-Line з попередньо заповненим діапазоном |
|---|
Реальний приклад використання блочного режиму Visual (`Ctrl+v`): У вас є конфігураційний файл, де потрібно закоментувати 15 послідовних рядків, додавши `#` на початку. Виділіть перший стовпець цих рядків за допомогою `Ctrl+v`, перейдіть вниз за допомогою `j`, натисніть `I` (велика літера i), введіть `#`, а потім натисніть `Esc`. Vim застосовує вставку до кожного виділеного рядка одночасно. Це завдання, яке потребувало б регулярного виразу або ручного повторення в більшості інших редакторів.
Пошук та заміна
Пошук
“`
/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
“`
Синтаксис пошуку та заміни
“`
:%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)
“`
Підтримка регулярних виразів: Vim використовує власний діалект регулярних виразів. Доступні `b` для межі слова, `d` для цифр, `s` для пробілів та `+` (один або більше). Для розширеного синтаксису регулярних виразів додайте префікс `v`: `:%s/v(foo|bar)/baz/g` відповідає “foo” або “bar” та замінює на “baz”.
Робота з кількома файлами, буферами та розділеними вікнами
Саме тут потужність Vim стає найбільш очевидною для складних сесій редагування.
Буфери
Буфер — це представлення файлу в пам’яті. Vim може одночасно тримати відкритими багато буферів.
“`
: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
“`
Розділені вікна
“`
: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
“`
Вкладки
“`
: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
“`
Практичний сценарій: При редагуванні конфігурації веб-сервера на VPS з cPanel вам може знадобитися звернутися до основного `nginx.conf` під час редагування файлу віртуального хоста. Відкрийте обидва у вертикальному розділенні за допомогою `:vsplit /etc/nginx/nginx.conf` та переміщуйтеся між панелями за допомогою `Ctrl+w l` та `Ctrl+w h` — не потрібно закривати один файл, щоб переглянути інший.
Налаштування Vim за допомогою .vimrc
Файл `.vimrc` у вашому домашньому каталозі є постійною конфігурацією Vim. Він виконується як Vimscript кожного разу при запуску Vim.
“`bash
vim ~/.vimrc
“`
Рекомендована конфігурація для виробничого сервера
“`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
“`
Важливо: Директива `set undofile` створює постійну історію скасувань, що зберігається на диску. Це означає, що ви можете закрити файл, відкрити його через кілька днів і все одно скасувати зміни з попередньої сесії. Створіть каталог для скасувань перед увімкненням цієї функції:
“`bash
mkdir -p ~/.vim/undo
“`
Це особливо цінно при внесенні поступових змін до конфігураційних файлів на виробничих системах — наприклад, при налаштуванні PHP-FPM або коригуванні параметрів SSL на сервері з SSL Сертифікатами для кількох доменів.
Макроси: автоматизація повторюваних правок
Макроси — одна з найпотужніших і найменш використовуваних функцій Vim. Макрос записує послідовність натискань клавіш та відтворює їх.
“`
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
“`
Реальний приклад: У вас є CSV-файл з 200 рядками, і потрібно взяти друге поле кожного рядка в подвійні лапки. Запишіть макрос на першому рядку, відтворіть його 199 разів за допомогою `199@a`, і перетворення завершиться менш ніж за секунду. Скриптування не потрібне.
Мітки та переходи
Мітки дозволяють вам позначати позиції у файлі та миттєво повертатися до них.
“`
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 проти Nano проти Emacs: вибір правильного термінального редактора
| Функція | Vim | Nano | Emacs |
|---|
| — | — | — | — |
|---|
| **Крива навчання** | Крута (модальна система) | Мінімальна | Дуже крута |
|---|
| **Час запуску** | Майже миттєвий | Майже миттєвий | Повільніший |
|---|
| **Використання пам’яті** | Дуже низьке | Дуже низьке | Від помірного до високого |
|---|
| **Підсвічування синтаксису** | Повне | Базове | Повне |
|---|
| **Екосистема плагінів** | Розширена | Мінімальна | Розширена |
|---|
| **Підтримка макросів** | Вбудована, потужна | Відсутня | Вбудована |
|---|
| **Розділені вікна** | Так | Ні | Так |
|---|
| **Віддалене редагування** | Через SSH нативно | Через SSH нативно | Протокол TRAMP |
|---|
| **Складність конфігурації** | Помірна (.vimrc) | Мінімальна | Висока (Elisp) |
|---|
| **Найкраще для** | Досвідчених користувачів, системних адміністраторів | Швидких правок, початківців | Розробників, користувачів Lisp |
|---|
Для завдань адміністрування серверів — редагування конфігураційних файлів, написання shell-скриптів, перегляду логів — Vim забезпечує найкращий баланс потужності, доступності та швидкості. Nano прийнятний для разових правок, коли ви не можете дозволити собі когнітивне навантаження. Emacs є законним вибором для розробників, які живуть у терміналі, але його споживання ресурсів та час запуску роблять його менш практичним у обмежених серверних середовищах.
Поширені помилки та як їх уникнути
1. Редагування виробничих файлів без резервної копії
Завжди створюйте резервну копію перед редагуванням критичних системних файлів:
“`bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vim /etc/nginx/nginx.conf
“`
2. Забуття використати sudo
Якщо ви відкрили привілейований файл без sudo та внесли зміни, використовуйте `:w !sudo tee %` для збереження без втрати правок.
3. Плутанина з регістрами
Коли ви видаляєте текст за допомогою `dd`, він потрапляє до регістра за замовчуванням `"`. Якщо потім скопіювати щось за допомогою `yy`, видалений текст буде перезаписаний. Щоб зберегти скопійоване перед видаленням, використовуйте іменовані регістри: `"ayy` копіює в регістр `a`, а `"ap` вставляє з нього.
4. Залишення файлів підкачки на спільних системах
Файли підкачки Vim у `/tmp` або робочому каталозі можуть збентежити інших користувачів або автоматизовані процеси. Налаштуйте окремий каталог для файлів підкачки у `.vimrc`:
“`vim
set directory=~/.vim/swap//
“`
Подвійний завершальний слеш змушує Vim кодувати повний шлях до файлу в імені файлу підкачки, запобігаючи колізіям.
5. Проблеми з закінченнями рядків у міжплатформних файлах
Якщо ви редагуєте файл, що походить з Windows, він може мати закінчення рядків CRLF (`rn`). Vim відображатиме `^M` в кінці кожного рядка. Виправте це за допомогою:
“`bash
:%s/r//g
“`
Практичний контрольний список ключових висновків
Використовуйте це як матрицю швидкого прийняття рішень до та під час сесій Vim:
- Перед редагуванням будь-якого виробничого файлу: Створіть резервну копію з міткою часу за допомогою `cp file file.$(date +%Y%m%d%H%M%S).bak`
- Усвідомлення режиму: Якщо натискання клавіш не вставляють текст, натисніть `Esc` та перевірте свій режим
- Звичка швидкого збереження: Натискайте `Esc`, а потім `:w` після кожної значної зміни — не чекайте до кінця
- Використовуйте `:set number` тимчасово, якщо вам потрібно перейти до певного рядка і у вас немає цього в `.vimrc`
- Для глобального пошуку/заміни: Завжди тестуйте з `:%s/old/new/gc` (з підтвердженням) перед сліпим запуском `:%s/old/new/g`
- Запит файлу підкачки при відкритті: Завжди вибирайте `(R)ecover`, збережіть вміст, а потім видаліть файл підкачки
- Для редагування стовпців: Використовуйте блочний режим Visual `Ctrl+v` замість ручного повторення
- Постійне скасування: Налаштуйте `set undofile` у `.vimrc` на будь-якому сервері, яким ви регулярно адмініструєте
- Інтеграція з буфером обміну: Якщо `p` вставляє несподіваний вміст, перевірте, що `set clipboard=unnamedplus` встановлено та що `xclip` або `xsel` встановлено
- У разі сумнівів: `:help keyword` відкриває вбудовану документацію для будь-якої команди або опції
Незалежно від того, чи керуєте ви конфігураційними файлами в середовищах Спільного Веб-Хостингу, чи підтримуєте складну інфраструктуру на Виділених Серверах, ефективність Vim накопичується з часом — кожна засвоєна команда назавжди усуває тертя з вашого робочого процесу.
FAQ
П: У чому різниця між Vi та Vim на Ubuntu?
`vi` на сучасних системах Ubuntu зазвичай є символічним посиланням на `vim` у режимі зниженої сумісності або на `vim-tiny`. Справжній Vi — це оригінальний редактор 1976 року без підсвічування синтаксису, без багаторівневого скасування та без підтримки плагінів. Vim додає понад 100 функцій поверх Vi, залишаючись повністю зворотно сумісним з прив’язками клавіш Vi.
П: Як вийти з Vim, якщо я повністю застряг?
Натисніть `Esc` кілька разів, щоб переконатися, що ви в режимі Normal, потім введіть `:q!` та натисніть Enter. Це примусово виходить без збереження. Якщо навіть це не допомагає (рідко, але можливо в рекурсивних станах команд), спочатку натисніть `Ctrl+c`, а потім `:q!`.
П: Чи може Vim редагувати файли через SSH без їх локального копіювання?
Так. Використовуйте `vim scp://user@hostname//path/to/file` для безпосереднього редагування віддалених файлів через SCP. Vim прозоро обробляє передачу. Крім того, використовуйте `rsync` для отримання файлу, локального редагування та відправки назад — це швидше для великих файлів.
П: Як увімкнути підсвічування синтаксису для певного типу файлу, який Vim не розпізнає?
Запустіть `:set filetype=nginx` (або `python`, `yaml`, `bash` тощо), щоб вручну призначити тип файлу для поточної сесії. Щоб зробити це постійним для певного розширення файлу, додайте `autocmd BufRead,BufNewFile *.conf set filetype=nginx` до вашого `.vimrc`.
П: Чи є Neovim кращим вибором, ніж Vim для використання на сервері?
Для чистих завдань адміністрування серверів стандартний Vim є достатнім і більш універсально доступним. Neovim пропонує конфігурацію на основі Lua, кращу підтримку асинхронних плагінів та вбудований LSP-клієнт — переваги, які мають значення насамперед для робочих процесів розробки. На виробничих серверах, де ви встановлюєте лише необхідне, Vim залишається прагматичним вибором.
