在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
答案 0 :(得分:27)
我实际上写了一个名为SelectUntil的崇高插件来解决这个问题:https://github.com/xavi-/sublime-selectuntil
安装完成后,您可以执行以下操作
体验应该是这样的:
答案 1 :(得分:17)
假设您有以下文字:
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 (或点击查找 - >查找)
启用正则表达式
在搜索字段中输入:^.*?(?==)
Preess Alt + 输入(或点击查找全部)
现在选择了=
之前的所有文字,你只需要复制它。
答案 2 :(得分:3)
试过这个似乎有效:
正则表达式找到使用^(。*)(STRING_TO_MATCH)
\ 1将在比赛前给出所有内容,\ 2给出比赛本身。
您也可以使用^(。*)(STRING_TO_MATCH)(。*),然后\ 3将是之后的所有内容。
编辑 - 如果您要选择并复制,我试过这个:^[^CHAR]*
这将从行的开头到不包括你的角色找到所有内容。从那里你可以右键单击进行复制。我找不到按键序列,因为查找面板有焦点,也许你可以搞清楚。
答案 3 :(得分:1)
假设您有以下文字:
AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC
..并且您希望用X替换每行中第一次出现的A:
按 Ctrl + H (或点击查找 - >替换)
找到:A(.*)
替换为:X\1
然后点击全部替换。
答案 4 :(得分:1)
[CTRL + A]; [CTRL + Shift + L]; [首页]
制作一个AutoItInputMacro.exe 映射到[首页] 1按GG按钮 没有重赛。
答案 5 :(得分:0)
答案 6 :(得分:0)
对于此问题,您可以使用ConyEdit(插件)的命令行cc.gbc 1/=/
来获取正则表达式第一列匹配之前的文本。