Python Visual Studio代码:用于编辑源代码编号并除以2的自定义快捷方式

Python Visual Studio代码:用于编辑源代码编号并除以2的自定义快捷方式,python,visual-studio-code,keyboard-shortcuts,Python,Visual Studio Code,Keyboard Shortcuts,我不认为有办法做到这一点,但我想我会问无论如何。。。 假设python脚本中有数百个数字,它们都需要除以2。有没有办法创建一个键盘快捷键,这样我可以突出显示一个数字,按下快捷键,它将自动替换为减半的数字?例如,下面的源代码需要第一行从0:4转换为0:2,第二行从4:16转换为2:8。我会手动操作,但现在有数百个数字需要转换。Visual Studio代码是我正在使用的IDE test1 = word[0:4] test2 = word[4:16] test3 = word[16:32] test

我不认为有办法做到这一点,但我想我会问无论如何。。。 假设python脚本中有数百个数字,它们都需要除以2。有没有办法创建一个键盘快捷键,这样我可以突出显示一个数字,按下快捷键,它将自动替换为减半的数字?例如,下面的源代码需要第一行从0:4转换为0:2,第二行从4:16转换为2:8。我会手动操作,但现在有数百个数字需要转换。Visual Studio代码是我正在使用的IDE

test1 = word[0:4]
test2 = word[4:16]
test3 = word[16:32]
test4 = word[32:1024]
test5 = word[1024:1086]
test6 = word[1086:1900]
test7 = word[1900:2000]
test8 = word[2000:3000]

假设您使用VS代码作为IDE,并且希望编辑源代码而不是任意文本文件,那么在VS代码中,您最好使用find replace with regex确保默认情况下选择use regular expression、alt+R:

搜索单词\[\d+:\d+\]并替换为单词[$1/2:$2/2],结果为

test1 = word[0/2:4/2]
test2 = word[4/2:16/2]
test3 = word[16/2:32/2]
test4 = word[32/2:1024/2]
test5 = word[1024/2:1086/2]
test6 = word[1086/2:1900/2]
test7 = word[1900/2:2000/2]
test8 = word[2000/2:3000/2]

它将在运行时计算为所需的输出。

在替换为扩展v0.8.0期间,可以用表达式的实际值替换数字

首先选择与DeepSpace使用的相同正则表达式匹配的所有文本部分,然后使用相同的正则表达式提取每个选择的捕获组,并将它们用作生成文本并可执行计算的不同正则表达式中的数值

将使用过的正则表达式作为注释文本放在文件中非常方便。您可以复制文件的部分内容并将其粘贴到扩展名的输入框中

# orig regex: word\[(\d+):(\d+)\]
# generate regex: word\[{{=N[1]/2}}:{{=N[2]/2}}\]
在查找对话框中粘贴第一个正则表达式单词\[\d+:\d+\],并勾选正则表达式按钮。*。如果在打开“查找”对话框时仍选择正则表达式,它将转义许多字符,只需粘贴正确的版本即可 在文档中单击,使焦点不再位于“查找”对话框中 选择与Find regex匹配的所有字符串:Ctrl+Shift+L 启动命令:使用Ctrl+Shift+P基于正则表达式正则表达式生成文本 将仍在剪贴板中的第一个正则表达式粘贴到“匹配原始文本正则表达式”输入框中,然后按Enter键 选择并将生成正则表达式粘贴到下一个输入框生成器正则表达式 替换结果将显示在编辑器中,您可以使用Enter键接受,也可以使用Esc键拒绝 测试文件的结果将是:

test1 = word[0:2]
test2 = word[2:8]
test3 = word[8:16]
test4 = word[16:512]
test5 = word[512:543]
test6 = word[543:950]
test7 = word[950:1000]
test8 = word[1000:1500]
如果需要定期执行此操作,可以定义一个键盘快捷键,将使用的正则表达式输入到输入框中,并在需要时进行修改

  {
    "key": "ctrl+f10",
    "when": "editorTextFocus",
    "command": "regexTextGen.generateText",
    "args": {
      "originalTextRegex" : "word\\[(\\d+):(\\d+)\\]",
      "generatorRegex" : "word\\[{{=N[1]/2}}:{{=N[2]/2}}\\]",
      "useInputBox" : true
    }
  }
步骤4。。7现在使用键盘快捷键完成

查找:word\[\d+:\d+\]替换:word[$1/2:$2/2]来自@DeepSpace 查找:\d+/\d+查找所有num/num2[无替换] Ctrl+Shift+L分别选择所有num/num2 运行Emmet:从命令选项板计算数学表达式或将其绑定到键绑定
Emmet可以做这种计算。

使用python、shell脚本等等有很多方法可以做到这一点-为什么VSCode扩展是您选择的工具?我正在编辑源代码,而不是txt文件。我的IDE是visual studio代码,我需要能够用减半的结果替换大部分python源代码偏移量。这有助于回答你的问题吗?我明白了。DeepSpace的答案很好,但请记住,源代码也是一个文本文件,可以进行处理。为了补充更多信息,我不想使用您的方法的原因是脚本中有许多值我不想减半。我现在意识到,我给出的代码示例并不是我想要键盘快捷键的好例子。基本上,我在寻找一种简单的方法,让我挑选并选择我想要在代码中更改的值,只是为了让我的生活更轻松一点。这与我需要的非常接近。非常感谢。是VS代码是我的IDE,我正在尝试编辑源代码。我应该在问题中明确指出这一点。我不确定这是否绝对必要,但您可能应该执行0//2:4//2,以便始终得到整数除法。这正是我想要的。非常感谢你!