Як дублювати цілу лінію у 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в звичайному режимі