Кілька буферів, один і той же файл, різні налаштування


10

Чи можливо одночасно редагувати файл під різними налаштуваннями? Точніше, я хотів би мати кілька буферів в одному екземплярі Vim, які мають однаковий вміст (зміна одного буфера негайно впливає на вміст іншого буфера), але різні позиції курсора, різні позначки, різне виділення синтаксису тощо.

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

Редактор, згадка про який, мабуть, може шокувати, називає це "непрямими буферами".

Відповіді:


2

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

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

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

Знаки - це клейка точка. Малі знаки характерні для буфера, а великі знаки - глобальні, але немає жодних знаків, що стосуються вікна.


1
Якщо я використовую кілька вікон, чи це означає, що вони повинні бути постійно на екрані? Що станеться, якщо я закрию вікно, коли інше вікно показує той самий буфер, чи втрачено положення курсора у цьому вікні? Чи є щось подібне :ownsyntaxдля інших налаштувань, таких як відступ, команда компілятора тощо?
Жил "ТАК - перестань бути злим"

@Gilles У вас можуть бути два вікна, які ніколи не відображаються на екрані, розміщуючи їх на окремих вкладках, таким чином зберігаючи налаштування для вікна, положення курсору тощо. Це може допомогти, залежно від конкретного випадку використання.
Багатий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.