Sublimetext3 热键选择文本和控制台。登录新行

Sublimetext3 热键选择文本和控制台。登录新行,sublimetext3,sublime-text-plugin,Sublimetext3,Sublime Text Plugin,我偶然发现了这个片段,它非常有用: 问题是,当我运行快捷方式代码段时,它会破坏语法。它输入一个console.log()inline,从而中断语法 例如,我希望控制台记录变量hello var hello = 'World'; 那么,上面链接的代码片段将把它转换为: var console.log(hello) = 'World'; 这不是我想要的行为。我想要的是: var hello = 'World'; console.log(hello); 现在,这看起来像是一个多命令,而且开箱即用

我偶然发现了这个片段,它非常有用:

问题是,当我运行快捷方式代码段时,它会破坏语法。它输入一个
console.log()
inline,从而中断语法

例如,我希望控制台记录变量
hello

var hello = 'World';
那么,上面链接的代码片段将把它转换为:

var console.log(hello) = 'World';
这不是我想要的行为。我想要的是:

var hello = 'World';
console.log(hello);
现在,这看起来像是一个多命令,而且开箱即用,我认为ST3不支持键绑定中的多个命令。我已经研究了插件的命令链,但是没有成功地让它输出我想要的结果。任何人都知道解决方案吗?

如果您继续使用,您只需将keybinding定义为一系列命令即可。 如果不知道执行了哪些命令,请打开控制台
ctrl+`
并写入
sublime.log\u命令(True)
以显示所有已执行的命令

那么,您如何归档您的行为:

  • 复制当前选定的变量
  • 走到队伍的尽头
  • 在下一行中插入控制台日志片段
  • 粘贴复制的变量
  • {
    “键”:[“超级+shift+l”],
    “命令”:“链”,
    “args”:{
    “命令”:[
    [“复制”],
    [“移动到”、{“到”:“eol”}],
    [“移动到”、{“到”:“eol”}],
    [“插入\u代码段”,{“内容”:“\nconsole.log(\”$1=\”+$1);$0”}],
    [“粘贴”]
    ]
    },
    “背景”:
    [
    {“key”:“selector”,“operator”:“equal”,“operator”:“source.js”},
    {“key”:“selection_empty”,“operator”:“equal”,“operator”:false}
    ]
    },
    
    另一种方法是编写一个插件,在当前行下面创建一个log命令。插件的优点是支持多个光标,并且不更改剪贴板。按
    工具>>>新建插件…
    并编写:

    导入itertools
    导入升华插件
    类LogVariableCommand(升华插件.TextCommand):
    def运行(自我,编辑):
    view=self.view
    对于视图中的sel.sel():
    如果sel.empty():
    持续
    内容=视图.substr(sel)
    线=视图线(sel)
    #检索当前缩进
    indent=”“.join(itertools.takewhile)(lambda c:c.isspace(),
    view.substr(行)))
    view.insert(编辑,line.end(),
    “\n{0}控制台.log(\”{1}=\“+{1})”
    .格式(缩进、内容))
    
    要分配密钥绑定,请使用:

    {
    “键”:[“超级+shift+l”],
    “命令”:“日志变量”
    }
    
    如果您继续使用,您可以将keybinding定义为一系列命令。 如果不知道执行了哪些命令,请打开控制台
    ctrl+`
    并写入
    sublime.log\u命令(True)
    以显示所有已执行的命令

    那么,您如何归档您的行为:

  • 复制当前选定的变量
  • 走到队伍的尽头
  • 在下一行中插入控制台日志片段
  • 粘贴复制的变量
  • {
    “键”:[“超级+shift+l”],
    “命令”:“链”,
    “args”:{
    “命令”:[
    [“复制”],
    [“移动到”、{“到”:“eol”}],
    [“移动到”、{“到”:“eol”}],
    [“插入\u代码段”,{“内容”:“\nconsole.log(\”$1=\”+$1);$0”}],
    [“粘贴”]
    ]
    },
    “背景”:
    [
    {“key”:“selector”,“operator”:“equal”,“operator”:“source.js”},
    {“key”:“selection_empty”,“operator”:“equal”,“operator”:false}
    ]
    },
    
    另一种方法是编写一个插件,在当前行下面创建一个log命令。插件的优点是支持多个光标,并且不更改剪贴板。按
    工具>>>新建插件…
    并编写:

    导入itertools
    导入升华插件
    类LogVariableCommand(升华插件.TextCommand):
    def运行(自我,编辑):
    view=self.view
    对于视图中的sel.sel():
    如果sel.empty():
    持续
    内容=视图.substr(sel)
    线=视图线(sel)
    #检索当前缩进
    indent=”“.join(itertools.takewhile)(lambda c:c.isspace(),
    view.substr(行)))
    view.insert(编辑,line.end(),
    “\n{0}控制台.log(\”{1}=\“+{1})”
    .格式(缩进、内容))
    
    要分配密钥绑定,请使用:

    {
    “键”:[“超级+shift+l”],
    “命令”:“日志变量”
    }
    
    完美!我没有想过要走到这条线的尽头,因为我遇到的问题是,它一直在削减当前的线,以进入下一条线。谢谢它与指挥链完美结合,完美!我没有想过要走到这条线的尽头,因为我遇到的问题是,它一直在削减当前的线,以进入下一条线。谢谢它与指挥链完美结合。值得注意的软件包:值得注意的软件包: