Duplikuj całą linię w Vimie

Jak powielić całą linię w Vimie w podobny sposób jak Ctrl+D w IntelliJ IDEA / Resharper lub Ctrl+Alt+/ w zaćmieniu?

Author: Burçin, 2008-09-16

19 answers

yy lub Y aby skopiować wiersz
lub
dd aby usunąć (wyciąć) linię

Then

p aby wkleić skopiowany lub usunięty tekst po bieżącej linii
lub
P aby wkleić skopiowany lub usunięty tekst przed bieżącą linią

 2304
Author: Mark Biek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 13:57:30

Tryb normalny: zobacz inne odpowiedzi.

The Ex way:

  • :t. powieli wiersz,
  • :t 7 skopiuje go po linii 7,
  • :,+t0 skopiuje bieżący i następny wiersz na początku pliku (,+ jest synonimem zakresu .,.+1),
  • :1,t$ kopiuje linie od początku do pozycji kursora do końca (1, jest synonimem zakresu 1,.).

Jeśli chcesz przenieść zamiast kopiować, użyj :m zamiast z dnia :t.

To może być naprawdę potężne, jeśli połączysz je z :g lub :v:
  • :v/foo/m$ przeniesie wszystkie linie nie pasujące do wzorca " foo " na koniec pliku.
  • :+,$g/^\s*class\s\+\i\+/t. skopiuje wszystkie kolejne wiersze formularza class xxx tuż za kursorem.

Odniesienie: :help range, :help :t, :help :g, :help :m i :help :v

 361
Author: Benoit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-18 11:43:11

YP lub Yp lub yyp.

 275
Author: Linulin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-17 15:06:48

Kopiuj i wklej w vim

Nic prostszego niż to! Z trybu normalnego:

yy

Następnie przejdź do linii, w której chcesz wkleić i

p
 218
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-07 22:20:41

yy

Wykasuje bieżącą linię bez jej usuwania

dd

Usunie bieżący wiersz

p

Będzie put linią wykorzystywaną którąkolwiek z poprzednich metod

 46
Author: pjz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 10:21:45

Jeśli chcesz inny sposób: -)

"ayy spowoduje to zapisanie linii w buforze a

"ap spowoduje to umieszczenie zawartości bufora a na kursorze.

Istnieje wiele odmian tego.

"a5yy spowoduje to zapisanie 5 linii w buforze a

Zobacz http://www.vim.org/htmldoc/help.html For more fun

 38
Author: Kwondri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-01 03:09:12

yyp - zapamiętaj to z "yippee!"

Wiele linii z liczbą pomiędzy:

y7yp

 36
Author: theschmitzer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 08:23:01

Zrób to:

Pierwszy, yy skopiować bieżącą linię, a następnie P wkleić.

 33
Author: Eric Z Beard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 10:22:40

yyp - wklej po

yyP - Wklej przed

 19
Author: yemu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 08:47:27

Możesz również spróbować , który powtórzy ostatnią linię z trybu wstawiania i wyświetli okno zakończenia ze wszystkimi wierszami. Działa prawie jak

 11
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 20:32:52

Inną opcją byłoby:

nmap <C-d> mzyyp`z

Daje przewagę zachowania pozycji kursora.

 11
Author: Rook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-14 04:37:04

Dla kogoś, kto nie zna vi, niektóre odpowiedzi z góry mogą go wprowadzić w błąd zwrotami typu " wklej ... po/przed linia prądowa".
to właściwie " pasta ... po/przed kursor".

yy lub Y aby skopiować wiersz
lub
dd aby usunąć wiersz

Then

p aby wkleić skopiowany lub usunięty tekst po kursor
lub
P aby wkleić skopiowany lub usunięty tekst przed kursorem


Aby uzyskać więcej wiązań do kluczy, możesz odwiedzić tę stronę: Vi pełna lista wiązań do kluczy

 10
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 15:07:02

I like: Shift+v (aby natychmiast wybrać całą linię I umożliwić zaznaczenie innych linii, jeśli chcesz), y, p

 10
Author: Xavier Guihot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-30 07:29:24

1 gotcha: kiedy używasz "p" do umieszczenia linii, to umieszcza ją po linii, na której jest włączony kursor, więc jeśli chcesz dodać linię po linii, którą szarpasz, nie przesuwaj kursora w dół linii przed umieszczeniem nowej linii.

 3
Author: cori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 15:06:45

Dla tych, którzy zaczynają uczyć się vi, oto dobre wprowadzenie do vi, wymieniając obok siebie polecenia vi do typowego ruchu kursora i skrótów w edytorze Windows GUI. Zawiera listę wszystkich podstawowych poleceń, w tym yy (Kopiuj linię) I P (wklej po) lub P (Wklej przed).

Vi (Vim) dla użytkowników Windows

 1
Author: ap-osd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 13:23:48

Domyślnie jest yyp , ale używam tego rebindingu od około roku i uwielbiam go:

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

 1
Author: Chris Penner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-03 11:40:05

Wiem, że jestem spóźniony na imprezę, ale co tam; mam to w swoim .vimrc:

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

Polecenie :copy kopiuje tylko zaznaczoną linię lub zakres (zawsze całe linie) poniżej numeru linii podanego jako jej argument.

W trybie normalnym to co robi tocopy . skopiuj tę linię do tuż poniżej tej linii .

I w trybie wizualnym zamienia się w '<,'> copy '> Kopiuj od początku selekcji do końca selekcji do wiersza poniżej końca selekcji .

 1
Author: DarkWiiPlayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-13 07:26:23

Jeśli chcesz powielić linię i wkleić ją od razu pod bieżącym like, tak jak w Sublime Ctrl+Shift+D, Następnie możesz dodać to do swojego pliku .vimrc.

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

 0
Author: jedi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-15 17:14:21

Lubię używać tego mapowania:

:nnoremap yp Yp

Ponieważ sprawia, że jest spójna w użyciu wraz z natywnym poleceniem YP.

 0
Author: yolenoyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 16:34:29