2011-09-03 14 views
13

Tôi đang cố gắng chọn nhiều dòng không nằm trong đoạn liên tục. Ví dụ, tôi muốn chọn dòng 1 và 3 đồng thời mà không chọn dòng 2:Làm cách nào để chọn nhiều dòng không nằm trong đoạn liên tục?

1. this is line 1 
2. this is line 2 
3. this is line 3 

Ban đầu tôi nghĩ đây sẽ là một nhiệm vụ đố, nhưng sau khi trải qua khá nhiều thời gian googling xung quanh không có kết quả, tôi nhận ra điều này có thể không là một nhiệm vụ đơn giản/phổ biến.

Rất cám ơn trước sự giúp đỡ của bạn.


Edit: Cảm ơn câu trả lời. Tôi sẽ cung cấp thêm một chút chi tiết về cách tôi đưa ra câu hỏi.

Tôi đã cố gắng để gắn kết một mã đoạn như sau, sử dụng Tabularize:

1. name1="Woof" 
2. lucky_dog = lucky("dog_one"= name1, 
3.     "dog_two"= name1) 
4. name2="Howl" 

tôi muốn nó phải sắp xếp như thế này:

1. name1  = "Woof" 
2. lucky_dog = lucky("dog_one"= name1, 
3.     "dog_two"= name1) 
4. name2  = "Howl" 

Nhưng tôi không thể làm như vậy vì Tabularize sẽ mất xem xét dòng thứ ba và căn chỉnh mọi thứ vào:

1.name1      = "Woof" 
2.lucky_dog     = lucky("dog_one"= name1, 
3.     "dog_two" = name1) 
4.name2      = "Howl" 

Tôi tin rằng tôi có thể suy nghĩ của một số thủ thuật regex để lưu trữ các kết quả mong muốn, nó chỉ xảy ra với tôi lúc đầu mà có lẽ tôi chỉ đơn giản là có thể chọn dòng 1,2,4 và làm cho những align.

Sau đó, tôi nhận ra đây không phải là một nhiệm vụ dễ dàng.

Do đó là câu hỏi.

Cảm ơn bạn đã trả lời!

+4

Không (như xa như tôi biết).Nhưng, nếu bạn nói chính xác bạn muốn làm gì với lựa chọn này, chúng tôi có thể giúp tìm cách khác để làm điều đó ... có thể. – sidyll

+0

@sidyll Cảm ơn! Tất cả bắt đầu khi tôi cố gắng sắp xếp một vài dòng bằng cách sử dụng plugin Tabularize. Tôi muốn bỏ qua một vài dòng trong một đoạn mã, nhưng căn chỉnh phần còn lại của dòng. Tôi có thể làm điều này với regex, nhưng nó cũng xảy ra với tôi rằng nếu tôi chỉ có thể chọn những dòng đó, Tabularize chỉ có thể căn chỉnh những gì tôi đã chọn trong khi bỏ qua phần còn lại. Do đó câu hỏi. –

Trả lời

7

Không thể chọn các đoạn văn bản khác nhau trong vim.

gì bạn có thể làm thay vào đó là xác định một mô hình độc đáo phổ biến mà được chia sẻ bởi các dòng bạn muốn để hành động và sử dụng các cựu lệnh 'toàn cầu' hoặc 'g' để làm điều đó như sau:

:g/shared unique pattern/ex or normal command here 

Ví dụ để sao chép các dòng để đăng ký một, nói 'a' đăng ký:

:g/shared unique pattern/normal "Ayy 

để dán chúng nhấn "ap

vốn một mà đến trước yy nói vim mà bạn muốn sao chép nd nối thêm các dòng vào thanh ghi.

Giống như sydill cho biết nếu bạn có thể cho chúng tôi biết chính xác bạn muốn làm gì với các dòng thì chúng tôi có thể trợ giúp bạn tốt hơn.

+0

lệnh g là một ý tưởng hay nhưng yA sẽ không hoạt động ít nhất trong vim 7.3 ... – lucapette

+0

Tôi hiểu sai, chỉnh sửa cho đúng câu chú thích – holygeek

+0

OK. Nhân tiện, đây là giải pháp duy nhất tôi có thể nghĩ đến. Tôi tự hỏi nếu có các giải pháp khác ... – lucapette

3

This script dường như cung cấp chức năng bạn đang tìm kiếm.

+0

Cảm ơn, tôi sẽ xem xét nó! –