Вопрос

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

Это было полезно?

Решение

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

тогда

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

Другие советы

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

Тот Самый Бывший способ:

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

YP или Yp или yyp.

copy and paste in vim

Проще этого не бывает!Из обычного режима:

yy

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

p

yy

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

dd

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

p

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

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

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

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

Существует множество вариаций на этот счет.

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

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

Сделай это:

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

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

Несколько строк с цифрой между ними:

y7yp

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

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

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

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

nmap <C-d> mzyyp`z

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

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

yy или Y чтобы скопировать строку
или
dd чтобы удалить строку

тогда

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

:nnoremap yp Yp

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top