2011-09-03 12 views
13

Próbuję wybrać wiele linii, które nie są ciągłe. Np Chcę wybrać linię 1 i 3 jednocześnie bez wybierając wiersz 2:Jak mogę wybrać wiele linii, które nie są ciągłe porcji?

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

Początkowo myślałem, że to byłoby zadanie ciekawostki, ale po spędzeniu trochę czasu googling wokół bezskutecznie, zdałem sobie sprawę, to może nie być prostym/wspólnym zadaniem.

Z góry dziękujemy za pomoc.


Edit: Dzięki za odpowiedzi. Przekażę trochę więcej szczegółów na temat tego, jak wymyśliłem to pytanie.

starałem się dostosować kod klocek jak poniżej, używając Tabularize:

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

chciałem wyrównać tak:

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

Ale nie mogę zrobić, ponieważ Tabularize odbędzie trzecia linia pod uwagę i dopasuj wszystko do:

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

Wierzę, że mógłbym myślę o jakiejś sztuczce z regexu, by zarchiwizować pożądane wyniki, początkowo przyszło mi do głowy, że może po prostu wybiorę linię 1,2,4 i wyrównaję.

Potem zdałem sobie sprawę, że nie jest to łatwe zadanie.

Stąd pytanie.

Dzięki za odpowiedzi!

+4

Nie (o ile wiem).Ale jeśli powiesz, co dokładnie chcesz zrobić z tym wyborem, możemy pomóc w znalezieniu innego sposobu na zrobienie tego ... może. – sidyll

+0

@sidyll Dzięki! Wszystko zaczęło się, gdy próbowałem wyrównać kilka linii za pomocą wtyczki Tabularize. Chciałem pominąć kilka linii w kawałku kodu, ale wyrównać pozostałe linie. Mógłbym to zrobić za pomocą regex, ale przyszło mi też do głowy, że gdybym mógł tylko jednocześnie wybrać te linie, Tabularize może po prostu wyrównać te, które wybrałem, pomijając resztę. Stąd pytanie. –

Odpowiedz

7

Nie można wybrać różnych porcji tekstu w vim.

Co można zrobić zamiast tego jest zidentyfikowanie wspólnej, unikalny wzór, który jest współdzielony przez linie chcesz działać i korzystać z „globalnej” ex-polecenia lub „G” to zrobić tak:

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

na przykład, aby skopiować wiersze do rejestru, powiedzieć „a” zarejestrować:

:g/shared unique pattern/normal "Ayy 

wkleić je hit „ap

kapitał a, która jest przed yy mówi vim, który chcesz skopiuj a i dodaj linie do rejestru.

Jak powiedział sydill, jeśli możesz nam powiedzieć, co dokładnie chcesz zrobić z liniami, wtedy możemy ci lepiej pomóc.

+0

Polecenie g jest niezłym pomysłem, ale nie działa co najmniej w vim 7.3 ... – lucapette

+0

Zrobiłem to źle, edytowałem poprawną inkantację – holygeek

+0

OK. Przy okazji, to jedyne rozwiązanie, jakie mogłem wymyślić. Zastanawiam się, czy istnieją inne rozwiązania ... – lucapette

3

This script wydaje się zapewniać funkcjonalność, której szukasz.

+0

Dzięki, zagłębię się w to! –

Powiązane problemy