Знакомое ощущение: подключился к свежему серверу, открыл конфиг в редакторе vim - и оторопел. Ни подсветки синтаксиса, ни номеров строк, забой клавишей удаления работает через раз, поиск ничего не подсвечивает. Будто пытаешься править код в темноте на ощупь. Возникает соблазн махнуть рукой и терпеть, ведь это чужая машина, и ставить туда полновесную конфигурацию с плагинами незачем. Но между голым редактором и тяжёлой персональной сборкой есть удобная середина - крошечный файл настроек на десяток строк, превращающий неуютный редактор в рабочий инструмент.
Суть в том, что подавляющую часть удобства дают не плагины, а несколько встроенных настроек, которые по умолчанию выключены или настроены непривычно. Включить подсветку, номера строк, разумный забой, осмысленные отступы - и редактор сразу становится пригодным для дела. А чтобы не настраивать каждую новую машину вручную, готовый файл копируют на сервер одной командой. Разберём, какие настройки входят в разумный минимум, почему стоит обойтись без плагинов, и как быстро доставить конфигурацию на удалённую машину.
Базовые настройки видимости делают редактор зрячим
Первое, что бросается в глаза на голом редакторе, - отсутствие визуальных подсказок. Их возвращают несколько строк. Подсветка синтаксиса раскрашивает код, делая его читаемым. Номера строк помогают ориентироваться и сверяться с сообщениями об ошибках, ссылающимися на номер. Подсветка результатов поиска и поиск по мере набора облегчают навигацию по длинным конфигам.
syntax on " подсветка синтаксиса
set number " номера строк
set hlsearch " подсвечивать результаты поиска
set incsearch " искать по мере набора
Эти изменения кажутся косметическими, но на деле они радикально меняют ощущение от работы. Голый редактор заставляет держать структуру файла в голове, а с подсветкой и номерами строк она видна глазу. Поиск по мере набора показывает совпадение ещё до нажатия ввода, а подсветка не даёт потерять его среди прочего текста - на больших файлах это особенно ценно.
Включение подсветки синтаксиса заслуживает отдельного слова. Оно не просто раскрашивает, а помогает заметить ошибку: незакрытая кавычка или скобка ломает раскраску, и это видно сразу, ещё до запуска. Так редактор из пассивного отображения текста превращается в инструмент, подсказывающий проблемы.
Разумные отступы и забой убирают повседневное раздражение
Вторая группа настроек касается ввода. По умолчанию поведение отступов и клавиши удаления в редакторе непривычно и раздражает. Настройка отступов задаёт ширину табуляции и автоматический отступ новых строк, чтобы код не превращался в кашу. А настройка забоя возвращает клавише удаления привычное поведение - в голом редакторе она по умолчанию не стирает текст за пределами только что введённого.
set autoindent " сохранять отступ предыдущей строки
set tabstop=4 " ширина табуляции четыре пробела
set shiftwidth=4 " ширина сдвига при отступе
set expandtab " заменять табы пробелами
set backspace=indent,eol,start " разумное поведение забоя
Настройка забоя особенно коварна в своём отсутствии. Без неё клавиша удаления отказывается стирать символы, введённые в прошлый заход в режим вставки, или отступ в начале строки - и человек недоумённо жмёт её снова и снова. Одна строка возвращает ей ожидаемое поведение, и раздражение исчезает.
Автоматический отступ держит новые строки на уровне предыдущих, избавляя от ручного выравнивания при правке кода. Замена табов пробелами решает извечный спор о невидимых символах в пользу единообразия, что важно при правке чужих конфигов, где смешение табов и пробелов ломает форматирование.
Постоянная строка состояния держит контекст под рукой
Полезное дополнение к минимуму - всегда видимая строка состояния внизу экрана. По умолчанию она появляется лишь при нескольких открытых файлах, а одна настройка делает её постоянной. В ней видны имя файла, номер строки, тип файла - контекст, который держать под рукой удобно.
set laststatus=2 " всегда показывать строку состояния
Это мелочь, но на удалённой машине, где легко потерять нить - какой файл правишь, на какой строке находишься, - постоянная строка состояния служит надёжным якорем. Она не требует плагинов, хотя для красивого оформления их часто и ставят на персональной машине. Для сервера же хватает простой строки с базовыми сведениями.
Почему на сервере стоит обойтись без плагинов
Тут стоит остановиться на принципиальном выборе. Соблазн дотащить на сервер любимые плагины велик, но ему лучше не поддаваться, и причин несколько.
Первая - права и доступ. На чужой машине или под общим учётным именем может не быть прав ставить менеджер плагинов, не говоря о самих плагинах. Минимальный файл настроек опирается лишь на встроенные возможности и работает где угодно, без установки чего-либо.
Вторая - чистота и предсказуемость. Сервер обычно открывают, чтобы быстро поправить конфиг или взглянуть на лог, а не вести разработку. Для таких задач тяжёлая сборка избыточна, а её отсутствие гарантирует, что редактор ведёт себя одинаково на любой машине. Когда настройки минимальны и встроены, не приходится гадать, какой плагин сломался и почему поведение отличается от ожидаемого.
Третья причина - этот же минимальный файл служит нейтральной территорией. Когда отлаживаешь плагин на своей машине и нужно исключить влияние личной конфигурации, минимум без плагинов даёт чистую базу. Он же выручает при работе под общим учётным именем, делая редактор сносным, не навязывая никому свои привычки.
Стоит знать, что некоторые из перечисленных настроек уже включены по умолчанию в редакторе, как его поставляют отдельные дистрибутивы. Но полагаться на это нельзя - на голой машине их может не быть, поэтому минимальный файл прописывает их явно, чтобы поведение не зависело от сборки.
Встроенный файловый менеджер заменяет плагин обзора файлов
Один полезный инструмент доступен без всякой установки - встроенный файловый менеджер, поставляемый вместе с редактором. Он позволяет просматривать каталоги прямо из редактора, и его не нужно ставить. Простая настройка переключает его на древовидный вид, дающий наглядную картину структуры проекта.
let g:netrw_liststyle = 3 " древовидный вид файлового менеджера
Это закрывает потребность в обзоре файлов без сторонних дополнений. На сервере, где ставить плагин файлового дерева не хочется или нельзя, встроенный менеджер с древовидным видом вполне справляется с навигацией по проекту. Он часть редактора, так что доступен везде, где доступен сам редактор.
Быстрая доставка файла на сервер через scp
Собрав минимальный файл настроек, его удобно держать наготове и доставлять на новую машину одной командой. Команда защищённого копирования закидывает файл прямо в домашний каталог удалённого сервера, в нужное место.
scp ~/.vimrc-min пользователь@сервер:~/.vimrc
После этого редактор на сервере подхватит настройки при следующем запуске. Это превращает обустройство новой машины в одно действие: вместо ручного набора настроек на каждом сервере файл копируется готовым. Некоторые держат минимальную конфигурацию в виде сценария или короткой команды загрузки, чтобы развернуть её на свежей машине ещё быстрее, но суть та же - доставить заранее собранный набор разумных умолчаний.
Главное - не поддаваться искушению раздувать этот файл. Минимальная конфигурация ценна именно своей сдержанностью. Добавлять плагины или тяжёлые темы оформления стоит лишь при реальной необходимости, которой на сервере обычно нет.
Что складывается в итоге
Картина проста. Десяток строк настроек превращает неуютный голый редактор в пригодный для работы инструмент: подсветка синтаксиса и номера строк возвращают зрение, разумный забой и отступы убирают повседневное раздражение, постоянная строка состояния держит контекст под рукой. Всё это - встроенные возможности, не требующие ни единого плагина.
Отказ от плагинов на сервере не аскеза, а разумный выбор. Он гарантирует работу там, где нет прав на установку, даёт одинаковое предсказуемое поведение на любой машине и служит чистой базой при отладке. Встроенный файловый менеджер с древовидным видом закрывает обзор файлов без сторонних средств. А доставка готового файла командой защищённого копирования делает обустройство новой машины одним движением.
Главная мысль: большую часть удобства редактора дают не плагины, а несколько разумных умолчаний, которые по умолчанию просто выключены. Стоит собрать их в крошечный файл и держать наготове, и любой свежий сервер перестаёт встречать темнотой - десяток строк делают редактор своим где угодно.