当我有2列设置在一个崇高的文本窗口,我可以显示相同的文件在两个列?


EDIT

随着Sublime Text 4的发布,现在有一个叫做分屏视图的功能,你可以通过几种不同的方式访问它。通过菜单系统,您可以简单地使用File ->分屏视图。您也可以右键单击一个选项卡并从上下文菜单中选择分屏视图。它会自动打开一个带有当前所选文件的新视图的新窗格。

您应该注意到,与下面描述的新窗格不同,新的分屏视图窗格是临时的。这意味着如果您单击另一个选项卡或打开一个新文件,分屏视图将消失。然而,文件的新视图仍然作为一个单独的选项卡打开,因此要重新打开窗格(或比较任何打开的文件),请在左侧选择您想要的选项卡,然后在您想要比较的其他选项卡上ctrl -单击(在macOS上Command⌘-click),每个选项卡将显示在自己的窗格中。

如果想要两个(或更多)“永久”窗格将保持打开,无论你点击哪个标签,只需遵循下面的说明。


原来的答案

(Sublime Text 3)

是的,你可以。当文件打开时,单击file -> New View Into file。然后,您可以将新选项卡拖到另一个窗格,并查看该文件两次。

有几种方法可以创建新窗格。如其他答案所述,在Linux和Windows上,您可以使用AltShift2 (OS X上的Option Command⌘2),它对应于菜单中的视图→布局→列:2。如果你安装了优秀的折纸插件,你可以使用视图→折纸→窗格→创建→右,或者在Windows/Linux上使用CtrlK, Ctrl→和弦(在OS X上用⌘替换Ctrl)。


它的Shift + Alt + 2分为2个屏幕。在菜单项View -> Layout下可以找到更多选项。 一旦屏幕被分割,你可以使用快捷方式打开文件: 1. Ctrl + P(从sublime中的现有目录中)或 2. Ctrl + O(浏览目录)


我建议你使用折纸。这是一个很好的分割屏幕的插件。有关键盘快捷键的更好信息,请安装它,并在重新启动Sublime文本后打开Preferences->Package Settings -> Origami -> Key Bindings - Default

对于你的问题,我建议你看看上面提到的文件中与克隆文件相关的快捷方式。


在sublime编辑器中,找到名为View的选项卡,

View --> Layout --> "select your need"

这是一个简单的插件,可以在当前文件中“打开/关闭拆分器”,就像在其他编辑器中一样:

import sublime_plugin

class SplitPaneCommand(sublime_plugin.WindowCommand):
    def run(self):
        w = self.window
        if w.num_groups() == 1:
            w.run_command('set_layout', {
                'cols': [0.0, 1.0],
                'rows': [0.0, 0.33, 1.0],
                'cells': [[0, 0, 1, 1], [0, 1, 1, 2]]
            })
            w.focus_group(0)
            w.run_command('clone_file')
            w.run_command('move_to_group', {'group': 1})
            w.focus_group(1)
        else:
            w.focus_group(1)
            w.run_command('close')
            w.run_command('set_layout', {
                'cols': [0.0, 1.0],
                'rows': [0.0, 1.0],
                'cells': [[0, 0, 1, 1]]
            })

保存为Packages/User/split_pane.py,并将其绑定到某个热键:

{"keys": ["f6"], "command": "split_pane"},

如果你想更改为垂直分割更改如下

        "cols": [0.0, 0.46, 1.0],
        "rows": [0.0, 1.0],
        "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]

我经常在两个不同的位置处理同一个文件。我在Sublime Text 3中使用折纸和一些附加配置的链解决了这个问题。

我的工作流程是Ctrl + k + 2将文件视图分成两个(水平)窗格,其中较低的窗格是活动的。使用Ctrl + k + o在窗格之间切换。完成后,确保下面的窗格是活动的,并按Ctrl + F4关闭复制的视图和窗格。

在崇高的全局设置(不是折纸设置!

"origami_auto_close_empty_panes": true,

添加以下快捷方式

  { "keys": ["ctrl+k", "2"], 
    "command": "chain", 
    "args": {
      "commands": [
        ["create_pane", {"direction": "down"}],
        ["clone_file_to_pane", {"direction": "down"}],
      ],
    }
  },

  { "keys": ["ctrl+k", "o"], "command": "focus_neighboring_group" },

可以在分割模式下编辑同一文件。 最好的解释是下面的youtube视频。

https://www.youtube.com/watch?v=q2cMEeE1aOk


View -> Layout ->选择一个选项或使用快捷方式

Layout        Shortcut

Single        Alt + Shift + 1
Columns: 2    Alt + Shift + 2
Columns: 3    Alt + Shift + 3
Columns: 4    Alt + Shift + 4
Rows: 2       Alt + Shift + 8
Rows: 3       Alt + Shift + 9
Grid: 4       Alt + Shift + 5


有点晚了,但我试图扩展@Tobia的答案,以设置由命令参数驱动的布局“水平”或“垂直”。

{"keys": ["f6"], "command": "split_pane", "args": {"split_type": "vertical"} } 

插件代码:

import sublime_plugin


class SplitPaneCommand(sublime_plugin.WindowCommand):
    def run(self, split_type):
        w = self.window
        if w.num_groups() == 1:
            if (split_type == "horizontal"):
                w.run_command('set_layout', {
                    'cols': [0.0, 1.0],
                    'rows': [0.0, 0.33, 1.0],
                    'cells': [[0, 0, 1, 1], [0, 1, 1, 2]]
                })
            elif (split_type == "vertical"):
                w.run_command('set_layout', {
                    "cols": [0.0, 0.46, 1.0],
                    "rows": [0.0, 1.0],
                    "cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
                })

            w.focus_group(0)
            w.run_command('clone_file')
            w.run_command('move_to_group', {'group': 1})
            w.focus_group(1)
        else:
            w.focus_group(1)
            w.run_command('close')
            w.run_command('set_layout', {
                'cols': [0.0, 1.0],
                'rows': [0.0, 1.0],
                'cells': [[0, 0, 1, 1]]
            })