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

Visual Studio Code: Custom Shortcut to edit source code numbers and divide by two

我不认为有办法做到这一点,但我想我还是会问... 可以说我在 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正则表达式(确保你select“使用正则表达式”,alt+R默认):

搜索 word\[(\d+):(\d+)\] 并替换为 word[/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]

这将在 运行 时评估您需要的输出。

您可以在替换过程中用表达式的实际值替换数字 Regex Text Generator v0.8.0

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

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

# orig regex: word\[(\d+):(\d+)\]
# generate regex: word\[{{=N[1]/2}}:{{=N[2]/2}}\]
  1. 在“查找”对话框中粘贴第一个正则表达式 word\[(\d+):(\d+)\],然后勾选正则表达式按钮 (.*)。如果在打开“查找”对话框时正则表达式仍然是 selected,它将转义很多字符,只需粘贴正确的版本
  2. 在文档中单击,使焦点不再位于“查找”对话框中
  3. Select 匹配查找正则表达式的所有字符串:Ctrl+Shift+L
  4. 启动命令:Generate text based on Regular Expression (regex) with Ctrl+Shift+P
  5. 粘贴第一个正则表达式,仍在剪贴板中,在 Match Original Text Regular Expression 输入框中,然后按 Enter
  6. Select 和 copy-paste 生成正则表达式到下一个输入框 Generator Regular Expression
  7. 替换结果显示在编辑器中,您可以使用 Enter 接受或使用 Esc
  8. 拒绝

测试文件的结果将是:

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 现在已使用键盘快捷键完成。

  1. 查找:word\[(\d+):(\d+)\]替换:word[/2:/2]来自@DeepSpace
  2. 查找:\d+/\d+查找全部num/num2[不替换]
  3. Ctrl+Shift+L到select你所有的num/num2的分别
  4. 运行 Emmet: Evaluate Math Expression 来自命令面板(或将其绑定到键绑定)

Emmet 可以做这种数学运算。