Несколько буферов, один и тот же файл, разные настройки

10

Можно ли редактировать файл под разными настройками одновременно? Точнее, я хотел бы иметь несколько буферов в одном экземпляре Vim, которые имеют одинаковое содержимое (изменение одного буфера сразу же влияет на содержимое другого буфера), но разные позиции курсора, разные метки, разная подсветка синтаксиса и т. Д.

Распространенные варианты использования включают в себя независимое редактирование различных частей одного и того же файла (например, без перехода в визуальный режим в одном случае, прерывание текущего выбора визуального режима в другом экземпляре) и редактирование файлов смешанного формата (например, HTML и Javascript) без необходимости переключения настроек. , (Альтернативный подход для второго варианта использования заключается в автоматическом изменении настроек в зависимости от положения курсора, но это выходит за рамки этого вопроса.)

Редактор, упоминание которого могло бы шокировать, называет это «косвенными буферами».

Жиль "ТАК - перестань быть злым"
источник

Ответы:

2

Использование нескольких окон для просмотра одного и того же буфера позволяет просматривать, редактировать, выбирать, ... в разных частях буфера.

Подсветка синтаксиса - более сложный вопрос, в зависимости от того, что именно вы хотите. Vim уже поддерживает выделение разных частей буфера с разным синтаксисом. Например, если у вас есть html-буфер типов файлов, <style>теги будут выделены как CSS, <script>теги будут выделены как javascript и т. Д. Это делается с помощью :syn includeкоманды, а затем определяется соответствующие области синтаксиса, к которым должен применяться синтаксис.

Альтернативой является использование :ownsyntaxкоманды для указания подсветки синтаксиса, которая используется для конкретного окна.

Марки являются липкой точкой. Метки в нижнем регистре относятся к буферу, а метки в верхнем регистре - глобальные, но меток для окон нет.

jamessan
источник
1
Если я использую несколько окон, значит ли это, что они должны быть на экране все время? Что произойдет, если я закрою окно, в то время как другое окно показывает тот же буфер, потеря позиции курсора в этом окне? Есть ли что-то похожее :ownsyntaxна другие настройки, такие как отступ, команда компилятора и т. Д.?
Жиль "ТАК - перестань быть злым"
@Gilles Вы можете иметь два окна, которые никогда не отображаются на экране, поместив их в отдельные вкладки, таким образом сохраняя настройки окна, положение курсора и т. Д. Это может помочь, в зависимости от конкретного варианта использования.
Рич