2017-06-29 63 views
3

这是想什么我实现(牛逼在编辑器中选中):VS代码段CONSOLE.LOG当前行之下选择

片段之前:

var t = 'Foobar'; 

片段后:

var t = 'Foobar'; 
console.log('t', t); 

我该怎么做? 这里是我试图做的:

"log_selection": { 
    "prefix": "cls", 
    "body": [ 
     "console.log('$TM_SELECTED_TEXT', $TM_SELECTED_TEXT);" 
    ], 
    "description": "Logs selected text" 
} 

但这只是替换片段选定的文本。我认为我可以在这里使用TM_CURRENT_LINE,但我不知道如何处理该行中的剩余文本。

你有什么想法吗?也许这是不可能的片段?如果是这样,我怎么能达到预期的效果?

谢谢。

回答

2

分机macros(在1个键绑定中执行多个命令)。

settings.json

"macros": { 
    "snippetWithDescription": [ 
     "editor.action.clipboardCopyAction", 
     "editor.action.insertLineAfter", 
     "editor.action.clipboardPasteAction", 
     "cursorHomeSelect", 
     { 
      "command": "editor.action.insertSnippet", 
       "when": "editorTextFocus", 
       "args": { 
        "snippet": "console.log(`${TM_SELECTED_TEXT}`, ${TM_SELECTED_TEXT})$0" 
       } 
     } 
    ] 
} 

keybindings.json

{ 
    "key": "ctrl+shift+;", 
    "command": "macros.snippetWithDescription" 
} 

附:如果您在snippetWithDescription"editor.action.addSelectionToNextFindMatch",的开头添加另一个命令,则甚至可以省略选择部分。只需将光标放在单词旁边并点击热键即可。

+1

非常感谢Alex! :) – squidy06