在 visual studio 代码的 k 行中插入 n,...,n+k 个数字
Inserting n,...,n+k number in k lines in visual studio code
我想在 vscode
编辑器的 10 行中插入 [11,12,...,20],不知何故我想在 golang
中模拟 iota
的功能 vscode 编辑器,例如假设我们在 vscode 编辑器中有以下行:
line1 xxxxx
line2 xx
line3 xxxxxxxx
.
.
.
line10 xxx
我想用 vscode 个自定义代码段将 [11,12,...,20] 添加到每一行的末尾!
期望的输出将是:
line1 xxxxx11
line2 xx12
line3 xxxxxxxx13
.
.
.
line10 xxx20
是否可以使用 vscode 提供的片段,或者我们应该为此目的开发一个扩展?
请注意,init value = 11
和 count=10
是用户定义的,一开始不知道。
这是一个示例,说明如何将数字附加到前 10 行的末尾(如果行数较少,则附加到现有行)。
摘自package.json
:
"activationEvents": [
"onCommand:Whosebug-71294699.appendNumbers"
],
"contributes": {
"commands": [
{
"command": "Whosebug-71294699.appendNumbers",
"title": "Append numbers"
}
]
},
extension.ts:
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.commands.registerCommand('Whosebug-71294699.appendNumbers',
async function () {
const editor = vscode.window.activeTextEditor;
if (!editor) {
return;
}
await editor.edit((editBuilder) => {
for (let i=0; i<10; i++) {
if (i >= editor.document.lineCount) {
break;
}
const line = editor.document.lineAt(i);
editBuilder.insert(
new vscode.Position(i, line.text.length),
"" + (10+i)
);
}
});
})
);
}
export function deactivate() {}
您可以使用扩展名 Regex Text Generator。
- 将光标放在第一行
- 用
Ctrl+Alt+Down
在下一行添加一个新光标,重复10次
- 用
End
转到行尾
- 执行命令:根据正则表达式生成文本
- 对于
Match Original Regex
选择:.*
- 对于
Generator Regex
选择:{{=i+11}}
- 查看添加文本的预览,如果确定按
Enter
else Esc
使用我写的扩展程序,您可以在 lines/selections/document 等上轻松地进行数学运算。扩展程序是 Find and Transform。
使用这个键绑定(或者它可以是一个设置):
{
"key": "alt+r", // whatever keybinding you want
"command": "findInCurrentFile",
"args": {
"find": "(?<=\w)$",
"replace": "$${ return ${matchNumber} + 10 }$$",
"isRegex": true,
"restrictFind": "selections"
}
查找:(?<=\w)$
匹配有文本的行尾
或
查找:$
匹配所有行的结尾 - 是否为空白
replace: $${ return ${matchNumber} + 10 }$$
将添加到 matchNumber - 从 1 开始 - 它将在行尾
restrictFind: selections
仅在任何 select 离子中执行此操作
演示:
所以 select 你想要多少行就写多少。并将键绑定中的 10
替换为您要添加到每个匹配项的任何内容。
我想在 vscode
编辑器的 10 行中插入 [11,12,...,20],不知何故我想在 golang
中模拟 iota
的功能 vscode 编辑器,例如假设我们在 vscode 编辑器中有以下行:
line1 xxxxx
line2 xx
line3 xxxxxxxx
.
.
.
line10 xxx
我想用 vscode 个自定义代码段将 [11,12,...,20] 添加到每一行的末尾!
期望的输出将是:
line1 xxxxx11
line2 xx12
line3 xxxxxxxx13
.
.
.
line10 xxx20
是否可以使用 vscode 提供的片段,或者我们应该为此目的开发一个扩展?
请注意,init value = 11
和 count=10
是用户定义的,一开始不知道。
这是一个示例,说明如何将数字附加到前 10 行的末尾(如果行数较少,则附加到现有行)。
摘自package.json
:
"activationEvents": [
"onCommand:Whosebug-71294699.appendNumbers"
],
"contributes": {
"commands": [
{
"command": "Whosebug-71294699.appendNumbers",
"title": "Append numbers"
}
]
},
extension.ts:
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(
vscode.commands.registerCommand('Whosebug-71294699.appendNumbers',
async function () {
const editor = vscode.window.activeTextEditor;
if (!editor) {
return;
}
await editor.edit((editBuilder) => {
for (let i=0; i<10; i++) {
if (i >= editor.document.lineCount) {
break;
}
const line = editor.document.lineAt(i);
editBuilder.insert(
new vscode.Position(i, line.text.length),
"" + (10+i)
);
}
});
})
);
}
export function deactivate() {}
您可以使用扩展名 Regex Text Generator。
- 将光标放在第一行
- 用
Ctrl+Alt+Down
在下一行添加一个新光标,重复10次 - 用
End
转到行尾 - 执行命令:根据正则表达式生成文本
- 对于
Match Original Regex
选择:.*
- 对于
Generator Regex
选择:{{=i+11}}
- 查看添加文本的预览,如果确定按
Enter
elseEsc
使用我写的扩展程序,您可以在 lines/selections/document 等上轻松地进行数学运算。扩展程序是 Find and Transform。
使用这个键绑定(或者它可以是一个设置):
{
"key": "alt+r", // whatever keybinding you want
"command": "findInCurrentFile",
"args": {
"find": "(?<=\w)$",
"replace": "$${ return ${matchNumber} + 10 }$$",
"isRegex": true,
"restrictFind": "selections"
}
查找:(?<=\w)$
匹配有文本的行尾
或
查找:$
匹配所有行的结尾 - 是否为空白
replace: $${ return ${matchNumber} + 10 }$$
将添加到 matchNumber - 从 1 开始 - 它将在行尾
restrictFind: selections
仅在任何 select 离子中执行此操作
演示:
所以 select 你想要多少行就写多少。并将键绑定中的 10
替换为您要添加到每个匹配项的任何内容。