Объединить отдельные окна (и вкладки внутри) в один в Sublime Text 3

На моем mac я работаю с большим количеством вкладок и окон в SublimeText 3. Мне часто нравится вытаскивать вкладки, чтобы создать новое окно, но позже я хочу иметь возможность легко консолидировать их.

Сценарий: у меня есть два окна SublimeText, каждый из которых имеет 5 вкладок. Теперь я хотел бы объединить все вкладки окна 2 в окно 1, поэтому у меня есть только одно оставшееся окно с 10 вкладками.

В Chrome есть сказочное расширение под названием Слияние Windows, которое отлично демонстрирует это поведение.

Как бы это сделать в SublimeText 3?

Ответ 2

Это не совсем то, о чем вы просите, но я думаю, что это достаточно близко:

Перетащите вкладку из окна "источник" в "целевое" окно и наведите указатель мыши рядом с другими вкладками в исходном окне. Затем бросьте туда. Вуаля. Вы переместили одну вкладку. Промойте и повторите для других вкладок.

Ответ 3

Это выполнимо, но не поддерживается и может потенциально сдуть ваши буферы, если вы испортите. Поэтому создайте резервную копию этого файла.

/Пользователи/имя пользователя/Library/Поддержка приложений /Sublime Text 3/Local/Session.sublime_session

Этот файл содержит все ваши данные сеанса, все окна, историю поиска вкладок и т.д.

Вы можете перемещать все окна вкладок из одного окна в другое со следующими инструкциями:

Ищите запись "Windows" JSON, внутри которой находится список окон, список обозначается [] скобками и разделяется запятой. Внутри каждой записи "Окно" в списке "Windows" есть список "Буферы", каждый "Буфер" представляет собой вкладку. Существует также список "групп", который содержит список "листы", который функционирует идентично, но содержит информацию о вкладках и не столько содержимое.

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

"windows":
[
    {
        "auto_complete":
        {
            "selected_items":
            [
            ]
        },
        "buffers":
        [
            {
                "contents": "This tab has not been saved and is in Window 1",
                "settings":
                {
                    "buffer_size": 46,
                    "line_ending": "Unix",
                    "name": "This tab has not been saved and is in Window 1"
                }
            },
            {
                "file": "/Users/username/Desktop/This file has been saved and not changed and is in Window 1",
                "settings":
                {
                    "buffer_size": 59,
                    "line_ending": "Unix",
                    "name": "This file has been saved and not changed and is in Window 1"
                }
            }
        ],
        "groups":
        [
            {
                "selected": 0,
                "sheets":
                [
                    {
                        "buffer": 0,
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 46,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    46,
                                    46
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This tab has not been saved and is in Window 1",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 0,
                        "type": "text"
                    },
                    {
                        "buffer": 1,
                        "file": "/Users/username/Desktop/This file has been saved and not changed and is in Window 1",
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 59,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    59,
                                    59
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This file has been saved and not changed and is in",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 1,
                        "type": "text"
                    }
                ]
            }
        ]
    },
    {
        "buffers":
        [
            {
                "contents": "This tab is also unsaved and in Window 2.",
                "settings":
                {
                    "buffer_size": 41,
                    "line_ending": "Unix",
                    "name": "This tab is also unsaved and in Window 2."
                }
            }
        ],
        "groups":
        [
            {
                "selected": 0,
                "sheets":
                [
                    {
                        "buffer": 0,
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 41,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    41,
                                    41
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This tab is also unsaved and in Window 2.",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 0,
                        "type": "text"
                    }
                ]
            }
        ]
    }

Если вы перемещаете каждую запись "буфера" со второго "окна" до конца первого и повторяете для каждого "листа" под "группами". Затем обновите номер "buffer", чтобы быть выше для каждой записи листа, они должны быть последовательными после записи, которая была там ранее. Когда вы откроете Sublime 3, вы заметите, что все ваши вкладки из окна 2 теперь находятся в окне 1.

Измененный файл сеанса будет выглядеть следующим образом:

    "windows":
[
    {
        "auto_complete":
        {
            "selected_items":
            [
            ]
        },
        "buffers":
        [
            {
                "contents": "This tab has not been saved and is in Window 1",
                "settings":
                {
                    "buffer_size": 46,
                    "line_ending": "Unix",
                    "name": "This tab has not been saved and is in Window 1"
                }
            },
            {
                "file": "/Users/username/Desktop/This file has been saved and not changed and is in",
                "settings":
                {
                    "buffer_size": 59,
                    "line_ending": "Unix",
                    "name": "This file has been saved and not changed and is in"
                },

            },
            {
                "contents": "This tab is also unsaved and in Window 2.",
                "settings":
                {
                    "buffer_size": 41,
                    "line_ending": "Unix",
                    "name": "This tab is also unsaved and in Window 2."
                }
            }
        ],
        "groups":
        [
            {
                "selected": 0,
                "sheets":
                [
                    {
                        "buffer": 0,
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 46,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    46,
                                    46
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This tab has not been saved and is in Window 1",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 0,
                        "type": "text"
                    },
                    {
                        "buffer": 1,
                        "file": "/Users/username/Desktop/This file has been saved and not changed and is in",
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 59,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    59,
                                    59
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This file has been saved and not changed and is in",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 1,
                        "type": "text"
                    },
                    {
                        "buffer": 2,
                        "semi_transient": false,
                        "settings":
                        {
                            "buffer_size": 41,
                            "regions":
                            {
                            },
                            "selection":
                            [
                                [
                                    41,
                                    41
                                ]
                            ],
                            "settings":
                            {
                                "auto_name": "This tab is also unsaved and in Window 2.",
                                "syntax": "Packages/Text/Plain text.tmLanguage"
                            },
                            "translation.x": 0.0,
                            "translation.y": 0.0,
                            "zoom_level": 1.0
                        },
                        "stack_index": 0,
                        "type": "text"
                    }
                ]
            }
        ]
    },
    {
        "buffers":
        [
        ],
        "groups":
        [
            {
                "selected": 0,
                "sheets":
                [
                ]
            }
        ]
    }

Там у вас есть. Это не очень или просто, но он выполнит эту работу и может быть написан с использованием Python, Perl или ряда других языков, особенно если вы использовали библиотеку JSON.