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

时间:2013-04-15 14:39:32

标签: sublimetext2

在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

7 个答案:

答案 0 :(得分:27)

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

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

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

体验应该是这样的:

enter image description here

答案 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)

选择Ctrl + A全部,然后按Ctrl + Shift + L,最后转到&#34;选择 - &gt;反转选择&#34;像图片和Voila!: Invert Selection

答案 6 :(得分:0)

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