Vim: 여러 번 복사한 후 붙여넣기

Vim: 여러 번 복사한 후 붙여넣기

vim에서 강조 모드를 사용하여 일부 문자를 복사합니다. 그러면 한 번 이상 붙여넣고 싶습니다. 현재 기술이 잘 작동하지 않습니다.

예시 텍스트:Linux Solaris Irix HP-UX

단어를 복사한 다음 and Linux에 붙여넣고 싶다고 가정해 보겠습니다 .SolarisIrix

  1. 커서를 L다음에 놓으세요.Linux
  2. 명령 v(시각적 hilite용), then e(단어 끝의 경우), then y(복사/복사용)
  3. 이제 Linux내 "vim 클립보드"에
  4. S커서를 in Solaris(첫 번째 인스턴스) 으로 이동합니다 .
  5. 명령 v(시각적 하이라이트의 경우), then e(단어 끝의 경우), then p(붙여넣기의 경우)
  6. 텍스트는 이제: Linux Linux Irix HP-UX이지만 이제 Solaris내 "vim 클립보드"에 있습니다.
  7. Iin Irix(두 번째 인스턴스) 으로 커서 이동
  8. 명령 v(시각적 하이라이트의 경우), then e(단어 끝의 경우), then p(붙여넣기의 경우)
  9. 지금 문자 보내세요: Linux Linux Solaris HP-UX이건 제가 예상한 것이 아닙니다.

저는 마우스(X 터미널을 통해)를 통해 하이라이트/붙여넣기를 사용합니다. 물론, 나는 더 잘할 수 있다. 어떻게?

답변1

나는 이렇게 할 것입니다. (많은 붙여넣기에 정말 효과적입니다.)

  1. 단어의 어딘가로 이동하여 Linux해당 "ayiw단어를 복사하세요.
    • "a레지스터 "a"를 선택하십시오.
    • y복사용
    • i"in"(단어, 단락...)에 있음을 지정합니다.
    • w단어를 선택하세요
  2. 다음 단어 w(또는 단어의 특정 위치)에 도달
  3. 시간별로 붙여넣고 매크로로 저장하세요qbdiw"aPq
    • qb레지스터 "b"에서 매크로 기록 시작
    • d삭제를 위해
    • i"in"(단어, 단락...)에 있음을 지정합니다.
    • w단어를 선택하세요
    • "a레지스터 "a" 선택(이전에 저장됨)
    • P커서 앞에 단어 붙여넣기
    • q매크로 기록 중지
  4. 그런 다음 처음으로 매크로를 사용하려면 다음 단어로 이동 w하여@b
  5. 마지막으로 이 방법의 장점을 볼 수 있는 곳입니다. 바꾸고 싶은 단어를 각각 찾아서 누르세요.@@

힌트:문장 부호가 있는 단어를 선택 하려면 wby로 바꾸세요 (예:Wqbdiw"aPqHP-UX

질문:단어가 줄의 마지막 단어이면 단어 앞의 공백이 제거됩니다.

답변2

이 기능이 너무 자주 필요해서 이를 단순화하고 최대 속도를 허용하는 플러그인을 작성했습니다.레지스터로 교체.

플러그인은 gr{모션}/텍스트 개체, 전체 줄 또는 현재 선택 항목에 포함된 텍스트를 레지스터의 내용으로 대체하는 2-in-1 명령을 제공합니다. 이전 텍스트는 블랙홀 레지스터에서 삭제됩니다. 즉, 사라진다. 많은 엣지 케이스를 투명하게 처리하고 .표준 명령을 통해 빠른 반복을 허용합니다. 마음에 들지 않으면 해당 페이지에 대안에 대한 링크가 있습니다.

답변3

당신과 나에게 다행스럽게도 이 문제는묻다그리고답변됨StackOverFlow에서. p파일에 다음을 추가하여 기본 동작을 변경하여 누군가에게 더 직관적이고 편리하게 만들 수 있습니다 vimrc.

xnoremap p pgvy

답변4

"0p시각적 모드로 붙여넣을 때 이 점을 고려할 수 있습니다.

참조번호:help v_p

Move to L in Linux
ye     # Yank to end of word.
w      # Move to next word.
<C>ve  # Highlight Solaris.
"0p    # Paste Linux, Solaris ends up in unnamed register and Linux in 0
w      # Move to next word.
<C>ve  # Mark next word. (Or anywhere else)
"0p    # Paste Linux.

또는 이 정확한 예에서는 다음과 같이 할 수도 있습니다.

L리눅스를 타깃으로

yww<C>v2f 2p
# Or
yww<C>v2el2p
yw           # Yank Linux 
w            # Move to S in Solaris
<C>v2el      # Enter visual mode, highlight two * end, and l to consume space.
2p           # Paste Linux twice.

'<C>v2f '    # Alternative to <C>v2el

관련 정보