답변:
"붙여 넣기"란 이름이없는 (yank / put / change / delete / substitute) 레지스터를 의미한다고 생각합니다. 맞습니까? (변경 명령에 의해 덮어 쓰여지는 것이기 때문에.)
레지스터는 일반적으로 입력하여 지정 "처럼, 다음 레지스터의 이름 (단일 문자를) "ay다음 "ap레지스터에 꺼낼 a, 다음 레지스터의 내용을 넣어 a. 변경 명령도 마찬가지입니다. 당신이 변경 명령을 사용하여 제거 할 텍스트가 어디 가고 싶어하지 않는 경우이 경우, 당신은 블랙홀 레지스터를 사용할 수 있습니다 "_: "_cw. 그런 다음 삽입 모드에서 Ctrl-R을 누른 다음 해당 레지스터 "의 내용에 넣을 레지스터 (아마도 )를 누를 수 있습니다.
"* -선택 레지스터 (가운데 버튼 붙여 넣기)"+ -클립 보드 레지스터 (아마도 터미널을 통해 ctrl-shift-v로 액세스 가능)"" -vim의 기본 (이름 없음) yank / put / change / delete / substitute register.짧은 답변: "_cw^R"
편집 : 다른 사람들이 제안한 것처럼 텍스트를 기본 레지스터에 넣은 yank (또는 기타)에 대해 다른 레지스터를 사용할 수 있습니다. 하지만 항상 그것을 먼저 생각하는 것은 아니기 때문에 그것을 날려 버리지 않고 단일 변경 명령을 수행하는 것이 좋습니다. 완전히 날아가지는 않지만. 번호가 매겨진 레지스터가 있습니다 "0통해 "9:
Vim은 이러한 레지스터를 yank 및 delete 명령의 텍스트로 채 웁니다.
번호가 매겨진 레지스터 0에는 명령이 [ "x]로 다른 레지스터를 지정하지 않는 한 가장 최근의 yank 명령의 텍스트가 포함됩니다.
번호가 매겨진 레지스터 1에는 명령이 다른 레지스터를 지정하거나 텍스트가 한 줄 미만인 경우 (작은 삭제 레지스터가 사용됨) 가장 최근의 삭제 또는 변경 명령에 의해 삭제 된 텍스트가 포함됩니다. 예외는 이러한 이동 명령 delete 연산자 위해 만들어 :
%,(,),`,/,?,n,N,{와}. 레지스터 "1은 항상 사용됩니다 (이것은 Vi 호환 가능). 삭제가 라인 내에있는 경우"-레지스터도 사용됩니다.연속적으로 삭제 또는 변경 될 때마다 Vim은 레지스터 1의 이전 내용을 레지스터 2로, 2를 3으로 이동하여 레지스터 9의 이전 내용을 잃습니다.
:help registers있습니다.
이 게시물의 정보를 사용하여이 유용한 매핑을 구성했습니다. 나는 '붙여 넣기 변경'을 의미하기 때문에 'cp'를 선택했습니다.
nmap <silent> cp "_cw<C-R>"<Esc>
편집하다:
또한 나는 이것을 한 걸음 더 나아가 모든 동작을 지원했습니다.
위의 명령에 해당하는 것을 얻으려면 cpw"변경 붙여 넣기 단어"
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>g@
function! ChangePaste(type, ...)
silent exe "normal! `[v`]\"_c"
silent exe "normal! p"
endfunction
nmap <silent> cp :let g:currentRegister=v:register<cr>:set opfunc=ChangePaste<CR>g@ function! ChangePaste(type, ...) silent exe "normal! `[v`]\"_c".getreg(g:currentRegister) endfunction
이를 위해 vim의 시각적 모드를 사용할 수 있습니다. 예를 들어 단어를 복사 한 ye다음 복사 된 단어로 다른 단어 를 덮어 씁니다.vep
커서가 명명되지 않은 레지스터의 내용으로 바꾸려는 단어에 있으면 viwp. v비주얼 모드로 전환 iw하고 내부 단어를 선택하고p 하고 레지스터의 내용을 제자리에 놓습니다.
실제로 한 단어 (함수 이름 등)를 다른 단어로 바꿔야 할 때 대체로 사용할 yiw단어로 이동하고, 내부 단어를 이름없는 레지스터에 끌어다 놓은 다음 I '라는 단어로 이동합니다. m 교체 및 viwp교체합니다. 한 단어를 다른 단어로 대체하는 아주 빠른 방법입니다. /바꾸기 위해 바꾸려는 단어를 ( ) 검색 한 경우 , n을 눌러 바꾸어야 할 다음 항목으로 이동할 수 있습니다. 분명히를 사용하는 대신 사용할 수 :%s/find/replace/g는 없지만 몇 가지 빠른 대체를 위해 유용 할 수 있습니다. 특히 레지스터에 이미 새 단어가있는 경우 더욱 그렇습니다.
명명 된 레지스터를 사용하는 경우 (예 : 붙여 넣기 레지스터를 채우기 위해 "ay또는 "ad등을 사용 ) 다음과 같이 할 수 있습니다.
cw<CTRL-R>a<esc>
단어를 레지스터의 내용으로 대체합니다 a. 내가 말할 수있는 한, 기본 레지스터는 사용할 수 없습니다 cw. 그 명령에 의해 잘린 단어로 채워질 것이기 때문 입니다.
시스템 붙여 넣기 버퍼 또는 vi 레지스터를 의미합니까?
당신이 다음 버퍼 붙여 넣기 시스템을 사용하고자하는 경우에 당신은 잘하고 할 수 dw"+P- "레지스터를 선택하고,"+ 시스템 붙여 넣기 버퍼입니다.
그렇지 않으면 레지스터 "ay에 복사하고 a무언가를 대체하기 위해 say 를 사용하여 기본이 아닌 레지스터 에 복사 하십시오.dw"aP
dw"단어"를 고려한 후 후행 공백을 삭제 cw하고 단어 만 변경합니다. 그런 이유로 dw나를 위해 작동하지 않습니다.
de작동합니다.이 단어의 끝까지 dw삭제되고 다음 단어의 시작 부분까지 삭제됩니다.
을 (를) 사용 yw하여 단어를 잡아 당긴 다음, 잡아 당긴 단어를 사용 vipw하여 단어를 잡아 당기고 이전에 잡아 당긴 단어를 붙여 넣을 수 있습니다.
12yl12 개의 문자를 잡아 당기고"_cw^r0단어를 대체했습니다. 그런 다음.명령 을 사용 하여 파일 전체에서 교체를 반복 할 수있었습니다 .