it-swarm-ru.tech

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

Как мне продублировать всю строку в Vim аналогично Ctrl+D в IntelliJ IDEA/Решарпер или Ctrl+Alt+/ в затмении?

1492
sumek

yy или же Y скопировать строку
или же
dd удалить (вырезать) строку

затем

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

2555
Mark Biek

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

The Ex way:

  • :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

375
Benoit

YP или Yp или yyp.

279
Linulin

copy and paste in vim

Не становится проще, чем это! Из обычного режима:

yy

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

p
229
Adam

yy

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

dd

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

p

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

49
pjz

Сделай это:

Первый, yy скопировать текущую строку, а затем p вставить.

38
Eric Z Beard

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

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

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

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

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

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

38
Kwondri

yyp - запомни это с "ура!"

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

y7yp

37
theschmitzer

yyp - вставить после

yyP - вставить перед

22
yemu

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

11
nikolavp

Другим вариантом будет пойти с:

nmap <C-d> mzyyp`z

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

11
Rook

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

10
Gabe

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

yy или же Y скопировать строку
или же
dd удалить строку

затем

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


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

10
Michael

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

3
cori

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

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

2
Chris Penner

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

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

1
ap-osd

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

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

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

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

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

1
DarkWiiPlayer

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

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

0
jedi

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

:nnoremap yp Yp

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

0
yolenoyer