2011-08-23 9 views
60

여러 줄을 클립 보드의 내용으로 바꾸는 가장 좋은 방법은 무엇입니까?여러 번 붙여 넣기

내가 겪고있는 문제는 선을 잡아 당겨 다른 선 위로 붙여 넣을 때 "홱 바꾸기"가 방금 바꾼 선으로 바뀝니다. 이제, 같은 줄로 다른 줄을 바꾸려면 다시 가서 다시 잡아야합니다.

더 좋은 방법이 있어야합니다.

답변

76

나는 나의의 .vimrc이 있습니다. 보다 정교한 버전을 작성하는 것이 가능할 것입니다. 또한 P를 사용하여 이전 동작을 유지할 수 있습니다.

+23

'p'는 붙여 넣기를, 'gv'는 원래 선택한 것을 다시 선택합니다. – Amjith

+0

@Benoit 고맙다고해도 작동하는 것 같습니다 . – jwerre

+0

'xnoremap : command not found'를 얻으려면 어떻게해야합니까? : -/ –

11

Vim에서 선택 영역 위에 붙여 넣으면 기본 레지스터가 선택 항목의 내용으로 바뀝니다. 선택을 통해 붙여 넣기 한 후 가능성 클립 보드 레지스터의 내용을 닦아 경우에는

set clipboard=unnamed 

하나의 옵션 등록이를 제거하고 명시 적으로 클립 보드를 사용하는 것입니다의 .vimrc에 다음 줄을 "+

또 다른 옵션은 다른 명시 적으로 명명 된 레지스터 (az) 중 하나를 사용하는 것입니다. 첫 번째 붙여 넣기 후에 예를 들어 "c으로 다시 줄을 긋고 "cp을 사용하여 붙여 넣습니다.

+0

일 니스는 사실 +' – toopay

+0

(우분투 여기,) 기본 "'에 대한 = 자동 선택 클립 보드되었다 여전히 덕분에 지금까지 가장 우아한 대답을 붙여 넣을 때 – Tobu

7

사용 np 여기서 n은 줄을 붙여 넣으려는 시간 (예 : 3p)에 3 줄을 붙여 넣습니다. (이 기본 레지스터에서만 작동하지만이 매핑은 기억하기 쉬운 주)

xnoremap p pgvy 

을 :

+6

이 작동하지 않습니다. – Tobu

+0

@Tobu하지만이 질문의 제목은 '여러 번 붙여 넣으면 어떻게됩니까?' – icc97

11

가 나는 종종 다른 레지스트리를 사용, 당신은 몇 가지라는 이름의 레지스트리 "ay에 필요한 행을 복사 한 다음 십중팔구의 내용을 가져야한다 "ap

17

"0 거기에서 붙여 넣습니다. 입력하기가 조금 더 지루하지만, "0p은 원하는 것을해야합니다.

또는 이전 줄을 맨 앞에 선택하고 바꾸지 마십시오. 검색을 통해 해당 줄을 찾은 경우 n.을 반복적으로 두 번 누르고 (모두 p 이후) 붙여 넣으면 모두 ndd을 입력하고 필요에 따라 n.을 입력하십시오.

Vim으로 이동할 때 가장 큰 정신적 전환은 그룹 편집을 순차적으로 적용하는 방법을 찾는 것입니다. 나는. 한 줄에 많은 편집 작업을 수행 한 다음 다른 줄에서 동일한 편집 작업을 한 번에 한 번에 여러 줄로 첫 편집을하고 (큰 효과를 내기 위해 . 사용) 한 번에 두 번째 편집을 한 번에합니다. 매크로의 사용은 환상적이기 때문에 도움이 될 수 있지만 때로는 "복잡한"변경으로 올바르게 작동하는 것이 지루한 경우가 있습니다.

+0

팁 주셔서 감사! – mt22

+2

는': % s /.../.../gc' 형식의 명령이 당신이 원하는 것에 더 가깝게 될지도 모르는 곳을 좋아합니다. – Milimetric

+0

@Milimetric +1은 당신이 그렇게 확신 할 수 있다는 것을 몰랐습니다. – ngks

1

복사/붙여 넣기 대신에 ciw과 같은 텍스트 개체 명령을 사용하여 내부 단어를 변경하는 것이 좋습니다. 이 방법은 . 반복 명령을 사용하여 쉽게 반복 할 수 있다는 이점이 있습니다.

  1. yiw 내부 단어 (커서 아래에 단어를 복사, "처음"이라고 말함).
  2. ...커서를 다른 단어로 이동하십시오 (예 : "second").
  3. ciw<C-r>0 "초"로 바꾸고 "첫 번째"로 바꾸십시오 (Ctrl-R).
  4. ... 커서를 다른 단어 (예 : "세 번째")로 이동하십시오.
  5. . "세 번째"를 "첫 번째"로 바꾸십시오.