【问题标题】:Sublime Text 3: Keep entire lines selected when indenting with tabSublime Text 3:使用制表符缩进时保持选中整行
【发布时间】:2014-07-10 23:54:02
【问题描述】:

我有一个问题让我对 Sublime Text 3 发疯。当我通过单击行的一侧并拖动来选择多行时,然后我点击 tab 来更正缩进,但是我想移动整个行到另一个位置,但我必须重新选择它,因为第一行仅从文本开始的位置选择,而不是从行开始的位置。

让我们看看我是否可以说明这一点......下面是我的行:

Text Line 1
Text Line 2

我选择它们(使用 * 显示选择)

*Text Line 1
Text Line 2*

我缩进了这些行,现在选择看起来像这样:

    *Text Line1
    Text Line 2*

注意选择从文本开始。我希望选择保留在行首,如下所示:

*   Text Line 1
    Text Line 2*

我到处搜索,但显然我是唯一一个对此感到困扰的人。我用过的所有其他代码编辑器都按照我想要的方式进行操作。

【问题讨论】:

  • “我想将整行移动到另一个位置”是指剪切和粘贴它吗?如果是这样,您可以按CTRL + L 在剪切之前完全选择线条。或者,您可以剪切和粘贴它们,然后缩进。
  • @Zeeker Ctrl+l 不起作用,因为它每次也会选择额外的一行,不过很高兴知道。之后的缩进是我的解决方法之一,但最好不必记住特定的顺序。是的,我的意思是剪切和粘贴。谢谢。

标签: select tabs sublimetext indentation sublimetext3


【解决方案1】:

你可以通过一个小的 Python 插件来实现这个:

  1. 工具 -> 开发人员 -> 新插件...
  2. 将内容替换为以下内容:

    import sublime
    import sublime_plugin
    
    
    class IndentSelectWholeFirstLineEventListener(sublime_plugin.EventListener):
        def on_post_text_command(self, view, command_name, args):
            if command_name == 'indent':
                if all(not sel.empty() for sel in view.sel()):
                    if all(view.line(sel.begin()) != view.line(sel.end()) for sel in view.sel()):
                        new_selections = []
                        for sel in view.sel():
                            new_selections.append(sel.cover(view.line(sel.begin())))
                        view.sel().clear()
                        view.sel().add_all(new_selections)
    
  3. 将其保存在 ST 建议的文件夹中,如 fix_selection_after_indent.py

这是如何工作的:

在执行indent 命令后,如果所有选择都不为空,并且它们都跨越多行,则扩展选择以覆盖每个选择的整个第一行。

【讨论】:

    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2019-03-16
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多