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

Как вставить строку, в которой находится курсор?

Команда p вставляется под курсором и p вставляется над курсором. Какую команду вставить в строку, где находится курсор?

4b9b3361

Ответ 1

Все это зависит от типа данных в регистре, который вы вставляете. Если данные являются ориентированными на линию данными (например, с помощью y y), он будет вставлен как целая строка выше или ниже курсора. Если данные ориентированы на символы (дернуты с помощью, например, y 2 w), то он будет вставлен в позицию или перед позицией курсора в текущей строке.

См. :help linewise-register для получения дополнительной информации о взаимодействии между типом регистра и командой put.

Ответ 2

В меню Изменить в gvim указано следующее:

  • Вставить = " + g P

  • Put Before = [ P

  • Положите After = ] P

Если вы запускаете vim в Windows, вы можете сделать следующее, чтобы получить Ctrl + C и Ctrl + V для работы, как ожидалось:

source $VIMRUNTIME/mswin.vim
behave mswin

Ответ 3

Если вы хотите сохранить текущую строку как есть, вы либо вставляете выше или ниже строки.

Если вы хотите перезаписать текущую строку, вам придется сначала ее удалить, а это означает, что следующая строка займет свое место, а затем вставьте над новой текущей строкой.

Существует несколько способов сделать это:

  • "_ddP

    • "_dd удаляет всю текущую строку в "регистре черных дыр", следующая строка теперь является текущей строкой.

    • P помещает содержимое неназванного регистра выше текущей строки.

  • Vp

    • V помещает вас в режим VISUAL LINE и визуально отображает всю текущую строку

    • P заменяет выделение содержимым неназванного регистра

  • S<C-r>"

    • S удаляет содержимое текущей строки и помещает вас в режим INSERT

    • <C-r>" помещает содержимое неназванного регистра

Два последних варианта имеют интересный побочный эффект: содержимое предыдущей строки помещается в неназванный регистр, что делает невозможным выполнение нескольких паст с одним и тем же контентом.

К счастью, вы можете обойти эту ситуацию:

  • "Регистр черных дыр", упомянутый в первом решении, работает, ну... как черная дыра. Все, что вы вкладываете в него, исчезает навсегда, поэтому вы можете продолжать использовать P и P с некоторой степенью уверенности в том, что неназванный регистр по-прежнему совпадает с пастой для вставки.

  • Vim предоставляет вам доступ к 26 алфавитным регистрам, которые вы можете использовать для сохранения макросов или... вставляете материал повторно.

    Взяв второе решение в качестве отправной точки, вы начинаете с того, что yanking целая строка в регистре "a с "ayy, тогда вы делаете V"ap в другой строке.

Но все вышесказанное предполагает, что текст, который вы хотите вставить, является реальной линией. Vim делает разницу между "line-wise" и "character-wise": он не позволит вам вставлять строку в символьный контекст или наоборот.

Yanking целая строка с yy сохраняет свою линейность или характерность, и вы не сможете P между двумя символами в одной строке. Для этого вам нужно убедиться, что то, что вы держите, не будет интерпретироваться Вимом по очереди. Например, предположим, что вы находитесь на первом символе первой строки и хотите выдернуть ipsum dolor и поместить его в обычное место между lorem и sit:

ipsum dolor
lorem  sit amet

Вы должны набрать "ayee, чтобы поместить ваш yanked текст в регистр "a, поместите курсор туда, где это необходимо, и введите "aP.

Ответ 4

Вы можете использовать D для удаления из текущей позиции курсора в конец строки, а p - в новую позицию курсора.

Чтобы разрезать и вставить целую строку, используйте ^ D и p.

Ответ 5

Мне приходилось так часто "записывать" содержимое регистра в определенный (по буквам/линии/по блоку) режим, я написал UnconditionalPaste plugin для Это. Он предоставляет gcp, glp и т.д. Альтернативы встроенным командам вставки, которые заставляют определенный режим (и к настоящему времени еще несколько вариантов этой темы, например вставки с добавлением запятых или запрошенных символов).

С его помощью вы можете просто использовать gcp/gcp для вставки после/перед позицией курсора, независимо от того, как вы дернули текст.

Ответ 6

Чтобы вставить режим вставки, просто нажмите Control + ".

Чтобы вставить командный режим, вы нажимаете P, однако вы должны убедиться, что ваша строка не имеет нового символа строки (например, yanked by 0v$hy), иначе она появится над курсором.

То же самое для визуального режима, см. Как вставить строку в вертикальный блок выбора? в Vim SE

Ответ 7

Я не уверен, что он есть. Я попытался найти документацию и просмотрел следующие три документа:

К сожалению, все три имеют только две команды, которые вы перечисляете. В частности, третье звено гласит, что The commands to paste are p and P...

Ответ 8

(Я знаю, что эта ветка устарела, просто оставив это и надеюсь, что это может помочь кому-то)

Вдохновленный комментарием @wbg выше относительно удаления строки, я добавил их к моим сопоставлениям:

nnoremap <leader>p :let @"=substitute(@", '\n\+$', '', '')<CR>p

inoremap <leader>p <esc>:let @"=substitute(@", '\n\+$', '', '')<CR>pa

Это полезно, когда у меня есть файл с некоторыми SQL (строка за строкой), и я должен задернуть код.