在Sublime Text 2中为每个选择添加一个数字,每个选择增加一个


190

有没有一种方法可以在Sublime Text 2中添加每个光标递增一次的数字?

示例,以|作为光标:

Lorem ipsum dolor sit amet, |
vehicula sed, mauris nam eget| 
neque a pede nullam, ducimus adipiscing, 
vestibulum pellentesque pellentesque laoreet faucibus.|

所需结果:

Lorem ipsum dolor sit amet, 1|
vehicula sed, mauris nam eget2| 
neque a pede nullam, ducimus adipiscing, 
vestibulum pellentesque pellentesque laoreet faucibus.3|

此功能是本机存在的,还是有提供此功能的插件?

Answers:


330

我推荐插件Text Pastry。您需要使用“ 数字序列”命令

我更喜欢使用插入数字命令

Text Pastry通过提供由一个空格分隔的三个数字来构建对插入数字语法的支持:

NMP

N:开始索引。

M代表步长,将为每个选择添加到索引中。

P必须大于0,并且将用于在索引前填充零。


63
极有帮助。
digitalextremist

1
文本糕点:多选::多选:查找和替换
gfullam 2014年

这个插件对我来说似乎很完美。但是我需要从1增加到5并重复多次。我将如何去做呢?
Chucky

4
我发现我必须先选择行,然后使用Ctrl + Shift + L选择所有受影响的行,然后使用Text Pastry进行编号,youtube.com
watch?v =

13
此解决方案也适用于Sublime Text 3。对我来说,主要问题是您需要知道如何打开“文本糕点”命令行(CTRL-ALT-N)。因此,要获得从01到10的递增数字,请选择10行(Shift +右键单击/拖动所需的列),按CTRL-ALT-N,然后键入1 1 2
Gus

107

我认为实现您要求的唯一方法是创建自己的插件。

Tools/New Plugin...

import sublime_plugin


class IncrementSelectionCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        start_value = int(self.view.substr(self.view.sel()[0]))

        counter = 0
        for selection in self.view.sel():
            self.view.insert(edit, selection.begin(), str(start_value + counter))
            counter = counter + 1

        for selection in self.view.sel():
            self.view.erase(edit, selection)

将其保存在User目录中。然后将快捷方式添加到您的Key Bindings - User

{ "keys": ["YOUR_SHORTCUT"], "command": "increment_selection" }

现在,您可以将游标放置在所需的位置:

在此处输入图片说明

插入计数器应从其开始的数字(在本例中为1):

在此处输入图片说明

选择您输入的数字(shift<—):

在此处输入图片说明

输入快捷方式:

在此处输入图片说明


5
很好的答案,非常有帮助。只要有机会,我会立即进行。
迈克尔·罗宾逊

我曾尝试制作此插件,但无法使其正常工作-放置多个光标,插入1并按我的热键都无济于事。要激活新插件,我需要做些什么吗?
Michael Robinson

1
是的,我确实做到了。我的热键是:在“键绑定-用户”中,`{{“ keys”:[“ ctrl + alt + i”],“ command”:“ increment_selection”}`。ST2控制台中无输出
Michael Robinson

1
我在Mac和Windows上都验证了该代码,并且该代码可以正常工作。键入快捷方式后,尝试查看控制台:可能存在一些错误,可以帮助您理解问题(View/Show Console)。
2013年

1
很棒的插件!唯一的缺点是选择中的每个整数都必须具有完全相同的值。
加贝·希姆斯特拉
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.