• sublime text 给选中项插入编号


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

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

     1 import sublime
     2 import sublime_plugin
     3 import datetime, getpass
     4 import re
     5 
     6 # 插数字
     7 class InsertNumberCommand(sublime_plugin.TextCommand):
     8     def run(self, edit):
     9         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)
    10 
    11 
    12 class InsertNumberCbCommand(sublime_plugin.TextCommand):
    13     def run(self, edit, text):
    14         # sublime.message_dialog(text)
    15         text =  re.sub(r"[^d+-]*([+-]?d+)[,s	]+[^d+-]*([+-]?d+)", r"1 2", text)
    16         numbers = text.split(" ")
    17         start_num   = int(numbers[0])
    18         diff_num    = int(numbers[1])
    19         for region in self.view.sel():
    20             #(row,col) = self.view.rowcol(region.begin())
    21             self.view.insert(edit, region.end(), "%d" %start_num)
    22             start_num += diff_num

    求和:

     1 #coding=utf-8
     2 import datetime, getpass
     3 import sublime, sublime_plugin
     4 
     5 # 求和
     6 class SumCommand(sublime_plugin.TextCommand):
     7     def run(self, edit):
     8         sum_all = 0
     9         for region in self.view.sel():
    10             add = 0
    11             str_region = self.view.substr(region)
    12             try:
    13                 add = int(str_region)
    14             except ValueError:
    15                 sublime.error_message(u"含有非数字的字符串")
    16                 return
    17             sum_all = sum_all + add
    18 
    19         sublime.message_dialog(str(sum_all))
    20 
    21 class SelectWordCommand(sublime_plugin.TextCommand):
    22     def run(self, edit):
    23         for region in self.view.sel():
    24             reg = self.view.word(region)
    25             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

    +V d2h5X251bGw= 请备注:from博客园
  • 相关阅读:
    Atom | 编辑器Atom的使用小结
    离散数学 | ∅ 与 {∅} 出现在离散数学幂集合中
    Excel | 如何用Excel实现证件照底色调换
    Awesome图标 | 如何在某些编辑软件中使用Font Awesome字体图标
    将SSH的秘钥每次输入的密码去掉
    用canvas 画一个水位波纹上升下降的进度球
    解决Enter passphrase for key '/Users/mac/.ssh/id_rsa':的问题
    vue 注册全局过滤器
    解决vue的父组件打开子组件弹窗只走一次mounted的问题
    forEach终止循环的方法
  • 原文地址:https://www.cnblogs.com/hangj/p/3954175.html
Copyright © 2020-2023  润新知