Дублируйте целую строку в Vim

Как дублировать целую строку в Vim аналогично Ctrl + D в IntelliJ IDEA/Resharper или Ctrl + Alt + / в Eclipse?

Ответ 1

y y или Y для копирования строки (мнемоника: y ank)
или же
d d к г далить линии (Vim копирует то, что вы удалены в буфер типа "регистр", как операции вырезания)

затем

p на стр Асту скопированный или удаленный текст после текущей строки
или же
P на стр Асту скопированной или удален текст перед текущей строкой

Ответ 2

Нормальный режим: см. другие ответы.

Ex способ:

  • :t. будет дублировать строку,
  • :t 7 скопирует его после строки 7,
  • :,+t0 скопирует текущую и следующую строку в начале файла (,+ является синонимом диапазона .,.+1),
  • :1,t$ скопирует строки от начала до положения курсора до конца (1, является синонимом диапазона 1,.).

Если вам нужно переместить вместо копирования, используйте :m вместо :t.

Это может быть очень мощным, если вы объедините его с :g или :v:

  • :v/foo/m$ будет перемещать все строки, не соответствующие шаблону "foo", в конец файла.
  • :+,$g/^\s*class\s\+\i\+/t. скопирует все последующие строки формы class xxx сразу после курсора.

Ссылка: :help range, :help :t, :help :g, :help :m и :help :v

Ответ 3

YP или YP или yyp.

Ответ 4

copy and paste in vim

Не проще, чем это! Из нормального режима:

yy

затем перейдите к строке, которую вы хотите вставить, и

p

Ответ 5

y y

будет удерживать текущую строку, не удаляя ее

d d

удалит текущую строку

p

будет put строка, захваченная одним из предыдущих методов

Ответ 6

Сделайте это:

Сначала y y, чтобы скопировать текущую строку, а затем p для вставки.

Ответ 7

Если вы хотите другой способ: -)

"ayy это сохранит строку в буфере a

"ap это поместит содержимое буфера a в курсор.

В этом есть много вариантов.

"a5yy это сохранит 5 строк в буфере a

см. http://www.vim.org/htmldoc/help.html для большего удовольствия

Ответ 8

y y p - запомните это с помощью "yippee!"

Несколько строк с числом между:

y 7 y p

Ответ 9

y y p - вставить после

y y p - вставить перед

Ответ 10

Вы также можете попробовать < C-x > < C-l > который будет повторять последнюю строку из режима вставки и выводит окно завершения со всеми строками. Он работает почти как < C-p >

Ответ 11

Еще один вариант:

nmap <C-d> mzyyp`z

дает вам преимущество в сохранении положения курсора.

Ответ 12

Мне нравится: Shift + v (чтобы сразу выделить всю строку и позволить вам выбрать другие строки, если хотите), y, p

Ответ 13

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

y y или y, чтобы скопировать строку
или
d d, чтобы удалить строку

затем

p, чтобы вставить скопированный или удаленный текст после курсора
или
p, чтобы вставить скопированный или удаленный текст перед курсором


Для более привязки клавиш вы можете посетить этот сайт: vi Полный список привязки клавиш

Ответ 14

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

Ответ 15

По умолчанию используется y y p, но я использую это повторное связывание в течение года или около того и люблю его:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv

Ответ 16

Я знаю, что опаздываю на вечеринку, но что угодно; У меня есть это в моем .vimrc:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

Команда :copy просто копирует выбранную строку или диапазон (всегда целые строки) ниже номера строки, заданного в качестве аргумента.

В обычном режиме это делается copy. скопируйте эту строку чуть ниже этой строки.

А в визуальном режиме он превращается в '<,'> copy '> копировать от начала выделения до конца выделения в строку ниже конца выделения.

Ответ 17

Для тех, кто начинает изучать vi, здесь представлено хорошее введение в vi путем перечисления бок о бок vi команд для обычного перемещения курсора редактора GUI и сочетаний клавиш. В нем перечислены все основные команды, включая yy (строка копирования) и p (вставить после) или p (вставить до).

vi (Vim) для пользователей Windows

Ответ 18

Если вы хотите продублировать строку и вставить ее сразу под текущим значением, как в Sublime Ctrl + Shift + D, то вы можете добавить это в свой файл .vimrc.

nmap <S-C-d> <Esc>Yp

Или для режима вставки:

imap <S-C-d> <Esc>Ypa

Ответ 19

Мне нравится использовать это отображение:

:nnoremap yp Yp

потому что он позволяет использовать его вместе с собственной командой YP.