【问题标题】:Sublime text Key bindings for multiple cursorsSublime text 多个光标的键绑定
【发布时间】:2017-05-21 10:23:10
【问题描述】:

我为我的 sublime 创建了一个简单的 .py 插件,它只输出一个带前缀的时间戳,我想将它插入到我的多个光标位置。

插件:

import datetime
import sublime, sublime_plugin

class TimestampcondencedCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    val = "%s" % (datetime.datetime.now().strftime("am_func_%Y%m%d%H%M%S"))
    self.view.insert(edit, self.view.sel()[0].begin(), val)

和键绑定:

{ "keys": ["ctrl+shift+z"], "command": "timestampcondenced"}

它可以工作,但是当我点击ctrl+shift+z 时,只有第一个光标受到影响,这很遗憾。 我想为我所有的游标使用它,我该如何解决这个问题?

【问题讨论】:

    标签: sublimetext3


    【解决方案1】:

    原因是view.sel() 返回了所有选择的列表,但您的代码明确使用了第一个(view.sel()[0] 中的[0])。

    为了在所有光标位置插入,您只需要遍历所有选择:

    import datetime
    import sublime, sublime_plugin
    
    class TimestampcondencedCommand(sublime_plugin.TextCommand):
      def run(self, edit):
        val = "%s" % (datetime.datetime.now().strftime("am_func_%Y%m%d%H%M%S"))
        for sel in self.view.sel():
            self.view.insert(edit, sel.begin(), val)
    

    【讨论】:

    • 或者只是view.run_command('insert', { 'characters': val }),它将自动在所有文本插入符号位置插入指定的字符
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多