├── .github ├── README.md └── demo.gif ├── Context.sublime-menu ├── Default (Linux).sublime-keymap ├── Default (OSX).sublime-keymap ├── Default (Windows).sublime-keymap ├── Main.sublime-menu └── SequenceGenerator.py /.github/README.md: -------------------------------------------------------------------------------- 1 | 因为经常要写配置表之类的操作,需要自动生成序号,于是写了这个Sublime Text插件。 2 | 3 | 按下快捷键或者选择菜单以后,输入格式即可自动填充。 4 | 5 | 支持两种格式 {起始值}, {起始值:步长} 6 | 7 | 下面是演示过程: 8 | 9 | ![image](https://raw.githubusercontent.com/shuax/SequenceGenerator/master/.github/demo.gif) 10 | 11 | 新版Sublime Text自带了一个Arithmetic命令,推荐使用,可以直接使用表达式,比这个插件的功能更强大。 -------------------------------------------------------------------------------- /.github/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuax/SequenceGenerator/c0a900b4d29fc53cee87cfd215c631e092f74829/.github/demo.gif -------------------------------------------------------------------------------- /Context.sublime-menu: -------------------------------------------------------------------------------- 1 | [{ 2 | "id": "SequenceGenerator", 3 | "caption": "Generate Sequence", 4 | "command": "sequence_generator" 5 | }] 6 | -------------------------------------------------------------------------------- /Default (Linux).sublime-keymap: -------------------------------------------------------------------------------- 1 | [{ 2 | "keys": ["ctrl+shift+n"], 3 | "command": "sequence_generator" 4 | }] 5 | -------------------------------------------------------------------------------- /Default (OSX).sublime-keymap: -------------------------------------------------------------------------------- 1 | [{ 2 | "keys": ["super+shift+n"], 3 | "command": "sequence_generator" 4 | }] 5 | -------------------------------------------------------------------------------- /Default (Windows).sublime-keymap: -------------------------------------------------------------------------------- 1 | [{ 2 | "keys": ["ctrl+shift+n"], 3 | "command": "sequence_generator" 4 | }] 5 | -------------------------------------------------------------------------------- /Main.sublime-menu: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "edit", 4 | "children": 5 | [{ 6 | "caption": "Generate Sequence", 7 | "id": "SequenceGenerator", 8 | "command": "sequence_generator" 9 | }] 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /SequenceGenerator.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin 2 | 3 | class SequenceGeneratorCommand(sublime_plugin.TextCommand): 4 | def run(self, edit): 5 | sublime.status_message("You could set the sequence format to: {start:step} or {start}.") 6 | self.view.window().show_input_panel("Enter Sequence Format:", "1", self.on_done, self.on_change, None) 7 | def on_done(self, text): 8 | parameter = self.VerifyFormat(text) 9 | if not parameter: 10 | sublime.error_message("Your input is invalid.") 11 | else: 12 | self.view.run_command("generate_sequence", {"parameter": parameter}) 13 | 14 | def on_change(self, text): 15 | if not self.VerifyFormat(text): 16 | sublime.status_message("Your input is invalid.") 17 | else: 18 | sublime.status_message("You could set the sequence format to: {start:step} or {start}.") 19 | def VerifyFormat(self, text): 20 | splits = text.replace(":", " ").split() 21 | length = len(splits) 22 | if not 1<=length<=2: 23 | return False 24 | for number in splits: 25 | try: 26 | number = int(number) 27 | except: 28 | return False 29 | 30 | parameter = {'start':1, 'step':1} 31 | 32 | if length==1: 33 | parameter['start'] = int(splits[0]) 34 | else: 35 | parameter['start'] = int(splits[0]) 36 | parameter['step'] = int(splits[1]) 37 | 38 | return parameter 39 | 40 | class GenerateSequenceCommand(sublime_plugin.TextCommand): 41 | def run(self, edit, parameter): 42 | new_sel = [] 43 | for region in self.view.sel(): 44 | self.view.erase(edit, region) 45 | 46 | sequence = str(parameter['start']) 47 | self.view.insert(edit, region.begin(), sequence) 48 | 49 | new_sel.append(sublime.Region(region.begin(), region.begin() + len(sequence))) 50 | 51 | parameter['start'] += parameter['step'] 52 | 53 | if len(new_sel) > 0: 54 | self.view.sel().clear() 55 | for r in new_sel: 56 | self.view.sel().add(r) 57 | 58 | --------------------------------------------------------------------------------