КОНСАЛТИНГ | IT-АУТСОРСИНГ | РЕШЕНИЯ | КЕЙСЫ | БЛОГ
Я работаю с vi и vim уже больше двадцати лет. Когда в 2006 году ты впервые открываешь консоль FreeBSD с диска из журнала «Хакер» — первое, что ты встречаешь, это vi. И либо ты с ним подружишься, либо будешь бояться всю жизнь. Я подружился. И до сих пор считаю vim одним из самых продуктивных инструментов в арсенале любого системного администратора и разработчика.
Что такое vi
Vi (Visual Interface) появился в 1976 году — Билл Джой написал его для Unix как визуальный интерфейс поверх строкового редактора ex. Это минималистичный, легковесный редактор, который есть в каждой UNIX-системе без исключения. На FreeBSD, OpenBSD, любом embedded Linux — vi всегда там. Именно поэтому его знание обязательно: когда у тебя нет ничего, кроме голой системы, vi есть всегда.
Vi работает в двух режимах: командный (перемещение, удаление, поиск) и режим вставки (набор текста). Никакой мыши, никаких меню — только клавиатура и логика.
Vim — VI, которому дали поработать в полную силу
Vim (Vi IMproved) создал Брам Мооленаар в 1991 году как расширенную версию vi. Внешне они похожи, но под капотом Vim — совсем другой инструмент. Главные отличия:
На практике: на продакшн-серверах без пакетов ты используешь vi, а на своей рабочей машине и серверах под управлением — vim. Это разумное разделение.
Режимы — основа основ
Главное, что нужно понять в vi/vim: редактор всегда находится в одном из режимов. Большинство новичков паникуют именно потому, что не понимают, в каком режиме находятся.
┌──────────────────────────────────────────────┐
│ NORMAL (командный) ◄──── ESC ─────────────┤
│ │ │
│ i / a / o │
│ │ │
│ ▼ │
│ INSERT (вставка) │
│ │
│ v / V / Ctrl+V (из NORMAL) │
│ ▼ │
│ VISUAL (выделение) │
│ │
│ : (из NORMAL) │
│ ▼ │
│ COMMAND LINE (:w, :q, :s/…/…/) │
└──────────────────────────────────────────────┘Золотое правило: не знаешь, где ты — нажми ESC (можно несколько раз). Всегда вернёт в нормальный режим.
Шпаргалка: команды которые использую каждый день
Открытие и выход
Переход в режим вставки
Навигация (командный режим)
Редактирование
Поиск и замена
Визуальный режим (только Vim)
Настройка ~/.vimrc — делаем Vim удобным
Хороший .vimrc — это как хороший /etc/rc.conf: один раз написал, годами пользуешься. Мой минимальный конфиг для комфортной работы:
" Основные настройки
set nocompatible " Отключить совместимость с vi (включает все фичи Vim)
set number " Нумерация строк
set relativenumber " Относительная нумерация — удобно для команд типа 5dd
set cursorline " Подсветка текущей строки
set scrolloff=5 " Всегда 5 строк выше/ниже курсора
" Поиск
set hlsearch " Подсветка результатов поиска
set incsearch " Поиск по мере набора
set ignorecase " Регистронезависимый поиск
set smartcase " Но если есть заглавная — учитывать регистр
" Редактирование
set tabstop=4 " Ширина таба
set shiftwidth=4 " Ширина отступа
set expandtab " Табы → пробелы
set autoindent " Автоотступы
" Интерфейс
set showcmd " Показывать команду в строке состояния
set showmatch " Подсветка парных скобок
set ruler " Позиция курсора в строке состояния
set wildmenu " Автодополнение команд через Tab
set laststatus=2 " Всегда показывать строку состояния
" Синтаксис и цвета
syntax on
set background=dark
" Отключить .swp файлы в текущей директории
set backupdir=/tmp
set directory=/tmp
" Удобный выход из insert режима
inoremap jj <Esc>Последняя строка — личный лайфхак: jj в режиме вставки мгновенно возвращает в нормальный режим. Пальцы не тянутся в угол клавиатуры к ESC.
Продвинутые приёмы, которые меняют жизнь
Макросы — запись и воспроизведение последовательности команд:
qa — начать запись макроса в регистр 'a'
<команды> — всё что делаешь записывается
q — остановить запись
10@a — воспроизвести макрос 'a' 10 разМножественные окна:
:split filename — горизонтальный сплит
:vsplit filename — вертикальный сплит
Ctrl+W W — переключение между окнами
Ctrl+W = — выровнять окнаЗапуск shell-команды прямо из Vim:
:!ls -la — выполнить команду
:r !date — вставить вывод команды в файл
:%!sort — пропустить весь файл через sortВкладки:
:tabnew filename — новая вкладка
gt / gT — следующая / предыдущая вкладка
:tabclose — закрыть вкладкуVi или Vim — что использовать
На FreeBSD vi из базовой системы — это nvi (New Vi), облегчённая и стабильная реализация. Для повседневной работы с конфигами и скриптами этого более чем достаточно. Vim устанавливается отдельно:
# FreeBSD
pkg install vim
# Сделать vim редактором по умолчанию
echo 'export EDITOR=vim' >> ~/.profileЕсли ты работаешь с кодом, конфигами объёмом больше нескольких десятков строк, пишешь скрипты или статьи — ставь Vim. Если ты на чужом сервере или в минимальном окружении — vi всегда есть и этого хватит.
Двадцать лет назад vi казался сложным. Сегодня я не представляю работу без него. Это не инструмент — это язык, который ты выучиваешь один раз и используешь везде.
Комментарии