2013-04-15 38 views
13

在Vim中,有一个非常好的功能可以查找/替换每行中的第一个匹配项。这实际上是afaik的默认行为。 如何在崇高的文本中获得相同的行为?崇高文本在每行中首先选择

我需要能够标记/找到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 

回答

16

假如你有如下文字:

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

启用正则表达式

类型在搜索领域:^.*?(?==)

Preess Alt键 + 输入(或点击查找全部)

现在=所有文字之前被选中,你只需要复制它。

+0

棒极了!这工作正如我想要的那样! :) – Hoof

3

尝试这样做,它似乎工作:

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

\ 1将会给所有的比赛前的东西,\ 2给出了比赛本身。你也可以使用^(。*)(STRING_TO_MATCH)(。*),然后\ 3将是后面的所有内容。

编辑 - 如果你正在寻找选择和复制,我想这一点:^[^CHAR]*

这会发现一切从行的开头可达但不包括你的性格。从那里你可以右键点击复制。由于查找面板有焦点,我还没有找到按键序列来完成它,也许你可以弄明白。

+0

我似乎无法使它的工作。请记住,我需要在找到后才能做出选择... – Hoof

+0

看到我的编辑以上 – NTyler

0

假如你有如下文字:

AAAABBBCCCC 
ABC 
BBBAAACCC 
ABCABCABC 

..和你想用X来代替在各行中的每一个第一次出现:

按下Ctrl键+ H^(或点击查找 - >替换)

找到:A(.*)

替换为:X\1

然后点击全部替换。

+0

这将结束: 'X X BBBX X' 你可能想替换为:X \ 1 – NTyler

+0

@NTyler这是真的,我忘了\ 1 ...谢谢! –

+0

这适用 - 当您替换某些文本时。但是,我想标记所有匹配前的文本,以便能够复制/粘贴到另一个文档中... – Hoof

26

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

一旦它的安装,你可以做以下

  • 选择所有你想编辑或部分复制
  • Press Cmd/Ctrl + Shift + L - 这给每一行它自己的光标。
  • 把每个光标到它的行的开头按首页按Ctrl + 一个如果你使用OSX
  • 按Ctrl/Alt键 + + 小号激活SelectUntil
  • 告诉SelectUntil通过键入选择等号直至= + 输入
  • 命中转移 + 取消选择等号
  • 在这一点上的所有属性的名称应选择这样你就可以复制/粘贴,只要你愿意

的经验应该是这个样子:

enter image description here

+2

这真的是一个有用的工具 –

+0

我同意,我希望我有耐心(或偶然)编写插件崇高,每次遇到他们会有用的情况。 –

0

选择所有Ctrl + A然后按Ctrl + Shift + L最后再去ŧ o“选择 - >反转选择”像图片和瞧!: Invert Selection