Vim을 사용하여 종종 코드 블록을 방금 막힌 블록으로 교체하려고합니다.
그러나 교체 할 코드 블록을 삭제하면 해당 블록 자체가 레지스터로 이동하여 방금 막힌 블록을 지 웁니다. 그래서 나는 yanking, 삽입, 원하지 않는 것을 삭제하는 습관을 겪었지만 큰 코드 블록을 사용하면 삽입 된 블록과 블록을 별도로 삭제하려고하면 지저분 해집니다.
그렇다면 Vim에서 텍스트를 대체하는 가장 매끄럽고 빠른 방법은 무엇입니까?
- 레지스터에 텍스트를 넣지 않고 텍스트를 삭제하는 방법이 있습니까?
- 예를 들어 “다음 단어 바꾸기”또는 “다음 단락으로 바꾸기”라고 말하는 방법이 있습니까?
- 또는 다중 등록 기능을 사용하는 가장 좋은 방법입니까?
답변
레지스터에 저장하지 않고 무언가를 삭제하려면 “블랙홀 레지스터”를 사용할 수 있습니다.
"_d
물론 관심있는 것을 보유하지 않은 다른 레지스터를 사용할 수도 있습니다.
답변
네. “오래된”텍스트를 먼저 삭제하는 것보다 약간 복잡합니다.
나는 시작합니다 ..
line1
line2
line3
line4
old1
old2
old3
old4
I shift+ vline1, line 2, 3 및 4를 선택하고 d명령으로 삭제하십시오.
그런 다음 이전 1-4 줄을 같은 방식으로 삭제합니다.
그런 다음
"2p
마지막 두 번째 줄을 붙여 넣습니다 (라인 1-4). "3p
세 번째부터 끝까지 수행합니다.
그래서 나는 결국
line1
line2
line3
line4
참조 :
번호가 매겨진 레지스터의 Vim 문서
답변
VIM 문서 : 번호가 지정된 레지스터 0에는 명령이 [ “x]로 다른 레지스터를 지정하지 않은 한 가장 최근의 yank 명령의 텍스트가 포함됩니다.
예를 들어 “foo”를 잡아 당기고 “bar”를 삭제하십시오. 레지스트리 0에는 여전히 “foo”가 있습니다! 따라서 “foo”는 다음을 사용하여 붙여 넣을 수 있습니다."0p
답변
현재 선택을 버퍼로 바꿀 수있는 쉬운 매핑을 사용하는 것이 편리합니다.
예를 들어 이것을 .vimrc에 넣을 때
vmap r "_dP // it's a capital 'p' on the end
그런 다음 무언가를 레지스터 (예 : ‘y’)에 복사 한 후 바꿀 텍스트를 선택하고 키보드에서 ‘r’을 누르기 만하면됩니다. 선택은 현재 레지스터로 대체됩니다.
설명:
vmap - mapping for visual mode
"_d - delete current selection into "black hole register"
P - paste
답변
vimrc에 다음을 넣었습니다.
noremap y "*y
noremap Y "*Y
noremap p "*p
noremap P "*P
vnoremap y "*y
vnoremap Y "*Y
vnoremap p "*p
vnoremap P "*P
이제 클립 보드 레지스터를 잡아 당기고 기본 레지스터에서 발생하는 일을 신경 쓸 필요가 없습니다. 또 다른 이점은 최소한의 번거 로움으로 다른 앱에서 붙여 넣을 수 있다는 것입니다. 몇 가지 기능을 잃어 가고 있지만 어쨌든 둘 이상의 레지스터 / 클립 보드를 추적 할 수는 없습니다.
답변
당신이 준 구체적인 예를 들어, 질문을 이해하면 다음과 같이 작동 할 수 있습니다.
*Highlight what you want to put somewhere else
*delete (d)
*Highlight the code that you want it to replace
*paste (p)
답변
모든 yank 및 delete 작업은 기본적으로 명명되지 않은 레지스터에 씁니다. 그러나 가장 최근의 yank 및 가장 최근의 삭제는 항상 번호가 매겨진 레지스터에 (별도로) 저장됩니다. 레지스터 0
에는 가장 최근의 얀크가 있습니다. 레지스터 1-9
는 9 개의 가장 최근의 삭제를 보유합니다 ( 1
가장 최근 임).
다시 말해, 삭제는 명명되지 않은 레지스터에서 가장 최근의 yank를 덮어 쓰지만 여전히 0
레지스터에 있습니다. "_dd
다른 답변에서 언급 된 블랙홀 레지스터 트릭 ( )은 명명되지 않은 레지스터를 덮어 쓰지 못하기 때문에 작동하지만 필요하지는 않습니다.
큰 따옴표를 사용하여 레지스터를 참조하므로 가장 최근에 작성된 텍스트를 붙여 넣는 방법은 다음과 같습니다.
"0p
이것은 훌륭한 참고 자료입니다.