如何将sublime默认View设置为2行

时间:2017-10-01 14:16:54

标签: sublimetext3

每次我打开崇高时,我都会执行以下操作:

enter image description here

  

布局

然后

  

行:2

我可以更改设置,以便在打开sublime时这是默认设置吗?

3 个答案:

答案 0 :(得分:2)

没有设置我知道控制新创建的窗口的布局;它们始终作为单个文件组创建。可能最好/最简单的方法是使用默认的键绑定来设置你想要的布局,或者将它绑定到另一个更容易访问的键,而不是通过菜单。

正如您对问题的评论中所提到的(代码可能来自this superuser answer),也可以使用插件代码来划分这个特定的痒。

如上面链接的答案和评论所示,Sublime启动时活动窗口的布局将切换为两行布局。

这是次优的,因为它会强制改变活动窗口的布局,即使它已经包含文件(可能不是你想要的),它只影响活动窗口,即使有很多(可能没有)是你想要的)它不会影响插件加载后创建的窗口(这绝对不是你想要的)。

解决某些限制的版本如下。但请注意,在MacOS上,有些情况下会创建插件无法检测到的新窗口,因此根据您的操作系统,这可能无法达到您想要的效果。

在下面的代码中,对plugin_loaded的调用会查找当前存在的所有窗口并更改其布局,但前提是它们当前使用的是单窗格布局。

此外,它还会监听何时在运行时创建新窗口,并将其布局设置为所需的默认值。

要使用此功能,请从菜单中选择Tools > Developer > New Plugin,用以下内容替换存根代码,然后将其保存为Sublime默认为(您的User包)文件夹中的Python文件。 / p>

import sublime
import sublime_plugin


def set_default_layout(window):
    """
    Change the layout of the provided window to the desired default.
    """
    window.run_command("set_layout",  {
        "cells": [[0, 0, 1, 1], [0, 1, 1, 2]],
        "cols": [0.0, 1.0],
        "rows": [0.0, 0.5, 1.0]})

    # Make sure the top group is given the focus
    window.focus_group(0)


def plugin_loaded():
    """
    Make all windows with a single file group have the default layout.
    """
    for window in sublime.windows():
        if window.num_groups() == 1:
            set_default_layout(window)


class DefaultPaneSetter(sublime_plugin.EventListener):
    """
    Change the layout of newly created windows to be the default.
    """
    def on_post_window_command(self, window, command, args):
        if command == "new_window":
            set_default_layout(sublime.active_window())

如上所述,在MacOS下有些情况下会创建新窗口而不调用插件正在查看的new_window命令,例如当您启动没有窗口的Sublime时它会创建默认值,或者当您打开open_files_in_new_window时,将新文件拖到Dock中以打开它。

据我所知,没有办法检测何时发生这种情况,不断检查现在是否有比几秒钟前更多的窗口,但这似乎相当干扰并且可能导致性能下降。 / p>

另请注意,如果您正在使用以任何方式创建新窗口的任何软件包,则此代码可能会在软件包不期望的情况下强制将默认布局放到窗口上来干扰它们。

答案 1 :(得分:1)

尝试将您的版本更新为3.0 build 3143!我有这个版本,当我打开它时,我有最后使用的布局(如果先前选择了第2行或在最后一个Sublime关闭之前选择了其他布局)。

答案 2 :(得分:0)

here所述(尽管使用2列而不是2行),您也可以通过命令行选项而不是插件来实现:

subl -n --command "set_layout {\"cells\": [[0, 0, 1, 1], [0, 1, 1, 2]], \"cols\": [0.0, 1.0], \"rows\": [0.0, 0.5, 1.0]}" file1 && subl --command "focus_group {\"group\": 1}" && subl file2