我需要一个文本编辑器,对所有选定的文本进行数学运算

时间:2014-05-08 18:23:49

标签: text-editor sublimetext

假设我有一个类似于以下内容的文档

(001 [bla bla bla
bla bla bla])
(002 [bla
bla bla])
(003 [bla bla bla
bla bla bla])
(004 [bla
bla bla])
...
(199 [bla bla bla bla
bla])

请注意带有三位整数的左括号。是否有文本编辑器能够向所有选定的整数添加特定的整数。在崇高的文本中,我知道如何在选择第一个左括号a后按ctrl + d选择所有这些整数,然后按向右箭头一次然后按shift和向右箭头三次以选择所有这些整数。选择之后,是否有一个sublime文本中的函数可以对这些数字进行简单的添加。说+10,这样整数将是011,012,013,...,219。如果sublime文本没有这个功能,是否有文本编辑器有?

2 个答案:

答案 0 :(得分:1)

条件是它完全不是严格意义上的文本编辑器,而且肯定不是SublimeText,我的实用程序TextDistil将很容易为您完成此任务:

  1. 添加一个新的"评估算术表达式"匹配的食谱' \ d +'算术表达式' 1 + $ 0' (更改' 1'到你要添加的任何数字。)
  2. 使用"填充文字左边"填补' \ d +'宽度为3
  3. 使用'替换文字'替换'('用'(00'
  4. 使用'替换文字'替换'('用'(0'
  5. 如果您的输入比这更棘手,您可能需要使用正则表达式匹配来获得更好的效果。

    按照下面的评论,您需要做些什么来匹配字符串,例如' C11-001' ...

    您应该使用' C11 - (?< out> \ d +)' 的匹配表达式,并使用' 48+的算术替换$ 1' (请注意,< out 之间没有空格,但我无法获得标记没有它的工作。)

    这看起来有点神秘,所以我会尝试解释各个部分....

    • C11 - 匹配您关注的字符串的第一部分,意味着'裸露'
    • 将无法匹配且未经更改的数字位数
    • ' C11- ?< out> \ d + '中的括号意味着匹配其中的术语的东西将被计为组 1 (组0是包括C11-的整个事物)。这就是为什么算术表达式现在说 $ 1 而不是$ 0。
    • 奇怪的' ?<出> '术语不是你想象的正则表达式的一部分。相反,它是一种特殊的语法,意味着括号内的匹配术语是名为的组。 (这是标准的.Net正则表达式语法。)TextDistil假设您调用的组' out '是应该用算术术语的结果代替的那个。如果' out'组缺少,它将使用$ 0这是整个匹配,这就是为什么我在前面的例子中没有使用它。

    总而言之,我们将匹配所有看起来像C11-001等的字符串,然后将连字符后的数字输入到算术表达式中,然后将该表达式的结果替换回'出'也恰好是连字符后面的数字的组。

    与前面的示例一样,如果希望结果文本在连字符后正好使用3位数,则可能需要添加一些额外的步骤。有各种方法可以做到这一点,但我建议通过添加几个像这样的标准文本替换来强制它... .... / / p>

    • &#39; C11 - (\ d \ d \ D)&#39; 替换为 C11-0 $ 1 ,以便将2位数字更换为3 < / LI>
    • &#39; C11 - (\ d \ D)&#39; 替换为 C11-00 $ 1 ,以便将1位数数字化为3

答案 1 :(得分:0)

SynWrite 编辑器支持Python脚本。所以只需进行多项选择,并编写一个可以更改所选数字的Python插件。或者你可以编写插件来改变选择的数字。