VIM как выбрать / скопировать столбец n из строки x в y - PullRequest
2 голосов
/ 18 ноября 2010

Я использую визуальный блок для копирования определенного столбца в некоторых диапазонах (скажем, строки x до y ). Интересно, есть ли более простой способ выполнить ту же задачу?

Кроме того, после того, как я скопирую эти строки, я хотел бы вырезать и вставить их горизонтально. Является ли это возможным? J это немного раздражает, особенно если количество строк велико.

Например, Файл A (кстати, оба файла открыты в разделенном окне) равен

............
sadsa asds  dog 
sadsa asds  cat
sadsa asds  me
sadsa asds  you
...........

И я хочу скопировать 4 строки в 3-м столбце в Файл B , который может уже содержать данные. Скажем, я хочу скопировать эти данные в строку 30 следующим образом (номера строк являются гипотетическими):

   ...............
   29.  other data
   30.  dog cat me you
   31.  other data
   ................

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

Скопируйте текст из файла A в режиме визуальной блокировки, нажав Ctrl-V в верхнем левом углу фрагмента текста, затем переместив курсор в противоположный угол фрагмента текста, затем нажмите y.Перейдите к файлу B, в который вы хотите вставить фрагмент текста, затем выполните следующее:

:put
:'[,']join

:put вставит текст из регистра в режиме строки, включая визуальный блок с выделенным текстом.

:join объединит строки, как команда J.

'[ и '] - метки, установленные в начале и конце изменения.

:'[,']join присоединится от начала вставленного текста до конца вставленного текста.

Для получения дополнительной информации см .:

:h :put
:h :j
1 голос
/ 18 ноября 2010

Я бы вставил его и использовал 4J, 5J, 20J и т. Д. В зависимости от того, сколько строк.Это все еще слишком раздражает, чтобы делать?

РЕДАКТИРОВАТЬ: Ах, я вижу, как это было бы довольно больно.Я немного поиграл с этим и сделал макрос, который немного облегчает боль.По сути, это автоматизирует то, что предлагает MBO ниже.

moGo^[pVGJdd'op

Вставьте это в буфер vim, замените ^[ на фактический escape-символ (При использовании клавиш по умолчанию перейдите в режим вставки, нажмите CTRL-v, затем нажмитеESC.

Теперь выделите этот макрос и нажмите "py

Теперь вы можете играть в макрос с помощью @p

Скопировать вертикальную строку «dog cat me you»из одного файла перейдите в другой и поместите курсор туда, где вы хотите, затем нажмите @p, и он должен работать!

РЕДАКТИРОВАТЬ: Ответ Питера Ринкера намного лучше моегои должен быть принят ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...