5

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

И поэтому, когда я вставляю через p, он автоматически помещает его на следующую строку. И если я нажимаю Shift + p, он помещается перед строкой, которую я пытаюсь вставить.

Так есть ли способ вставить всю линию, которую я вырезал в конце строки?

4 ответа4

3

Чтобы обрезать строку без новой строки, вы можете нажать d$ или D из положения курсора. Чтобы вставить его в конец другой строки, вы можете перейти к ее концу и просто нажать p . В случае, если вы не можете вставить строку, как вы ожидали, вы можете перейти к концу строки, где вы хотели вставить. Затем нажмите i а затем нажмите <C-R> (Control-R) и " (двойные кавычки). Ваш недавно вырезанный или скопированный текст будет вставлен.

2

После того, как вы вставили свою строку после текущей через p, просто нажмите другую j в предыдущей строке, чтобы соединить две строки, тем самым исключив нежелательный перевод строки ...

1

Лучшее решение, которое я могу придумать сейчас:

A<C-r>+

Это означает: включить режим вставки в конце строки и вставить содержимое регистра + .

Также будет вставлена новая строка. dd просто работает на полных строках (сокращение от 1dd).

1

Действительно, часто сценарий использования выглядит следующим образом: вы хотите удалить полную строку (включая новую строку, поэтому d$ / D не работает, так как оставляют пустую строку), но вставьте это в конце или внутри некоторого существующая линия, без создания новой.

Мой плагин UnconditionalPaste предоставляет несколько сопоставлений, которые автоматически преобразуют содержимое регистра в нужный вариант использования. Ваш пример будет dd , перейти к целевой строке, $gcp . gcp - это отображение для символьной вставки .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .