Как мне продублировать всю строку в Vim аналогично Ctrl+ Dв IntelliJ IDEA / Resharper или Ctrl+ Alt+ ↑/ ↓в Eclipse ?
Y
эс P
аренды. :)
Как мне продублировать всю строку в Vim аналогично Ctrl+ Dв IntelliJ IDEA / Resharper или Ctrl+ Alt+ ↑/ ↓в Eclipse ?
Y
эс P
аренды. :)
Ответы:
yyили Yскопировать строку (мнемоника: у апк )
или
ddк г далить линии (Vim копирует то , что вы удалены в буфер обмена, как «регистр», как вырезать операции)
тогда
pк р Асте скопированный или удаленный текст после текущей строки
или
Pк р Асте скопированный или удаленный текст до текущей строки
Y
с y$
. (Соответствует D
и C
; (но не совместимо с Vi (никого не волнует.))) Это даже предлагается в :help Y
.
yj
или yk
, тем более, что вы не удваиваете один символ. Кроме того , yk
версия назад , что 2yy
не может сделать, и вы можете поместить количество строк , чтобы достичь в обратном y9j
или y2k
, и т.д .. Только разница в том , что ваш счетчик должен быть n-1
в общей сложности n
линий, но ваша голова может узнать , что тем не мение.
Нормальный режим: смотрите другие ответы.
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
:
в визуальном режиме, он преобразуется в '<,'>
так, что он предварительно выбирает диапазон линий, на который распространяется визуальный выбор. Таким образом, в визуальном режиме :t0
будут скопированы строки в начале.
:t.
это точный ответ на вопрос.
YP
или Yp
или yyp
.
Y
обычно переопределяется в y$
(yank (копировать) до конца строки (от текущей позиции курсора, а не начала строки)). С этой строкой .vimrc
::nnoremap Y y$
yyP
Не становится проще, чем это! Из обычного режима:
yy
затем перейдите к строке, которую вы хотите вставить и
p
yy
будет дергать текущую строку, не удаляя ее
dd
удалит текущую строку
p
будет put
ли линия захвачена любым из предыдущих методов
Если вы хотите другой путь:
"ayy
: Это сохранит строку в буфере a
.
"ap
: Это поместит содержимое буфера a
в курсор.
Есть много вариантов этого.
"a5yy
: Это будет хранить 5 строк в буфере a
.
Смотрите " Vim файлы справки для большего удовольствия.
yyp - запомни это с "ура!"
Несколько строк с числом между:
y7yp
:.,.+7 copy .+7
: P
Мне нравится: Shift+ v(чтобы сразу выделить всю строку и позволить вам выбрать другие строки, если хотите), y, p
Вы также можете попробовать <Cx> <Cl>, который будет повторять последнюю строку из режима вставки и выдает окно завершения со всеми строками. Это работает почти как <Cp>
Для тех, кто не знает vi, некоторые ответы сверху могут ввести его в заблуждение такими фразами, как «вставить ... после / перед текущей строкой ».
Это на самом деле "вставить ... после / перед курсором ".
yyили Yскопировать строку
или
ddудалить строку
тогда
pчтобы вставить скопированный или удаленный текст после того, как в курсоре
или
Pвставить скопированный или удаленный текст перед на курсоре
Для получения дополнительной привязки клавиш вы можете посетить этот сайт: vi Полный список привязок клавиш
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 GUI Editor и сочетаниями клавиш. В нем перечислены все основные команды, включая yy(копировать строку) и p(вставить после) илиP (вставить до).
Если вы хотите , чтобы дублировать строку и вставить его сразу ниже текущего Мол, так же , как в возвышенном Ctrl+ Shift+ D, то вы можете добавить это в ваш .vimrc
файл.
nmap <S-C-d> <Esc>Yp
Или для режима вставки:
imap <S-C-d> <Esc>Ypa
i
до конца для повторного ввода прерывает его undo
, поэтому решение для дублирования строк в режиме вставки не так тривиально, как кажется.
imap <S-C-d> <Esc>Ypi
режиме вставки и nmap <S-C-d> <Esc>Yp
в обычном режиме