В vim, как вставить столбец текста в конец строк неправильной длины?
Я хотел бы вставить столбец текста в конце строк неправильной длины.
Например, я хотел бы вставить следующее:
SRR447882.fastq.gz
SRR447883.fastq.gz
SRR447944.fastq.gz
в конце этих строк:
TIL01_
TIL01_
TIL04-TIP285_
Много раз в прошлом я просто создавал достаточно места на первой строке, чтобы вставить не до конца существующего текста в самой длинной строке. Но тогда мне нужно вернуться и удалить пробелы.
Я пробовал googling "vim column paste строки неправильной длины" и подобные запросы.
Ответы
Ответ 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
, вы получите разделитель пробелов.