Раньше я старался держаться подальше от буферов и вкладок: все эти странные слова и неочевидные сочетания клавиш казались мне пугающими и запутанными. Но как только я понял, как в Vim устроены буферы, окна и вкладки, мне уже не хотелось возвращаться к прежним привычкам. Теперь не представляю, как раньше обходился без них!
Первое знакомство с буферами в Vim
Проще всего думать о буфере как об «открытом файле». В Vim можно открыть сразу несколько файлов — для каждого будет свой буфер. Между ними легко переключаться или даже просматривать несколько одновременно.
Наверняка вы обычно запускаете Vim примерно так:
Но на самом деле Vim отлично справляется с несколькими файлами за раз, например:
Для этого удобно использовать шаблоны оболочки, например vim *.md. Если раньше у меня случайно открывалось несколько файлов, я тут же начинал паниковать. После того как я разобрался, что такое буферы, все стало на свои места!
Когда у вас открыто несколько буферов, их список можно увидеть с помощью команды :buffers:
Vim показывает внизу экрана имена всех буферов с их номерами и некоторой дополнительной информацией. Активный буфер отмечен знаком %. Есть еще команда :args, которая выводит похожий список:
Эта команда выводит имена файлов, которые вы указали при запуске Vim, а текущий выделяет скобками. Если открытых файлов немного и названия короткие — всё просто, но с длинными именами и большим списком можно легко потеряться!
:args показывает только те буферы, которые были открыты при запуске Vim; те, что появились позже, в списке не отображаются.
Когда у вас много буферов, вы можете редактировать и сохранять каждый файл независимо. Основные команды те же, что и для одного файла: :w — сохранение, :q — выход из Vim и т. д.
Уметь быстро переключаться между буферами — очень полезно. Самая легкая команда — :bnext, она перемещает вас к следующему буферу по кругу.
Есть и более короткая форма: :bn. Как и у многих других команд vi, существуют сокращенные варианты — они реально экономят время. Если вы встречаете :bn[ext], это значит, что команда сработает и в короткой, и в полной записи.
Фишки для уверенных пользователей буферов
В Vim целая россыпь команд для управления буферами. Если хочется узнать больше — встроенная справка (:help) станет настоящим кладезем полезностей. Если не хочется углубляться самому, всегда можно найти отличную удобную шпаргалку по Vim.
Способов переключаться между буферами довольно много. Помимо :bn, есть :bp[revious] (вернуться к предыдущему) и :b[uffer]# (например, :b4 — сразу к буферу №4 по списку).
:b[uffer] имя_файла позволяет мгновенно активировать буфер по названию файла. Причём писать его полностью не требуется — достаточно уникальной части имени. Например, :b fo откроет буфер с именем «foo».
Если открытых буферов стало слишком много, можно удалить ненужные командой :bd[elete]. Не перепутайте — :q[uit] завершает работу с Vim целиком, а не просто закрывает отдельный буфер.
Если вы хотите перейти на другой буфер, не сохранив изменения, Vim выдаст ошибку: “E37: No write since last change (add ! to override).” Это всего лишь напоминание о несохранённых данных. Чтобы избавиться от этого сообщения, включите :set hidden — так вы сможете скрывать несохранённые буферы, не теряя изменения. А если соберётесь выйти из редактора — Vim всё равно вас предупредит.
Можно остаться вообще без буферов — например, если запустить Vim вот так: vim -c ‘help | only’. В этом случае откроется только справка, и Vim не посчитает её обычным буфером.
Окна и вкладки Vim: работаем ещё быстрее
Освоив буферы, можно перейти к их параллельному просмотру и группировке. На самом деле можно работать и только с буферами, ни разу не открывая окна или вкладки — всё зависит от вашего стиля работы.
Окна в Vim — это способ разделить экран на части и просматривать разные буферы одновременно. Это напоминает работу в тайловых оконных менеджерах: окна располагаются рядом, но не перекрывают друг друга. Горизонтальное деление включается через :split:
Сначала кажется странным видеть один и тот же буфер сразу в двух окнах. Но любые изменения в одном окне сразу видны и в другом — своего рода «зеркало»:
С небольшими файлами это не очень полезно, зато если нужно редактировать разные части большого файла — незаменимо. Чтобы в одном окне открыть другой файл, используйте :e имя_файла:
Переключаться между окнами легко: просто нажмите Ctrl-w, а потом ещё раз w (зажмите Ctrl, нажмите w, отпустите — и ещё раз w).
vim -o foo bar сразу откроет файлы foo и bar в отдельных окнах, экран поделится вертикально.
Вкладки — ещё один вариант группировки: в каждую можно добавить сколько угодно окон. Одновременно видна только одна вкладка, но внутри неё — полная свобода действий.
Подпишитесь на рассылку — станьте профи в Vim с помощью новых фишек!
Для открытия новой вкладки введите :tabe[dit] — появится отдельная вкладка, и вы сразу окажетесь внутри неё. Если вкладок несколько, наверху появится простая панель с названиями (каждое — это имя активного буфера в данной вкладке).
Между вкладками легко прыгать с помощью :tabn[ext] и :tabp[revious]. Чтобы закрыть вкладку, используйте :tabc. Важно: закрытие окна или вкладки не удаляет буфер — открыть и скрыть их можно в любой момент, как вам удобно.
vim -p foo bar откроет файлы foo и bar в отдельных вкладках.
Буферы, окна и вкладки — пожалуй, самые мощные инструменты Vim, о которых многие и не догадываются. Быстро привыкнув к работе с ними, вы сразу заметите, как выросла ваша продуктивность! И это — только начало!
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!
Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru






