崇高文本在每行中首先选择

问题描述 投票:14回答:7

在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
sublimetext2
7个回答
18
投票

假设您有以下文字:

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(或单击全部查找)

现在选择=之前的所有文本,你只需要复制它。


27
投票

我实际上写了一个名为SelectUntil的崇高插件来解决这个问题:https://github.com/xavi-/sublime-selectuntil

安装完成后,您可以执行以下操作

  • 选择您要编辑或部分复制的所有行
  • 按Cmd / Ctrl + Shift + L - 这给每一行它自己的光标。
  • 如果您使用的是OSX,请按Home或Ctrl + A将每个光标移到行的开头
  • 按Ctrl / Alt + Shift + S激活SelectUntil
  • 通过键入= + Enter告诉SelectUntil选择直到等号
  • 点击shift +←取消选择等号
  • 此时应选择所有属性的名称,以便您可以根据需要进行复制/粘贴

体验应该是这样的:


3
投票

试过这个似乎工作:

正则表达式使用^(。*)(STRING_TO_MATCH)

\ 1将在你的比赛前给出所有的东西,\ 2给出了比赛本身。

您也可以使用^(。*)(STRING_TO_MATCH)(。*),然后\ 3将是之后的所有内容。

编辑 - 如果你想选择和复制,我试过这个:^[^CHAR]*

这将从行的开头到不包括你的角色找到所有内容。从那里你可以右键单击进行复制。我没有找到按键序列,因为查找面板有焦点,也许你可以搞清楚。


1
投票

假设您有以下文字:

AAAABBBCCCC
ABC
BBBAAACCC
ABCABCABC

..并且您希望用X替换每行中每个第一次出现的A:

按Ctrl + H(或单击查找 - >替换)

找到什么:A(.*)

替换为:X\1

然后单击全部替换。


1
投票

[CTRL + A]; [CTRL + Shift + L]; [家]

制作一个AutoItInputMacro.exe映射到[Home] 1按下按钮GG No rematch。


0
投票

Ctrl + A选择所有,然后按Ctrl + Shift + L,最后转到“选择 - >反转选择”,如图片和Voila!:Invert Selection


0
投票

对于此问题,您可以使用ConyEdit(插件)的命令行cc.gbc 1/=/来获取正则表达式匹配的第一列之前的文本。

© www.soinside.com 2019 - 2024. All rights reserved.