import sublime
import sublime_plugin
import time
import re
# 列模式下粘贴 ColumnPaste
class ColumnPasteCommand(sublime_plugin.TextCommand):
def run(self, edit):
# 只选择一行时不做处理(连续选择也会算做一行)
# print("------ ",len(self.view.sel()))
if len(self.view.sel()) == 1:
return
clip = sublime.get_clipboard()
if(clip == ""):
return
arr_str = clip.split("\n")
# print("剪切板:",arr_str)
index = 0
# 将剪切板的数据以换行符为分隔符按顺序放到选择的光标处
for pos in self.view.sel():
# print ("坐标:",pos)
self.view.insert(edit, pos.begin(), arr_str[index])
index += 1
if index == len(arr_str):
return
# 获取选中或当前页面的文本数据
def getSel(view):
sel = view.sel()
reg = sel[0]
sels = view.substr(reg)
# 处理选中的数据时,换行符为空,处理整个页面时,需要标识出换行符
lineBreak = ""
if sels == "":
reg = sublime.Region(0, view.size())
sels = view.substr (reg)
lineBreak = "\n"
return reg,sels,lineBreak
# 根据需要补充的空格
def fillStr(str,lineNum=24):
none_str = " "
none_str += none_str
str +=none_str[:lineNum-len(str)]
return str
# 将时间戳转为日期 (yyyy-MM-dd)
class TimestamptodateCommand(sublime_plugin.TextCommand):
def run (self,edit):
reg,content,lineBreak = getSel(self.view)
# 将内容以换行符分割为数组
list = content.split("\n")
result = ""
flagReplace = False
# 遍历数组
for item in list:
flag = True
# 去除空字符串和尾数的逗号
tripStr = item.strip().replace(",","")
# 如果为纯数字才进行数字转换
if tripStr.isdigit():
tripStr = int(tripStr)
# 判断时间戳在限定范围内才做时间转换
if 1001097600000 < tripStr and tripStr < 2061097600000 :
timeStamp = tripStr/1000
date = time.strftime("%Y-%m-%d", time.localtime(timeStamp))
date = str(tripStr) +" ::===> "+date
result = result + item.replace(str(tripStr),date)+lineBreak
flag = False
flagReplace = True
if flag:
result = result + item+lineBreak
# 如果一次转换都没有发生则不替换数据
if flagReplace:
self.view.replace(edit,reg,result)
# 根据表名写出创建临时表DDL
class CreatesqlCommand(sublime_plugin.TextCommand):
def run (self,edit):
reg = sublime.Region(0, self.view.size())
content = self.view.substr (reg)
if len(content)==0:
return
# 将获取到的内容生成临时表
tmp_list = content.split("\n")
# 算出最大表的长度
maxLen =10;
list = []
for item in tmp_list:
item = item.strip()
if(len(item)>0):
list.append(item)
if( maxLen<len(item)+15):
maxLen = len(item)+15
date_suffix = "_bak"+time.strftime("%m%d", time.localtime(time.time()))
content = "-- 创建临时表\n"
for item in list:
content += "create table "+fillStr(item+"_tmp",maxLen-1)+" like "+item+";\n"
content += "\n\n-- 临时表添加字段\n\n\n"
content += "\n\n-- 第二次执行,切换表\n"
for item in list:
content += "alter table "+fillStr(item,maxLen)+" rename to "+item+date_suffix+";\n"
content += "alter table "+fillStr(item+"_tmp",maxLen)+" rename to "+item+";\n"
content += "\n\n-- 表回退\n"
for item in list:
content += "alter table "+fillStr(item+date_suffix,maxLen)+" rename to "+item+";\n"
self.view.replace(edit,reg,content)
python sublime 插件
需积分: 35 199 浏览量
2022-09-16
15:03:37
上传
评论
收藏 6KB ZIP 举报
soldier_jw
- 粉丝: 12
- 资源: 5
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0