我很好奇,是否有办法围绕文本自动创建这些块?当前在VS / VSCode项目中工作。
/////////////////////////////////////////////////////////
///////////////////// Demo Text /////////////////////////
/////////////////////////////////////////////////////////
由于文本长度不同,这可能真令人讨厌。
谢谢!
我很好奇,是否有办法围绕文本自动创建这些块?当前在VS / VSCode项目中工作。
/////////////////////////////////////////////////////////
///////////////////// Demo Text /////////////////////////
/////////////////////////////////////////////////////////
由于文本长度不同,这可能真令人讨厌。
谢谢!
这是一个vscode解决方案。您将需要一些宏扩展才能连续运行多个命令。在这里我以多命令为例。参见https://marketplace.visualstudio.com/items?itemName=ryuta46.multi-command
settings.json:
{
"command": "multiCommand.createTextBlock2",// "interval": 350,"sequence": [
"cursorEnd","cursorHomeSelect",{
// pad with equal number of /'s before and after text
"command": "editor.action.insertSnippet","args": {
"snippet": "////////////////////////////// $TM_SELECTED_TEXT //////////////////////////////"
}
},{
"command": "editor.action.insertSnippet","args": {
"name": "Create a Text Block",}
},"cursorDown"
]
},
摘要(在您的摘要文件之一中):
"Create a Text Block": {
"prefix": "tb","body": [
"/////////////////////////////////////////////////////////","${TM_SELECTED_TEXT/(.*)(.{57})(\\1).*/$2/g}","/////////////////////////////////////////////////////////",],"description": "create a text block"
},
还有一个用于绑定宏的键绑定(keybindings.json)。
{
"key": "alt+b",// whatever binding you wish
"command": "multiCommand.createTextBlock","when": "editorTextFocus && !editorReadonly"
},
解释宏:
每行上有57个/,没有任何文本,所以这就是我用的-选择一些金额。
宏的第1步:选择文本并将其填充在文本的开头和结尾,并带有许多/。为了使正则表达式发挥神奇作用,文本前后必须等于/,我用了大约30左右。
第2步:插入了代码段。
有趣的部分。保留包含正则表达式(.*)(.{57})(\\1).*
的文本行的中间57个字符。 \\1
是在第一个捕获组中捕获的所有内容的后向引用-因此捕获组1和3的长度相同。
捕获组2将是我们的文本,并由等号/包围(如果我们在进行正则表达式转换之前添加了等号/)。正则表达式末尾的.*
用于处理文本中的奇数/偶数字符。
regex101 demo - middle 25 characters
关于类似的问题,请参见How to pad out line to certain length using regex replace and snippets,有关将不同的文本行填充为相等的长度。
,那必须通过插件/扩展来完成,这本来就不可能。