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

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

+1501
16 сент. '08 в 15:02
источник поделиться
19 ответов

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

затем

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

+2571
16 сент. '08 в 15:06
источник

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

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

+383
17 апр. '12 в 15:17
источник

YP или YP или yyp.

+284
16 сент. '08 в 15:07
источник

copy and paste in vim

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

yy

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

p
+233
07 февр. '14 в 22:20
источник

y y

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

d d

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

p

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

+49
16 сент. '08 в 15:04
источник

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

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

+40
16 сент. '08 в 15:04
источник

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

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

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

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

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

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

+39
16 сент. '08 в 15:37
источник

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

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

y 7 y p

+37
16 сент. '08 в 15:16
источник

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

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

+22
12 окт. '13 в 18:23
источник

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

nmap <C-d> mzyyp`z

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

+11
14 июл. '09 в 4:37
источник

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

+11
18 сент. '08 в 20:32
источник

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

+10
14 июл. '09 в 4:45
источник

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

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

затем

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


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

+10
12 мая '16 в 14:54
источник

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

+3
16 сент. '08 в 15:06
источник

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

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

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

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

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

+2
13 апр. '18 в 7:26
источник

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

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

+2
20 апр. '15 в 4:33
источник

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

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

+1
10 февр. '16 в 13:23
источник

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

imap <SCd> <Esc>Yp

0
11 февр. '18 в 17:20
источник

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

:nnoremap yp Yp

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

0
11 апр. '18 в 16:34
источник

Посмотрите другие вопросы по меткам или Задайте вопрос