Vim: Что такое set hidden

Источник: «What is set hidden?»
Используйте set hidden, чтобы разрешить скрытие несохранённых буферов в Vim.

Если вы когда-либо просматривали .vimrc пользователя Vim (вот архив из нескольких из них для ознакомления), то, скорее всего, сталкивались с set hidden. Этот параметр является неотъемлемой частью многих конфигураций Vim, поскольку конфигурация Vim по умолчанию поставляется с set nohidden, что означает, что скрытие отключено.

Но что вообще делает set hidden и зачем это нам нужно? Разве мы не должны доверять параметрам Vim по умолчанию? Прочитайте :help hidden для официального разъяснения, но это немного бестолково. В двух словах, разрешая скрытые буферы с помощью set hidden, вы сообщаете Vim, что у вас могут быть несохранённые работы, которые не отображаются на вашем экране.

Представьте, что вы открываете файл с помощью :e some.file. Вы делаете некоторые изменения, но не записываете файл на диск с помощью :w. Затем вы открываете другой файл с помощью :e some-other.file. Если по умолчанию установлена опция :set nohidden, Vim выдаст сообщение об ошибке:

E37: No write since last change (add ! to override)

Это способ Vim сообщить, что вы не можете открыть новый буфер (и скрыть этот), не записав его. Если вы хотите разрешить такое поведение, просто добавьте опцию set hidden в ваш .vimrc. Многим пользователям Vim нравиться гибкость, которую даёт set hidden, позволяя быстро перемещаться по файлам, не беспокоясь о том, записаны ли они на диск. Это позволяет им преднамеренно решать, когда и где они записывают файлы. Без включённого hidden вам может потребовать внести изменения, которые вы ещё не готовы записать, просто, чтобы увидеть другой файл. Если у вас включена синтаксическая проверка или какая-то фоновая компиляция ресурсов, которая происходит при записи, возможно, вам не всегда нужно, чтобы они срабатывали при перемещении файлов. С set hidden у вас есть такая гибкость.

С другой стороны, некоторые пользователи предпочитают set nohidden по умолчанию, потому что это означает, что они не могут потерять рабочие данные в скрытом буфере. Нет ничего хуже, чем чувствовать, что вы потеряли рабочие данные, когда готовите изменения для коммита. На самом деле вы внесли изменение, просто забыли записать буфер. С set nohidden у вас есть некоторые ограждения, которые помогут вам предотвратить утерю несохранённых данных. Но без включённого hidden вы не сможете запускать команды для нескольких файлов с помощью команды Vim argdo, если только вы не сохраните эти файлы на том же шаге с | w.

Так что вы предпочитаете?

Дополнительные материалы

Предыдущая Статья

Новое в Symfony 6.3 — Улучшения Clock

Следующая Статья

Новое в Symfony 6.3 — Улучшения DX (developer experience)