2013-04-15 40 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