在Vim中,有一个非常好的功能来查找/替换每行中的第一个匹配项。这实际上是afaik的默认行为。如何在sublime文本中获得相同的行为?
我需要能够标记/找到FIRST(和第一个!)字符,例如'=',在每一行中,以便我可以轻松地标记/复制/剪切之前的内容以及该特定字符之后的内容。请注意,每行中可能有许多特定字符。
具体例子:
我在表单中有一长串的java属性:
my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>
我想在每一行中标记第一个“=”,以便能够选择所有前面的文本(与“=”之前的文本数量无关)来剪切或复制文本。此类操作的粘贴结果将是:
my.property.link1
my.property.link22
my.property.link333
my.property.link4444
假设您有以下文字:
my.property.link1=<a href="asdfs">Link 1</a>
my.property.link22=<a href="asdfs">Link 22</a>
my.property.link333=<a href="asdfs">Link 333</a>
my.property.link4444=<a href="asdfs">Link 4444</a>
按Ctrl + F(或单击查找 - >查找)
启用正则表达式
在搜索字段中输入:^.*?(?==)
按Alt + Enter(或单击全部查找)
现在选择=
之前的所有文本,你只需要复制它。
我实际上写了一个名为SelectUntil的崇高插件来解决这个问题:https://github.com/xavi-/sublime-selectuntil
安装完成后,您可以执行以下操作
体验应该是这样的:
试过这个似乎工作:
正则表达式使用^(。*)(STRING_TO_MATCH)
\ 1将在你的比赛前给出所有的东西,\ 2给出了比赛本身。
您也可以使用^(。*)(STRING_TO_MATCH)(。*),然后\ 3将是之后的所有内容。
编辑 - 如果你想选择和复制,我试过这个:^[^CHAR]*
这将从行的开头到不包括你的角色找到所有内容。从那里你可以右键单击进行复制。我没有找到按键序列,因为查找面板有焦点,也许你可以搞清楚。
假设您有以下文字:
AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC
..并且您希望用X替换每行中每个第一次出现的A:
按Ctrl + H(或单击查找 - >替换)
找到什么:A(.*)
替换为:X\1
然后单击全部替换。
[CTRL + A]; [CTRL + Shift + L]; [家]
制作一个AutoItInputMacro.exe映射到[Home] 1按下按钮GG No rematch。
对于此问题,您可以使用ConyEdit(插件)的命令行cc.gbc 1/=/
来获取正则表达式匹配的第一列之前的文本。