Открыть вкладку vim в новом окне (GUI)? - PullRequest
7 голосов
/ 25 мая 2011

Я бы хотел переместить текущую вкладку в новое (визуальное / реальное) окно в MacVim.

Это, вероятно, сложно, как:

  • в справке vim нет ничего, и только очень немногие - не полезные - хиты в Google
  • MacVim не поддерживает его ( ссылка , 2009)

Так мне интересно, нашел ли кто-нибудь способ достичь этого?

Ответы [ 2 ]

4 голосов
/ 25 мая 2011

Самое близкое, я думаю, вы можете использовать mksession

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

Если эта идея щекочет вашу фантазиюВы можете посмотреть на создание сценария, который будет фильтровать части из файла сеанса (который является Yust Another Vim Text Script)

:mksession! $HOME/detach.vim
:tabclose
:silent! !gvim remote --servername Detach -nR +'silent! source H:\detach.vim' +tabonly
  1. сохранить все текущие окна, отображения, настройки (:he mksession)
  2. закрыть вкладку, которую мы собираемся отключить
  3. клонировать сеанс (detach.vim) в удаленный vim
    • :silent! ( попытаться не говоритьслишком много )
    • !gvim remote --servername Detach; запустить новый удаленный сервер Vim, если он еще не существует, или поговорить с существующим сервером с именем Detach
    • -nR TODO Fix Это здесь, чтобы избежать использования файлов подкачки (потому что я не нашел способа подавить страшные сообщения ATTENTION [1]).Тем не менее, это может быть небезопасным советом в зависимости от вашей ситуации, поэтому я также включаю -R для режима только для чтения
    • +'silent! source H:\detach.vim' +tabonly - В удаленном vim создайте исходный сеанс для клонированияи оставляйте только активную вкладку (которая уже была закрыта на шаге 1).

Конечно, немного по краям, но довольно близко к тому, что вы намеревались,Я чувствую.Если вам удобно, вы можете сбросить флажки -nR и просто щелкнуть несколько назойливых сообщений о внимании подкачки (клавиатура: Q ).

[1] :he ATTENTION


Постскрипты:

  • на окнах, которые вы можете использовать :silent! !start /b gvim .... в случае, если у вас есть окна терминалапридерживаясь
  • также на окнах, вы можете получить раздражающее поведение, если получающееся окно gvim будет слишком маленьким.Последовательность :simalt ~x является одним хакерским способом максимизировать окно (при условии, что английский интерфейс, потому что x является ускорителем для Ma x imize)
  • как глазурь на торте, vim 7.3 имеет «постоянную отмену»».См. Например :se undofile
2 голосов
/ 25 мая 2011

Я не думаю, что это возможно, потому что, когда вы открываете новый экземпляр (g) vim, у вас нет доступа к истории отмен предыдущего экземпляра vim.Все, что вы можете сделать, это (в командном режиме):

:!gvim %

Это откроет текущий файл в новом экземпляре gvim.По крайней мере, это все, что я мог придумать.Я могу ошибаться

...