Самое близкое, что, я думаю, вы можете сделать, это использовать mksession
Это будет иметь несколько недостатков (например, изначально вторичный сеанс будет открывать несколько больше буферов, чем в конечном итоге требуется). Однако он сохранит ваши сопоставления, настройки, историю, расположение окон (если у вас было несколько окон на текущей вкладке, все они будут клонированы).
Если эта идея щекочет ваше воображение, вы можете подумать о создании скрипта, который будет отфильтровывать части из файла сеанса (это Yust Another Vim Text Script)
:mksession! $HOME/detach.vim
:tabclose
:silent! !gvim remote --servername Detach -nR +'silent! source H:\detach.vim' +tabonly
- сохранить все текущие окна, сопоставления, настройки (
:he mksession
)
- закройте вкладку, которую мы собираемся отсоединить
- clone the session (detach.vim) into a remote vim
:silent!
(try not to talk too much)
!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 ....
, если у вас торчат окна терминала
- также в Windows вы можете столкнуться с раздражающим поведением, если результирующее окно gvim слишком маленькое. Последовательность
:simalt ~x
— это один хакерский способ развернуть окно (при условии английского интерфейса, потому что x
— это ускоритель для Max
imize).
- как глазурь на торте, vim 7.3 имеет «постоянную отмену». См., например.
:se undofile
person
sehe
schedule
25.05.2011