如何在Sublime Text中用多个光标选择每隔一行?


162

在Sublime Text 2中,是否可以立即选择其他(或奇/偶)行,并在这些行上放置多个光标?

谢谢。


5
您不想接受答案吗?
Martin Thoma 2014年

Answers:


381
  1. 查找:Ctrl+F
  2. 如果尚未启用正则表达式,请启用它们:Alt+R
  3. 输入表达式 .*\n.*\n
  4. 查找全部:Alt+Enter
  5. 按向左箭头可删除选择,仅保留光标:
  6. 现在,每个奇数行的开头都有一个光标。如果要偶数行,请按下:
  7. 根据文件的不同,在文件底部的右下方可能会缺少一个光标。使用鼠标(该死!)滚动到底部,按住Ctrl,然后单击丢失的光标应添加到的位置。

83
您还可以(.*\n){10}每10行使用一次
Joe Daley 2013年

21
作为一项新改进(.*(\n|$)){2}
zessx

3
真好!@zessx的(.*(\n|$)){2}解决方案包括最后一行
woojoo666

3
请注意,在OS X 10.11.5上运行的Sublime 2中,RegEx搜索的快捷方式是Alt + Command +R。您还可以通过按Command + F,然后单击如下所示的图标来启用RegEx搜索:[。 *]
lustig

97

您可以轻松做到:

  • 选择所有行或整个文档Ctrl+A
  • 添加多个选择器:Ctrl+ Shift+ L(在Mac中为Command + Shift + L)

编辑:


12
虽然不是这个问题的正确答案,但这是我想要的。感谢您的分享
Rajani Karuturi

伟大而简单的提示!
filip

5
此解决方案是我需要的,但不是OP想要的。
shriek

13

我一直在寻找一种选择高品质替代线的方法。

感谢Joe Daley的一个很好的答案。尽管我意识到,如果使用正则表达式,则如果文件末尾没有换行符,它将不会选择文件的最后一行。

我想改善该答案,但目前我似乎没有足够的声誉来评论上述答案。

您可以在正则表达式打开的情况下使用以下搜索字符串,然后按alt + enter。随后是向左箭头。这会将光标分别放在其他行上(与Joe Daley解释的步骤相同)

^.*\n.*$

7

您可以尝试使用插件: Tools/New Plugin...

import sublime_plugin


class ExpandSelectionToOtherLinesCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.window().run_command("expand_selection", {"to": "line"})
        start_region = self.view.sel()[0]
        self.view.window().run_command("select_all")
        self.view.sel().subtract(start_region)

将此文件保存到您的中Packages/User

然后,添加该插件的键绑定:

{ "keys": ["super+alt+l"], "command": "expand_selection_to_other_lines" }

此命令将选择所有其他行。选择其他行后,可以使用Split selection into lines命令(在Mac上为Ctrl+ Shift+ LCmd+ Shift+ L)。

如果您想在单个快捷方式中包含所有内容,则可以按如下所示修改插件:

import sublime_plugin


class ExpandSelectionToOtherLinesCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.window().run_command("expand_selection", {"to": "line"})
        start_region = self.view.sel()[0]
        self.view.window().run_command("select_all")
        self.view.sel().subtract(start_region)
        self.view.window().run_command("split_selection_into_lines")
        self.view.window().run_command("move", {"by": "characters", "forward": False})

最后一行仅用于删除选择,在所选行的开头保留多个光标。


1
哇,这看起来很有希望-我将尽快尝试!
user2136580

非常感谢你!我对这些插件还很陌生。应该很有趣。开始能够选择其他所有行将是很棒的。干杯!
user2136580 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.