Eclipse에서 Vim의 전체 라인을 복제하는 방법은 무엇입니까?


1624

어떻게의 전체 라인을 복제 할 빔을 유사한 방식으로 Ctrl+ D인 IntelliJ IDEA / ReSharper에서 또는 Ctrl+ Alt+ / 에서 이클립스 ?


49
사람들이 더 이상 vimtutor를 실행하지 않습니까? 이것은 아마도 Vim 사용법을 배우는 첫 5 분 안에있을 것입니다.
dash-tom-bang

131
이 줄을 복제 하시겠습니까? Yes P임대. :)
Stavr00

3
FWIW 지난 2 개월 동안 수십 번의 범인 검찰을 받았으며이 개념은 다루지 않습니다. "dd"와 "v-navigate-y"를 수행하고 "p"를 수행하는 방법을 알려줍니다. 여기에 요청 된대로 한 줄을 삭제하지 않고 복사하는 방법을 알려주지 않습니다.
danielson317

답변:


2769

yy또는 Y(니모닉 : 라인을 복사 Y ANK )
또는
ddD elete 라인을 (당신이처럼, "등록"-처럼 클립 보드으로 삭제 무엇 빔 복사 잘라 내기 작업)

그때

pP는 ASTE 복사 또는 텍스트를 삭제 한 현재 행
또는
PP는 ASTE 복사 또는 삭제 된 텍스트 전에 현재 행


129
훌륭한 지적입니다. 나는 두 번 Y 타격 찾을하지만 어떤 이유로 SHIFT-Y보다 나를 위해 빠른
마크 Biek

25
@camflan 나는 Y가 "커서에서 끝까지 복사"되어야한다고 생각한다
Dzung Nguyen

42
및 2yy 2 개 라인을 복사하는 데 사용할 수 있습니다 (그리고 다른 N에 대한)
아미르 알리 Akbari

5
@nXqd : 예, 많은 사용자가에 매핑 Y합니다 y$. (과 일치 D하고 C,. (하지만 바이올렛 호환 (아무 염려)))도 제안되어 그 :help Y.
Aaron Thoma

11
두 줄을 복사하려면 yj또는 yk한 줄에 두 배를 두지 않기 때문에 또는 가기 만하는 것이 훨씬 빠릅니다 . 또한, 할 수없는 yk뒤로 버전이며 2yy뒤로 y9j또는 뒤로 y2k등 을 맞출 수있는 줄 수를 넣을 수 있습니다 . 차이점은 단지 n-1n줄 수에 대한 계산이어야 하지만 머리는 그것을 배울 수 있다는 것입니다. 어쨌든.
zelk

406

일반 모드 : 다른 답변을 참조하십시오.

예의 방법 :

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


1
:시각적 모드에서을 누르면 시각적 '<,'>선택이 포함 된 선 범위를 사전 선택하도록 변환됩니다 . 따라서 시각 모드에서는 :t0처음에 줄을 복사합니다.
Benoit

1
레코드 : 콜론 (:)을 입력하면 Ex 명령을 입력 할 수있는 명령 행 모드로 들어갑니다. vimdoc.sourceforge.net/htmldoc/cmdline.html Ex 명령은 실제로 강력하고 간결 할 수 있습니다. yyp 솔루션은 "정상 모드"명령입니다. 먼 라인 또는 라인 범위를 복사 / 이동 / 삭제하려면 Ex 명령이 훨씬 빠릅니다.
Niels Bom

7
답변에 문제가 있기 때문에 다운 투표 (내 상황에서는 작동하지 않지만 복제하려는 행 번호를 알지 못함)이지만 실제로는 최상위 / 허용되는 답변이 아니어야하기 때문에 자주 묻는 질문.
mjaggard

9
@mjaggard : 점수에 상관없이 허용되는 답변은 항상 최상위에 있습니다. 예, 그 답을 보완책으로 추가했으며 OP에 가장 적합한 것으로 보입니다.
Benoit

7
:t.질문에 대한 정확한 답변입니다.
Burak Erdem

294

YP또는 Ypyyp.


Y그러나 일반적으로 y$(행의 끝이 아닌 (현재 커서 위치에서) 줄의 끝까지 얀크 (복사))에 다시 매핑됩니다 . 이 라인으로 .vimrc::nnoremap Y y$
Aaron Thoma

1
불쌍한 노인을 잊지 마십시오yyP
icc97

253

vim에 복사하여 붙여 넣기

이보다 더 간단하지 않습니다! 일반 모드에서 :

yy

붙여 넣을 줄로 이동 한 다음

p

34
GIF를 만들기 위해 무엇을 사용 했습니까?
Zoltán

4
@ Zoltán 당신은 작은 크기의 LiceCap을 사용할 수 있습니다
onmyway133


44

이 작업을 수행:

먼저 yy현재 줄을 복사 한 다음 p붙여 넣습니다.


20
공백을 입력하지 마십시오.
Niels Bom

1
예, 커서가 줄의 끝에 있고 표시된대로 공백을 입력하면 줄을 긋은 줄 아래에 줄 2 개를 줄이게됩니다.

44

다른 방법을 원한다면 :

"ayy: 이것은 라인을 버퍼에 저장합니다 a.

"ap: 버퍼 내용을 a커서에 놓습니다.

이것에는 많은 변형이 있습니다.

"a5yy: 5 줄을 버퍼에 저장 a합니다.

더 재미있는 내용은 " Vim 도움말 파일 을 참조하십시오 .


고마워, 나는 이것을 바인드로 사용했다 : map <Leader> d "ayy"ap
frbl

39

yyp - "yippee"로 기억하세요.

사이에 숫자가있는 여러 줄 :

y7yp


17
7yy는 y7y와 동일하며 수행 방법을 기억하기가 더 쉽습니다.
graywh

10
y7yp (또는 7yyp)은 거의 유용하지 않습니다. 커서는 복사 된 첫 번째 행에 남아 있으므로 p는 복사 된 행을 소스의 첫 번째 행과 두 번째 행 사이에 붙여 넣습니다. 라인 블록을 복제하려면 7yyP
Nefrubyr

@Nefrubyr 또는 :.,.+7 copy .+7: P
DarkWiiPlayer

23

yyp -붙여 넣기

yyP -전에 붙여 넣기


6
행이 복제되므로 내용의 최종 결과는 동일합니다.
Acumenus

4
@ABB 그러나 여기에는 약간의 차이가 있습니다. 커서가 어떤 라인에 놓이게됩니까?
Mikk

12

나는 좋아한다 : Shift+ v(전체 줄을 즉시 선택하고 원하는 경우 다른 줄을 선택할 수 있도록), y, p


11

<Cx> <Cl>을 시도하면 삽입 모드에서 마지막 줄이 반복되고 모든 줄이 포함 된 완료 창이 나타납니다. <Cp>와 거의 비슷합니다.


이것은 매우 유용하지만 많은 키를 누르지 않아도 CTRL-L에 매핑되었습니다. 이것은 내지도입니다 : inoremap ^ L ^ X ^ L
Jorge Gajon

11

또 다른 옵션은 다음과 같습니다.

nmap <C-d> mzyyp`z

커서 위치를 유지하는 이점을 제공합니다.


10

vi를 모르는 사람에게는 위의 답변 중 일부가 "붙여 넣기 ... 현재 행 뒤 / 앞에 붙여 넣기"와 같은 문구로 그를 오도 할 수 있습니다 .
실제로는 "붙이기 ... 후 / 이후 커서 "입니다.

yy또는 Y라인을 복사
하거나
dd라인을 삭제

그때

p복사 또는 삭제 된 텍스트를 붙여 넣습니다 커서
또는
P복사 또는 삭제 된 텍스트 붙여 넣기 전에 커서를


더 많은 키 바인딩을 보려면 다음 사이트를 방문하십시오. vi 완전한 키 바인딩 목록


3

1 gotcha : "p"를 사용하여 선을 넣을 때 커서가 놓인 선 뒤에 넣습니다 . 따라서 줄을서는 선 다음에 선을 추가하려면 커서를 한 줄 아래로 이동하지 마십시오 줄 바꾸기 전에.


4
또는 자본 P를 사용하십시오-전에 넣어
Ghoti

3

기본값은 yyp이지만 1 년 정도이 리 바인딩을 사용하여 좋아했습니다.

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


3

나는 파티에 늦었다는 것을 알고 있습니다. 내 .vimrc에 이것을 가지고 있습니다 :

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

그만큼 :copy 명령은 선택한 행이나 범위 (항상 전체 행)를 인수로 지정된 행 번호 아래로 복사합니다.

일반 모드에서는 copy . 이 줄을이 줄 바로 아래에 복사합니다 .

그리고 시각적 모드에서는 '<,'> copy '> 선택 시작에서 선택 끝에서 선택 끝 아래의 행 으로 복사됩니다 .


1
↑↑ 여기에 최고의 답변!

2

vi를 배우기 시작하는 사람들을 위해 전형적인 Windows GUI 편집기 커서 이동 및 단축키에 대한 vi 명령을 나열하여 vi에 대한 좋은 소개가 있습니다. yy(복사 행) 및 p(붙여 넣기 후) 또는 P(붙여 넣기 전에)를 포함한 모든 기본 명령이 나열됩니다 .

Windows 사용자의 경우 vi (Vim)


1

Sublime Ctrl+ Shift+ 에서와 같이 줄을 복제하여 현재와 같은 바로 아래에 붙여 넣으 D려면 .vimrc파일에 추가 할 수 있습니다 .

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

또는 삽입 모드의 경우 :

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


이것은 삽입 모드를 떠나고, i다시 입력하기 위해 끝에 추가 하는 것만으로 중단 undo되므로 삽입 모드에서 라인을 복제하는 솔루션은 그다지 사소하지 않습니다.
DarkWiiPlayer

이것은 나를 위해 잘 완벽하게 작동합니다 : imap <S-C-d> <Esc>Ypi 삽입 모드와 nmap <S-C-d> <Esc>Yp일반 모드
제다이

0

이 매핑을 사용하고 싶습니다 :

:nnoremap yp Yp

기본 YP명령 과 함께 사용하기 때문에 일관성이 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.