Как использовать редактор Vi/Vim в Ubuntu: полное техническое руководство
Vi и Vim (Vi Improved) — это модальные текстовые редакторы с управлением с клавиатуры, работающие исключительно в терминале, что делает их незаменимыми для администрирования серверов, редактирования удалённых конфигураций и работы со скриптами в Ubuntu и других дистрибутивах Linux. Vim расширяет Vi подсветкой синтаксиса, многоуровневой отменой действий, разделёнными окнами, поддержкой плагинов и настраиваемым конфигурационным слоем — при этом потребляя минимальные системные ресурсы.
Если вы управляете средой VPS Хостинга или физическим сервером, свободное владение Vim — не опция, а базовый навык. SSH-сессии не всегда предоставляют доступ к GUI, а Vim практически повсеместно доступен на каждой Unix-системе, с которой вам когда-либо придётся работать.
Почему Vim по-прежнему доминирует в серверных средах
Современные IDE мощны, но бесполезны, когда вы подключены к headless-серверу Ubuntu по SSH в 2 часа ночи и отлаживаете сломанную конфигурацию Nginx. Модальная архитектура Vim означает, что каждое нажатие клавиши — это команда: никакой зависимости от мыши, никаких накладных расходов на рендеринг и никакой задержки, вносимой графическим слоем.
Основные причины, по которым системные администраторы полагаются на Vim:
- Отсутствие внешних зависимостей: Работает через любое SSH-соединение, включая каналы с низкой пропускной способностью или высокой задержкой
- Стабильная доступность: Предустановлен или легко устанавливается на Debian, Ubuntu, CentOS, Alpine и практически в любом дистрибутиве Linux
- Скорость при работе с большими файлами: Редактирование конфигурационных файлов, лог-файлов или скриптов на несколько тысяч строк в Vim быстрее, чем в любом GUI-редакторе, после выработки мышечной памяти
- Возможность написания скриптов: Встроенный язык сценариев 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 Server — например, используемых в 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
“`
Восстановление из swap-файла: Vim автоматически создаёт скрытый swap-файл (`.filename.txt.swp`) во время редактирования. Если ваша сессия завершилась аварийно или SSH-соединение прервалось, снова откройте тот же файл, и Vim предложит восстановить несохранённые изменения. Всегда сначала выбирайте `(R)ecover`, сохраните восстановленное содержимое, затем удалите swap-файл с помощью `: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` для копирования) в сочетании с движением (например, `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 с предварительно заполненным диапазоном |
|---|
Практический пример использования блочного визуального режима (`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 vs. Nano vs. 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. Оставление swap-файлов на общих системах
Swap-файлы Vim в `/tmp` или рабочем каталоге могут вводить в заблуждение других пользователей или автоматизированные процессы. Настройте выделенный каталог для swap-файлов в `.vimrc`:
“`vim
set directory=~/.vim/swap//
“`
Двойная завершающая косая черта заставляет Vim кодировать полный путь к файлу в имени swap-файла, предотвращая коллизии.
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`
- Запрос swap-файла при открытии: Всегда выбирайте `(R)ecover`, сохраните содержимое, затем удалите swap-файл
- Для редактирования по столбцам: Используйте блочный визуальный режим `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 остаётся прагматичным выбором.
