Гид по технологиям

Работа с несколькими окнами в Vim

7 min read Tutorial Обновлено 27 Dec 2025
Работа с несколькими окнами в Vim
Работа с несколькими окнами в Vim

логотип Vim на фоне нескольких окон

Введение

Vim часто воспринимают как «простой» консольный редактор, но у него богатые возможности для работы с несколькими окнами. Разделённые окна позволяют одновременно просматривать разные части одного файла, несколько разных файлов или запустить терминал прямо внутри редактора. Ниже — подробное руководство по созданию, навигации, изменению размера и закрытию окон, а также рекомендации по использованию в реальных сценариях.

Основные команды для открытия окон

Перед вводом команд вернитесь в нормальный режим, нажав клавишу Escape.

  • Горизонтальное разделение текущего окна:
:split
  • Вертикальное разделение:
:vsplit
  • Открыть несколько файлов при запуске Vim (горизонтально):
vim -o file1 file2 file3
  • Открыть несколько файлов при запуске вертикально:
vim -O file1 file2 file3
  • Открыть окна для всех уже загруженных буферов в текущей сессии:
:all
  • Открыть все буферы вертикально:
:vertical all

Совет: если нужно заранее задать высоту нового горизонтального окна, поставьте число перед командой split, например:

:3split

Это откроет окно высотой в 3 строки.

Прокрутка и независимое отображение

Каждое разделённое окно в Vim ведёт себя независимо: можно прокручивать одно окно, не затрагивая другое. Стандартные команды прокрутки применимы к активному окну:

  • Вперёд на страницу: Ctrl+F
  • Назад на страницу: Ctrl+B

Примечание: сочетание Ctrl+v в Vim обычно используется для визуального блочного режима; чтобы переключить отображение в терминале/GUI на «вертикальное» отображение окон, используйте соответствующие split-команды. В некоторых окружениях терминала поведение Ctrl+v отличается.

Создание новых окон с файлами и терминалом

  • Новое пустое окно с возможностью редактирования нового файла:
:new
  • Открыть встроенный терминал в отдельном окне (работает в Vim 8+ и в Neovim):
:terminal
  • Выполнить внешнюю команду и показать вывод, затем вернуться в Vim (нажмите Enter, чтобы закрыть вывод):
:!ls

В терминале внутри Vim можно запускать полноэкранные текстовые приложения, командные оболочки и даже дополнительные сессии Vim.

встроенный терминал Vim с командной строкой

Переключение между окнами

Навигация между окнами выполняется через префикс Ctrl+W и затем направление (аналогично перемещению курсора в Vim):

  • Вниз: Ctrl+W j
  • Вверх: Ctrl+W k
  • Влево: Ctrl+W h
  • Вправо: Ctrl+W l
  • В самое верхнее окно: Ctrl+W t
  • В самое нижнее окно: Ctrl+W b

Также удобно использовать быстрые команды для перемещения на соседнее окно:

Ctrl+W w    " циклически перейти к следующему окну
Ctrl+W p    " вернуться в предыдущее активное окно

Перестановка окон (перемещение активного окна в топ/низ) выполняется сочетаниями с заглавными буквами; обратите внимание на регистр:

  • Переместить текущее окно наверх: Ctrl+W K
  • Переместить текущее окно влево: Ctrl+W H
  • Переместить текущее окно вниз: Ctrl+W J
  • Переместить текущее окно вправо: Ctrl+W L

Важно: некоторые окружения терминала перехватывают определённые Ctrl-сочетания; если комбинации не работают, проверьте настройки терминала или переназначьте клавиши в .vimrc.

Изменение размеров окон

  • Увеличить высоту активного окна на одну строку: Ctrl+W +
  • Уменьшить высоту активного окна на одну строку: Ctrl+W -
  • Сделать окно шире: Ctrl+W >
  • Сделать окно уже: Ctrl+W <

Также можно задать абсолютную высоту окна:

:resize 20   " установить высоту в 20 строк
:vertical resize 80  " установить ширину в 80 символов

Совет: для удобства можно создать быстрые маппинги в ~/.vimrc или init.vim (Neovim).

Закрытие окон и сохранение

  • Закрыть текущее окно:
:q
  • Принудительно закрыть без сохранения:
:q!
  • Закрыть все окна и выйти из Vim:
:qall
:qall!
  • Сохранить все буферы:
:wall
  • Сохранить и закрыть все:
:wqall

Чтобы оставить одно окно открытым и закрыть все остальные:

:only
:only!

Vim показывает предупреждение при попытке закрыть несохранённые окна

Полезные приёмы и шаблоны работы

  • Быстрый обзор файлов проекта: откройте список буферов и примените :ball или :tab ball, затем используйте :bnext/:bprev для перехода.
  • Просмотр двух частей одного и того же файла: откройте :split и используйте :set scrollbind или :set cursorbind, если нужно синхронное перемещение.
  • Работа с большими файлами: уменьшите количество активных окон и отключите лишние плагины, если заметили торможение.

Пример: синхронная прокрутка двух окон одного файла

:split file.txt
:set scrollbind

Это полезно при сравнении разных разделов длинного файла.

Шпаргалка по клавишам (Cheat sheet)

ДействиеКоманда
Горизонтальное разделение:split
Вертикальное разделение:vsplit
Открыть терминал:terminal
Перейти к соседнему окнуCtrl+W w
Перейти внизCtrl+W j
Переместить окно наверхCtrl+W K
Увеличить высотуCtrl+W +
Уменьшить высотуCtrl+W -
Закрыть окно:q
Закрыть всё и выйти:qall

Когда разделённые окна не подходят (примеры)

  • Если требуется отдельный сеанс терминала с возможностью отделения/пфоновления — лучше использовать tmux или GNU Screen.
  • При интенсивном графическом взаимодействии (GUI-инструменты) Vim в терминале может быть менее удобен, чем IDE.
  • Для визуального сравнения изменений с богатой историей (например, с графическими дифф-редакторами) может оказаться полезнее специализированный инструмент.

Альтернативные подходы

  • tmux или screen: дают терминальные мультиплексоры с возможностью отделять сессии и восстанавливать их позже.
  • Neovim: совместим с большинством команд Vim, но имеет улучшенную встроенную поддержку терминалов, асинхронных плагинов и API для плагинов.
  • Графические редакторы/IDE: если вам важны подсветка ошибок в реальном времени, автодополнение и визуальные плагины, возможно, стоит сочетать Vim с GUI-решением или плагинами.

Сравнение Vim vs tmux (кратко)

  • Цель: Vim — текстовый редактор; tmux — мультиплексор терминалов.
  • Отделение: tmux позволяет «отсоединять» сеанс и оставлять процессы в фоне; Vim не может этого делать сам по себе.
  • Комбинация: часто используют Vim внутри tmux — это даёт лучшее из обоих миров.

Практическая методика для повседневного рабочего процесса

  1. Откройте проект в Vim или Neovim.
  2. Распределите окна: слева — основной редактируемый файл, справа — буфер справки/документации, снизу — терминал (:terminal).
  3. Назначьте в конфиге удобные маппинги для перемещения между окнами и изменения размеров.
  4. Сохраняйте часто (используйте :wall перед критическими сборками).
  5. Если требуется отделение сессии, перенесите работу в tmux.

Чек-листы по ролям

Разработчик:

  • Открыл основной файл в левом окне.
  • Открыл тесты/справку справа.
  • Запустил терминал внизу для сборки и тестов.
  • Назначил mape для быстрого переключения.

Системный администратор / SRE:

  • Открыл конфиги в нескольких окнах для параллельного сравнения.
  • Запустил интерактивный терминал в одном из окон.
  • Использует tmux, если нужно отсоединять сессии.

Техпис/ревьюер:

  • Открыл документ слева и список изменений справа.
  • Использует :set number для нумерации строк и удобного комментарирования.

Короткий глоссарий (1‑строчка)

  • Буфер: содержимое файла, загруженное в память Vim.
  • Окно: визуальное представление буфера на экране (pane).
  • Tabpage: набор окон; вкладки в Vim.

Частые ошибки и как их избегать

  • Проблема: Ctrl-сочетания не работают — причина: терминал перехватывает их. Решение: переназначьте в терминале или используйте альтернативные маппинги.
  • Проблема: много окон замедляют работу при больших файлах. Решение: уменьшите количество окон или используйте менее ресурсоёмкие плагины.
  • Проблема: потеря состояния при перезапуске терминала. Решение: для длительных задач используйте tmux.

Примеры конфигурации (мини‑сниппеты)

Добавьте в ~/.vimrc или init.vim для удобства:

" Быстрые маппинги для перемещения между окнами
nnoremap  h
nnoremap  j
nnoremap  k
nnoremap  l

" Быстрое изменение размера окон
nnoremap   :vertical resize -5
nnoremap  :vertical resize +5
nnoremap     :resize +2
nnoremap   :resize -2

Эти настройки часто используются, чтобы сократить число нажатий клавиш.

Критерии приёмки

  • Можно открыть два и более окна и редактировать их независимо.
  • Навигация между окнами работает с помощью Ctrl+W и соответствующих клавиш.
  • Разделённые окна корректно отображают терминал при использовании :terminal (если поддерживается версией Vim/Neovim).

Итог

Разделённые окна в Vim — мощный инструмент для параллельной работы с файлами, сравнений и интеграции терминала прямо в рабочую среду. В сочетании с tmux или Neovim они образуют гибкую и производительную среду разработки. Начните с базовых split/vsplit и постепенно добавляйте маппинги и автоматизацию в конфиг — это заметно ускорит вашу работу.

Важно: если вам нужны возможности отделения сессий или длительного фонового выполнения процессов, используйте tmux совместно с Vim.

Короткая аннотация для социальных сетей: лёгкий и практичный гид по работе с окнами в Vim, команды, советы, шпаргалка и маппинги для ускорения ежедневной работы.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Рутины Google Home: автоматизация дома
Умный дом

Рутины Google Home: автоматизация дома

Загрузочная USB с Windows 10 на Mac — пошагово
Инструкции

Загрузочная USB с Windows 10 на Mac — пошагово

Навсегда включить режим энергосбережения на iPhone
iPhone

Навсегда включить режим энергосбережения на iPhone

Как настроить Google Nest Mini — быстрый старт
Smart Home

Как настроить Google Nest Mini — быстрый старт

Отключить Sticky Keys в Windows
Windows

Отключить Sticky Keys в Windows

Как добавлять и организовать карты в Google Wallet
Мобильные финансы

Как добавлять и организовать карты в Google Wallet