#coding=utf-8
import datetime, getpass
import sublime, sublime_plugin
import re # 插数字
class InsertNumberCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.window().show_input_panel("input start_num and step:", "start:1, step:1", lambda text: self.accumulate(text, edit), None, None)
def accumulate(self, text, edit):
text = re.sub(r"[^\d\+-]*([\+-]?\d+)[,\s\t]+[^\d\+-]*([\+-]?\d+)", r"\1 \2", text)
numbers = text.split(" ")
start_num = int(numbers[0])
diff_num = int(numbers[1])
for region in self.view.sel():
#(row,col) = self.view.rowcol(region.begin())
self.view.insert(edit, region.end(), "%d" %start_num)
start_num += diff_num

Sublime Text 3 版本运行会报错  ValueError: Edit objects may not be used after the TextCommand's run method has returned ,需要把 callback 改成一个独立的 command

 import sublime
import sublime_plugin
import datetime, getpass
import re # 插数字
class InsertNumberCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.window().show_input_panel("input start_num and step:", "start:1, step:1", lambda text: self.view.run_command('insert_number_cb', {"text": text}), None, None) class InsertNumberCbCommand(sublime_plugin.TextCommand):
def run(self, edit, text):
# sublime.message_dialog(text)
text = re.sub(r"[^\d\+-]*([\+-]?\d+)[,\s\t]+[^\d\+-]*([\+-]?\d+)", r"\1 \2", text)
numbers = text.split(" ")
start_num = int(numbers[0])
diff_num = int(numbers[1])
for region in self.view.sel():
#(row,col) = self.view.rowcol(region.begin())
self.view.insert(edit, region.end(), "%d" %start_num)
start_num += diff_num

求和:

 #coding=utf-8
import datetime, getpass
import sublime, sublime_plugin # 求和
class SumCommand(sublime_plugin.TextCommand):
def run(self, edit):
sum_all = 0
for region in self.view.sel():
add = 0
str_region = self.view.substr(region)
try:
add = int(str_region)
except ValueError:
sublime.error_message(u"含有非数字的字符串")
return
sum_all = sum_all + add sublime.message_dialog(str(sum_all)) class SelectWordCommand(sublime_plugin.TextCommand):
def run(self, edit):
for region in self.view.sel():
reg = self.view.word(region)
self.view.sel().add(reg)

写配置文件时,可以根据数据的规律,编写适当的函数。根据 count 计算对应的数据。

测试:

  ctrl + ` 打开 command window

  输入 view.run_command('insert_number') 回车

http://sublime-text-unofficial-documentation.readthedocs.org/en/latest/extensibility/plugins.html

步骤:

Tools -> New Plugin...

粘贴以上代码,两份代码可以放在同一个文件里

command + s 保存文件为 insertNumber.py   文件名可以随便取~

快捷键设置:

Sublime Text 2 -> Preferences -> Key Bindings - User

如果打开的文件为空,可以参考 Key Bindings - Default 文件中的格式,添加一条新的配置

{ "keys": ["super+shift+f5"], "command": "insert_number" }

"insert_number" 对应类名 InsertNumberCommand

sublime text 给选中项插入编号的更多相关文章

  1. sublime text 自定义插件,自动插入署名,自定义插入日期,自动生成头部注释

    自动插入署名 菜单下面的 一.工具(tool)>新代码段(new snippet…) 看到以下代码 <snippet> <content><![CDATA[ Hel ...

  2. Sublime Text 3 文本编辑器

    1.安装下载 下载地址:http://www.cr173.com/soft/121149.html http://www.xiazaiba.com/html/24343.html 官网 http:// ...

  3. 编辑器sublime text 加入到右键菜单

    方式一:     1. 运行中输入 regedit 打开注册表   2. 在HKEY_CLASSES_ROOT/*/shell/ 下新建’项’ ,名称自己觉得.我用的是Sublime Text   3 ...

  4. 鼠标右键添加Sublime Text

    鼠标右键添加Sublime Text 参考 将sublime添加到鼠标右键 实践 1. win+R 输入regedit 2. 输入路径: 计算机\HKEY_CLASSES_ROOT\*\shell\ ...

  5. 将Sublime Text 添加到鼠标右键菜单的教程方法

    安装notepad++软件,在菜单右键自动会添加“edit with notepad++"的选项,那么怎么将Sublime Text 添加到鼠标右键菜单呢?下面是我的操作过程,希望有帮助! ...

  6. jquery获取select选中项的文本

    使用jquery获取选中的值很简单 $("#select").val(); 但是获取选中的文本就没有这么直接了 $("#select").find(" ...

  7. sublime text按esc经常进入command mode(不能输入任何东西)

    在使用sublime text进行 选中 操作中,如果使用了esc退出选中状态,会进入command mode,现象是不能输入任何东西,关闭当前编辑文件重新打开可以解决.但是很影响连贯性.可以通过一些 ...

  8. Win10系统右键添加Sublime Text 3的打开方式

    1.打开注册表编辑器,开始->运行->regedit. 2.在HKEY_CLASSSES_ROOT→ * → Shell 下,在Shell下,新建项命名为Open With Sublime ...

  9. Sublime Text自定制代码片段(Code Snippets)

    在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(snippets),这使得我们可以方便的检索和使用它们. 为 ...

随机推荐

  1. RPM包制作方法

    一.RPM介绍 RPM 前是Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:现在应为RPM Package M ...

  2. 2018.10.09 NOIP模拟 世界杯(图论+set优化)

    传送门 貌似是防akakak题? 不是很清楚. 事实上如果两个人没有严格的大小关系,我们给他们两个连一条边. 这样可以构成很多连通块. 而且对于连通块a,ba,ba,b,aia_iai​和bjb_jb ...

  3. Django的路由层(2)

    https://www.cnblogs.com/yuanchenqi/articles/8931472.html django2.0版的path Django默认支持以下5个转化器: str,匹配除了 ...

  4. java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect to this MySQL server"

    java.sql.SQLException: null,  message from server: "Host 'xxx' is not allowed to connect to thi ...

  5. Python调用Google翻译

    出自:http://blog.csdn.net/zhaoyl03/article/details/8830806 最近想动手做一个文档自动下载器,需要模拟浏览器的行为.虽然感觉思路上没有困难,但在技术 ...

  6. spring案列——annotation配置

    一.需要的jar包 spring.jar commons-loggin.jar commons-loggin.jar commons-annotation.jar 二.项目结构 三.entity pa ...

  7. Spring容器中bean的生命周期以及关注spring bean对象的后置处理器:BeanPostProcessor(一个接口)

    Spring IOC 容器对 Bean 的生命周期进行管理的过程: 1.通过构造器或工厂方法创建 Bean 实例 2.为 Bean 的属性设置值和对其他 Bean 的引用 3.将 Bean 实例传递给 ...

  8. window.open()用法说明

    1.例子 : window.open("index.jsp","_self"); window.open()格式: window.open( [sURL] [, ...

  9. cassandra集群缩容与剔除问题节点

    今天在操作cassandra集群数据迁移时发生了一些意料之外的事情,服务器迁移前与迁移后同样为5台,但是不知道是什么原因导致的,迁移过后的节点居然多出了一台cassandra节点,个人瞬间感觉莫名其妙 ...

  10. Maven发布和管理项目

    1 什么是Maven? 如果没有Maven,你可能不得不经历下面的过程: 1 如果使用了spring,去spring的官网下载jar包:如果使用hibernate,去hibernate的官网下载Jar ...