2013-04-15 25 views
13

Trong Vim có một tính năng thực sự tốt đẹp để tìm/thay thế sự xuất hiện đầu tiên trong mỗi dòng. Đây là afaik thực sự là hành vi mặc định. Làm cách nào để có được hành vi tương tự trong văn bản tuyệt vời?văn bản cao cấp lựa chọn đầu tiên trong mỗi dòng

Tôi cần có khả năng đánh dấu/tìm ký tự FIRST (và chỉ đầu tiên!), Ví dụ: '=', trong mỗi dòng, để tôi dễ dàng có thể đánh dấu/sao chép/cắt những gì trước đây và những gì sau đó nhân vật cụ thể. Tâm trí bạn, có thể có nhiều nhân vật cụ thể này trong mỗi dòng.

bê tông dụ:

Tôi có một danh sách dài các tính java theo hình thức:

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> 

tôi muốn đánh dấu lần đầu tiên "=" trong mỗi dòng, để có thể chọn tất cả các văn bản trước (không quan tâm đến số lượng văn bản trước "=") để cắt hoặc sao chép văn bản. Dán-kết quả của những hành động đó sẽ là:

my.property.link1 
my.property.link22 
my.property.link333 
my.property.link4444 

Trả lời

16

Giả sử bạn có các văn bản sau:

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> 

Nhấn Ctrl + F (hoặc nhấp Find-> Tìm)

Enable biểu thức thông thường

Gõ vào trường tìm kiếm : ^.*?(?==)

Đặt trước Alt +Nhập (hoặc bấm Tìm tất cả)

Bây giờ tất cả các văn bản trước khi = được chọn, bạn chỉ cần sao chép nó.

+0

Thật tuyệt vời! Điều này hoạt động chính xác như tôi muốn nó! :) – Hoof

3

Cố gắng này và nó dường như làm việc:

Regex tìm cách sử dụng^(. *) (STRING_TO_MATCH)

\ 1 sẽ cung cấp cho tất cả các trước khi trận đấu của bạn, \ 2 cho chính trận đấu đó.

Bạn cũng có thể sử dụng^(. *) (STRING_TO_MATCH) (. *) Và sau đó \ 3 sẽ là mọi thứ sau đó.

Edit - nếu bạn đang tìm kiếm để lựa chọn và sao chép, tôi đã cố gắng này: ^[^CHAR]*

này sẽ tìm thấy mọi thứ từ đầu dòng đến và không bao gồm nhân vật của bạn. Từ đó bạn có thể nhấp chuột phải để sao chép. Tôi đã không tìm thấy một chuỗi phím tắt để làm điều đó vì bảng điều khiển tìm kiếm đã tập trung, có thể bạn có thể tìm ra.

+0

Tôi dường như không làm cho nó hoạt động được. Xin lưu ý rằng tôi cần có khả năng thực hiện lựa chọn sau khi tìm ... – Hoof

+0

thấy chỉnh sửa của tôi ở trên – NTyler

0

Giả sử bạn có các văn bản sau:

AAAABBBCCCC 
ABC 
BBBAAACCC 
ABCABCABC 

..và bạn muốn thay thế mỗi lần xuất hiện đầu tiên của A trong mỗi dòng của X:

Nhấn Ctrl + H (hoặc bấm Tìm-> Thay thế)

Tìm nội dung: A(.*)

Thay thế bằng: X\1

Sau đó nhấp vào thay thế tất cả.

+0

Điều đó sẽ kết thúc với: 'X X BBBX x' Có thể bạn muốn Replace With: X \ 1 – NTyler

+0

@NTyler Đó là sự thật, tôi đã quên \ 1 ... thanks ! –

+0

Tác phẩm này - khi bạn thay thế văn bản nhất định. Tuy nhiên, tôi muốn đánh dấu tất cả các văn bản trước trận đấu, để có thể sao chép/dán vào một tài liệu khác ... – Hoof

26

Tôi thực sự đã viết một plugin tuyệt vời gọi là SelectUntil nhằm giải quyết vấn đề này chính xác: https://github.com/xavi-/sublime-selectuntil

Khi đó là cài đặt bạn có thể làm như sau

  • Chọn tất cả các dòng bạn muốn chỉnh sửa một phần hoặc sao chép
  • Bấm Cmd/Ctrl + Shift + L - điều này cho mỗi dòng đó là con trỏ riêng.
  • Mang mỗi con trỏ đến đầu dòng của nó bằng cách nhấn Home hay Ctrl + Một nếu bạn đang sử dụng OSX
  • Nhấn Ctrl/Alt + phím Shift + S để kích hoạt SelectUntil
  • Yêu cầu SelectUntil chọn cho đến khi dấu bằng bằng cách nhập = + Nhập
  • Hit chuyển + để bỏ chọn dấu bằng
  • Tại thời điểm này tên của tất cả các thuộc tính nên được lựa chọn để bạn có thể sao chép/dán như bạn muốn

Kinh nghiệm nên giống như thế này:

enter image description here

+2

Đó thực sự là một công cụ hữu ích –

+0

Tôi đồng ý, tôi ước mình có kiên nhẫn (hoặc serendipity) để viết plugin cho tuyệt vời mỗi lần tôi gặp phải một tình huống mà họ sẽ hữu ích. –

0

Chọn tất cả với Ctrl + A sau đó nhấn Ctrl + Shift + L và cuối cùng đi t o "Lựa chọn-> Đảo ngược lựa chọn" như hình ảnh et Voila !: Invert Selection

Các vấn đề liên quan