Подтвердить что ты не робот

В vim, как вставить столбец текста в конец строк неправильной длины?

Я хотел бы вставить столбец текста в конце строк неправильной длины.

Например, я хотел бы вставить следующее:

SRR447882.fastq.gz
SRR447883.fastq.gz
SRR447944.fastq.gz

в конце этих строк:

TIL01_
TIL01_
TIL04-TIP285_

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

Я пробовал googling "vim column paste строки неправильной длины" и подобные запросы.

4b9b3361

Ответ 1

Вы можете сделать это следующим образом:

  • Начать первую строку второго блока
  • qq, начните запись макроса q
  • 4k, перейдите на четыре строки
  • d$, удалить до конца строки
  • 4j, вернитесь к предыдущей строке
  • $p, вставьте строку в конец строки
  • q, прекратите запись макроса
  • jVG, опустите одну строку и выберите оставшиеся строки
  • :norm! @q, примените макрос к выбору

Однако он оставляет место, где был предыдущий текст. @Kent все еще проще и сексуальнее.

Ответ 2

Вы можете попробовать выполнить следующие четыре действия:

  • поблочно выберите первые 3 строки (вы хотите вставить позже) и нажмите y
  • выберите линейку (V) 3 строки, заканчивающиеся на _, нажмите :right
  • затем переместите курсор в конец первой строки ($), вставьте яркий текст
  • gv повторно выберите строки, нажмите :left

Он выглядит следующим образом:

enter image description here

Ответ 3

My Плагин UnconditionalPaste содержит (среди прочих) gBp/gBp сопоставления, которые вставляют содержимое регистра как минимальную подгонку (не прямоугольную ) с неправильным правым краем.

демо

enter image description here

Ответ 4

Step 1 - перейдите к началу строк SPP... затем запустите Visual mode linewise с помощью V (capital V), нажмите j два раза, чтобы выбрать нужные линии, затем нажмите y.

Step 2 - перейдите в начало строк TIL0..., затем запустите Visual mode linewise с помощью V (capital V), нажмите j два раза, чтобы выбрать нужные строки, затем введите...

:s;$;\=' ' . split(@")[line('.')-line("'<")];g`

и нажмите Enter.

Ответ 5

Здесь другой способ сделать это с другим ощущением:

set ve=all, чтобы разрешить вставку/вставку в произвольные столбцы, прошедшие через eol. Скопируйте исходный текст, а затем в первую целевую строку вставьте его с 100|P (100 как любой номер столбца дольше, чем ваши целевые строки), затем :'[,']s, *\%100c,,

Если вы выполняете p вместо p, вы получите разделитель пробелов.