Копировать область без разрывов строк и табуляций в Vim

#vim

#vim

Вопрос:

Возможно ли скопировать выбранную область, но без разрывов строк и табуляций в Vim?

Если я скопирую этот код

 SELECT
    id,
    title
FROM items
WHERE id = 3
  

а затем вставьте ее, результат должен быть SELECT id, title FROM items WHERE id = 3

Ответ №1:

v обычно выделяют ip график, а затем J в строках

 vipJ
  

* Предположим, что это абзац и курсор находится на одной из строк

Для копирования в регистр по умолчанию добавьте «Vduu» в конец с общим значением

 vipJVduu
  

При этом выбирается строка, она удаляется и отменяется, так что мы вернулись к тому, с чего начали. Теперь вы можете вставить однострочную строку с буквой «p» туда, куда хотите!

Но почему бы просто не добавить это в качестве сопоставления в ваш файл .vimrc и не добавить его в системный буфер обмена со следующим

 nmap _j vipJV" yu
  

Следующий gif показывает используемое отображение

 _j 
  

затем открыть новую строку и вставить с помощью cmd-v на Mac

введите описание изображения здесь

Комментарии:

1. Это просто соединяет строки. Вопрос требует копирования соединенных строк в буфер обмена.

2. Спасибо. Вместо Vduu вы можете использовать более короткий yyu, и вы получите то же самое, что и в моем ответе, за исключением того, что я не предполагал, что это абзац 😉

3. @buff вы наверняка можете использовать множество способов в vim для победы!

4. Что вы использовали для создания этого gif? Это идеально

Ответ №2:

Перейдите к первой строке, затем

 y5yP5J
  

Это означает: скопируйте 5 строк ( y5y ), затем вставьте их выше ( P ), а затем присоедините следующие 5 строк ( 5J ). Конечно, вы можете вставить их куда угодно, просто наведите туда курсор. Я вставил их прямо над просто для примера.

В качестве альтернативы вы можете сделать

 VjjjjJyyu
  

который выбирает запрос ( Vjjjj ), соединяет строки ( J ), копирует объединенную строку ( yy ) и затем отменяет объединение ( u ). Это может быть более общим подходом, поскольку вам не нужно повторять количество строк (5) дважды, как в предыдущем способе.

Ответ №3:

Вы можете использовать мой плагин UnconductonalPaste; он предоставляет gcp сопоставление для вставки по символам, независимо от типа регистра. (И несколько аналогичных сопоставлений для других типов и вставка с общими или запрашиваемыми символами между строками и т.д.)

Комментарии:

1. туше, сэр, действительно, очень приятно