Команда p вставляется под курсором и p вставляется над курсором. Какую команду вставить в строку, где находится курсор?
Как вставить строку, в которой находится курсор?
Ответ 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 (строка за строкой), и я должен задернуть код.