在 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 = 11count=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 替换为您要添加到每个匹配项的任何内容。