Як дублювати цілу лінію у 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 gotcha: коли ви використовуєте "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 для типових рухів курсору GUI Editor Editor та клавіші швидкого доступу. У ньому перераховані всі основні команди, включаючи yy(копіювати рядок) і p(вставити після) або P(вставити раніше).
Якщо ви хочете скопіювати рядок і вставити його одразу нижче поточного типу, як і в Sublime 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
в звичайному режимі