Использование Vim / Gvim с несколькими окнами GUI

25

Можно ли иметь 2 или более (G) окна vim для одного и того же сеанса или хотя бы разделить некоторые буферы. Здесь «окно» относится к окну Gnome (или KDE, или Windows и т. Д.), А не к окну VIM.

Я использую два монитора с xinerama и хочу открыть два отдельных окна с графическим интерфейсом вместо того, чтобы иметь один огромный экран, охватывающий несколько экранов.

Атилла Филиз
источник
Вы пробовали: sp <имя файла> или: vsp <имя файла>? Это команды разделения окон vim, и они великолепны. Вот некоторая документация
Том Стивенс
2
@ Том Стивенс: и это помогает .. как? OP хочет разместить vim-окна ОДНОГО экземпляра vim на своих мониторах. OP не хочет, чтобы ОДИН экземпляр vim охватывал все мониторы.
Акира
1
Это важно; редактор не должен делать свое собственное управление окнами.
Сэм Уоткинс

Ответы:

19

В настоящее время gVim не может иметь отдельных окон верхнего уровня для одного и того же процесса / сеанса. Существует элемент TODO для реализации системы межпроцессного взаимодействия между несколькими экземплярами Vim, чтобы заставить ее вести себя так, как будто отдельные процессы объединены. (Смотрите :help todoи ищите «верхнего уровня».)

Heptite
источник
7 лет спустя, Vim8, это все еще в списке задач.
Ал.Г.
1
Пожертвуйте благотворительной организации Vim и получите голоса, затем проголосуйте за эту функцию: vim.org/sponsor/index.php
Heptite
3

Посмотрите на экран GNU, используемый вместе с Vim.

Первое окно, запустить экран GNU и VIM

xterm
screen -S edit
vim

Второе окно, подключиться к экранной сессии:

xterm
screen -x edit

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

Том

Том
источник
1
Очки за быстрый и краткий урок, хотя я бы назвал это лишь немного полезным, потому что я не могу редактировать разные буферы одного и того же сеанса таким образом.
Атилла Филиз
Интересно, что именно в этот момент экран выигрывает у tmux - в tmux подключение к одному и тому же сеансу с другого клиента означает, что вы просто видите вещи, отраженные в обоих экземплярах ... Я рассматриваю некую нечестивую комбинацию двух, но пока разобрался что хочу сделать еще!
JonnyRaa
2

Прошло некоторое время с тех пор, как вы задали свой вопрос, и многое улучшилось. У Nvidia гораздо лучшая поддержка драйверов для нескольких мониторов в Linux.
Теперь я перестал использовать Gvim с тех пор, как перешел на KDE: теперь я использую vim-qt. Это позволяет вам открывать несколько экземпляров, если вы не хотите использовать vim в терминале.

редактировать: Моя настройка

Веселый Роджер
источник
Я пытаюсь это сейчас, как я могу использовать эти несколько экземпляров? Это выглядит как обычный гвим с немного другим лицом ко мне.
Атилла Филиз
Вы можете просто запустить два экземпляра vim-qt, чтобы у вас было по одному окну для каждого из ваших экранов и между ними alt-tab, или назначить горячие клавиши для каждого окна. Vim-qt написан для qt, поэтому среды рабочего стола на основе qt, такие как KDE, могут лучше использовать окна. Это означает, что вы можете открыть несколько разных графических окон, и ваши графические окна vim могут быть полноэкранными. Что было невозможно с обычным гвим.
Jollyroger
6
Спасибо, что нашли время, но это не то, что я хотел. Я хотел получить доступ к одним и тем же буферам из двух отдельных окон графического интерфейса. И это невозможно, поскольку совместное использование буфера все еще находится в списке дел vim (см. Принятый ответ).
Атилла Филиз
1

Вы можете иметь столько сеансов vi (m), сколько пожелаете, используя отдельные окна терминала для каждого.

Что касается их отсутствия, я предполагаю, что вы выводите их на полный экран, а затем он расширяется на оба монитора, поскольку он настроен на расширение рабочего стола. Не максимизируйте его и вручную настройте размер окна терминала или gvim.

Если я пропустил оценку, пожалуйста, попробуйте немного подробнее.

Что вы подразумеваете под окном vim?

редактировать: Вот фотография моего экрана с 4 запущенными экземплярами vim

Надеюсь, Гептит ударил его, потому что я отчасти заблудился с этим.

Дэн М.
источник
1
Это именно то, что я делаю сейчас, вручную изменяю их размер, чтобы охватить два монитора, а затем: vsplit, но это выглядит ужасно, и иногда я хочу видеть некоторые буферы на разных виртуальных рабочих столах или покрывать один монитор чем-то другим. То, что я хочу, - это использовать два разных терминала и по-прежнему иметь доступ к одним и тем же буферам из обоих.
Атилла Филиз
Теперь я понимаю. Рад, что Гептит ответил за тебя.
Дан М.