sublime text 给选中项插入编号
#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 给选中项插入编号的更多相关文章
- sublime text 自定义插件,自动插入署名,自定义插入日期,自动生成头部注释
自动插入署名 菜单下面的 一.工具(tool)>新代码段(new snippet…) 看到以下代码 <snippet> <content><![CDATA[ Hel ...
- Sublime Text 3 文本编辑器
1.安装下载 下载地址:http://www.cr173.com/soft/121149.html http://www.xiazaiba.com/html/24343.html 官网 http:// ...
- 编辑器sublime text 加入到右键菜单
方式一: 1. 运行中输入 regedit 打开注册表 2. 在HKEY_CLASSES_ROOT/*/shell/ 下新建’项’ ,名称自己觉得.我用的是Sublime Text 3 ...
- 鼠标右键添加Sublime Text
鼠标右键添加Sublime Text 参考 将sublime添加到鼠标右键 实践 1. win+R 输入regedit 2. 输入路径: 计算机\HKEY_CLASSES_ROOT\*\shell\ ...
- 将Sublime Text 添加到鼠标右键菜单的教程方法
安装notepad++软件,在菜单右键自动会添加“edit with notepad++"的选项,那么怎么将Sublime Text 添加到鼠标右键菜单呢?下面是我的操作过程,希望有帮助! ...
- jquery获取select选中项的文本
使用jquery获取选中的值很简单 $("#select").val(); 但是获取选中的文本就没有这么直接了 $("#select").find(" ...
- sublime text按esc经常进入command mode(不能输入任何东西)
在使用sublime text进行 选中 操作中,如果使用了esc退出选中状态,会进入command mode,现象是不能输入任何东西,关闭当前编辑文件重新打开可以解决.但是很影响连贯性.可以通过一些 ...
- Win10系统右键添加Sublime Text 3的打开方式
1.打开注册表编辑器,开始->运行->regedit. 2.在HKEY_CLASSSES_ROOT→ * → Shell 下,在Shell下,新建项命名为Open With Sublime ...
- Sublime Text自定制代码片段(Code Snippets)
在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(snippets),这使得我们可以方便的检索和使用它们. 为 ...
随机推荐
- ssh的无密码登录
实现步骤如下: 1 生成一对公钥和私钥 $ ssh-keygen #以上命令等价于 ssh-keygen -t rsa #-t:指定密钥的类型,默认为SSH-2 的rsa类型; 运行上面的命令后,系统 ...
- pthread_exit pthread_join
int pthread_join(pthread_t thread, void **retval); int pthread_detach(pthread_t thread); void pthrea ...
- Linux 常用环境变量
/etc/profile.d/start.sh # java export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$CLASSPATH:$JAVA_H ...
- git 记住用户名和密码
git 记住用户名和密码 在使用 git 时,如果用的是 HTTPS 的方式,则每次提交,都会让输入用户名和密码,久而久之,就会感觉非常麻烦,那么该如何解决呢? 1. 使用 SSH,添加 ssh ke ...
- "UX"将会是下一个Buzzword?
“用户体验非常重要”.“没有用户体验就没有产品”.“UX就是一切”.不知道从何时开始,用户体验(UX) 这个名词已经变得如此多见了,但是人们真正的认识.认清了什么是用户体验了吗?设计师们常挂在嘴边的用 ...
- part1:8-远程登录Linux
Linux远程登录 Linux系统中是通过ssh服务实现的远程登录功能.默认ssh服务开启了22端口,而且在安装完成系统时,这个服务已经安装,并且是开机启动的.所以不需要额外配置就能直接远程登录Lin ...
- Base64中文乱码的问题
web端和app端base64解码时中文乱码的问题. web端: String data = new BASE64Encoder().encode(data.getBytes("UTF-8& ...
- 2018.09.06 警卫安排(树形dp)
描述 太平王世子事件后,陆小凤成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:有边直接相连的宫殿可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全 ...
- jdk更换不起作用问题
本人前面装了jdk8,现在准备用jdk7,我安装好了jdk7:把系统变量中的JAVA_HOME 改为 D:\java\jdk\jdk7\jdk1.7.0_67,Path 下添加如下变量,记得加;和上一 ...
- nodejs中如何使用mysql数据库[node-mysql翻译]
nodejs中如何使用mysql数据库 db-mysql因为node-waf: not found已经不能使用,可以使用mysql代替. 本文主要是[node-mysql]: https://www. ...