我很好奇,是否有办法在文本周围自动创建这些块?目前在 VS / VSCode 项目中工作。
/////////////////////////////////////////////////////////
///////////////////// Demo Text /////////////////////////
/////////////////////////////////////////////////////////
由于文本长度不同,这可能真的很烦人。
谢谢!
我很好奇,是否有办法在文本周围自动创建这些块?目前在 VS / VSCode 项目中工作。
/////////////////////////////////////////////////////////
///////////////////// Demo Text /////////////////////////
/////////////////////////////////////////////////////////
由于文本长度不同,这可能真的很烦人。
谢谢!
这是一个vscode解决方案。您将需要一些宏扩展来连续运行多个命令。例如,我在这里使用多命令。见https://marketplace.visualstudio.com/items?itemName=ryuta46.multi-command
设置.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 //////////////////////////////"
}
},
"cursorHomeSelect",
{
"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",
"command": "extension.multiCommand.execute",
"args": { "command": "multiCommand.createTextBlock" },
"when": "editorTextFocus && !editorReadonly"
},
解释宏:
每行有 57 个 / 没有任何文本,所以这就是我使用的 - 选择了一些数量。
宏的第 1 步:选择文本并在文本的开头和结尾用大量 / 填充。正则表达式在文本之前和之后必须有相等数量的 / 才能发挥其魔力 - 我使用了大约 30 个左右。
第 2 步:插入片段。
有趣的部分。使用 regex保留包含文本的行的中间 57 个字符(.*)(.{57})(\\1).*
。这\\1
是对第一个捕获组中捕获的任何内容的反向引用- 因此捕获组 1 和 3 将具有相同的长度。
捕获组 2 将是由相等数量的 / 包围的文本(如果我们在我们所做的正则表达式转换之前添加了相等数量的 /)。正.*
则表达式的最后是处理文本中的奇数/偶数个字符。
有关将不同文本行填充为相等长度的类似问题,请参阅如何使用正则表达式替换和片段将行填充到特定长度。
这必须通过插件/扩展来完成,这在本地是不可能的。