답변:
"붙여 넣기"란 이름이없는 (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
하여 단어를 잡아 당기고 이전에 잡아 당긴 단어를 붙여 넣을 수 있습니다.
12yl
12 개의 문자를 잡아 당기고"_cw^r0
단어를 대체했습니다. 그런 다음.
명령 을 사용 하여 파일 전체에서 교체를 반복 할 수있었습니다 .