Как выбрать несколько строк, которые не находятся в непрерывном фрагменте? - PullRequest
19 голосов
/ 04 сентября 2011

Я пытаюсь выбрать несколько строк, которые не находятся в непрерывном фрагменте. Например, я хочу выбрать строки 1 и 3 одновременно без выбора строки 2:

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

Изначально я думал, что это будет пустяковое задание, но, потратив некоторое время на поиски, но безрезультатно, я понял, что это не может быть простой / обычной задачей.

Заранее большое спасибо за помощь.


Edit: Спасибо за ответы. Я расскажу немного подробнее о том, как я пришел к этому вопросу.

Я пытался выровнять код чанка, как показано ниже, используя Tabularize:

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

Я хотел, чтобы это выровнялось так:

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

Но я не могу этого сделать, потому что Tabularize будет учитывать третью строку и выравнивать все по:

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

Мне кажется, я мог бы придумать какой-нибудь трюк с регулярными выражениями для архивации желаемых результатов, сначала мне пришло в голову, что, возможно, я мог бы просто выбрать строку 1,2,4 и привести их в соответствие.

Тогда я понял, что это нелегкая задача.

Отсюда и вопрос.

Спасибо за ответы!

Ответы [ 3 ]

12 голосов
/ 15 апреля 2013

Теперь в Vim есть замечательный плагин, который позволяет использовать множественный выбор: Vim-множественные курсоры :

enter image description here

9 голосов
/ 04 сентября 2011

Невозможно выбрать разные фрагменты текста в vim.

Вместо этого вы можете определить общий, уникальный шаблон, который используется строками, по которым вы хотите действовать, и использовать «глобальную» ex-команду или «g», чтобы сделать это следующим образом:

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

Например, чтобы скопировать строки в регистр, произнесите регистр 'a':

:g/shared unique pattern/normal "Ayy

Чтобы вставить их, нажмите "ap

Заглавная буква A, предшествующая yy, сообщает vim, что вы хотите скопировать и добавить строки в регистр.

Как сказал Сидилл, если вы можете сказать нам, что именно вы хотите делать со строками, тогда мы можем лучше вам помочь.

3 голосов
/ 04 сентября 2011

Этот скрипт , по-видимому, обеспечивает нужную вам функциональность.

...