vim: *그냥* 복사만 하면 되나요?

vim: *그냥* 복사만 하면 되나요?

나는 vim을 좋아하는 법을 배우고 있지만 아직 완전히 받아들이지 못한 한 가지는 복사하여 붙여넣는 상황입니다. 머글 텍스트 편집기에서는 텍스트 섹션을 Ctrl복사한 다음 편집/삭제하고 텍스트를 다른 곳에 붙여넣었습니다. 그러나 vim에서는 텍스트를 복사한 후 텍스트를 수정하면 원본 텍스트가 삭제되는 경우 가 많기 C때문에 이 작업을 수행할 수 없습니다 .ydx

텍스트를 복사하는 d대신 이것을 만들 수 있는 방법이 있습니까 ? x아니면 이러한 vim 기능을 어떻게 사용해야 합니까?

답변1

이전 9개 사본은 1호출을 통해 레지스터에 저장됩니다 9. 마지막으로 잡아당긴 두 번째 항목을 호출하는 데 사용할 수 있고 "1p, 마지막으로 잡아당긴 항목을 호출하는 데 사용하는 "2p등의 작업을 수행할 수 있습니다. 이 명령은 :reg붙여넣기에 사용할 수 있는 레지스터를 표시합니다.

더 오래 잡아당김을 지속하고 싶다면,알파벳 레지스터 사용.

좀 더 모호한 yank 관련 명령을 보려면 :help "매뉴얼을 읽기 시작하세요.

답변2

당신이 말하는 명령은 소위 "이름이 지정되지 않은" 레지스터를 사용합니다. 이는 매우 단기간만 사용하도록 고안되었습니다. "이걸 여기서 뽑아서 저기에 놓을 거야" 이런 식이죠.

다른 작업을 수행하는 동안 몇 초 이상 무언가를 유지하려는 경우 명명된 레지스터를 사용해야 합니다.

예를 들어, " a y y커서가 있는 줄을 레지스터로 끌어옵니다 a. a레지스터와 관련된 다른 명령을 입력하지 않는 한 실수로 레지스터가 중단되는 일은 없습니다. 몇 분, 몇 시간, 심지어 며칠 후에 입력하고 기록부 " a p에서 해당 줄의 복사본을 끌어서 a커서가 있는 위치 아래에 놓을 수 있습니다.

set viminfo='50,\"1000(잘 작동하려면 ~/.vimrcVim 세션 전반에 걸쳐 등록된 콘텐츠 등을 기억하도록 지시하는 한 줄을 파일에 추가해야 합니다. 그런 다음 끌어서 놓기 사이에 잠시 쉬어도 됩니다!)

26개의 명명된 레지스터(az)가 있습니다. 위와 같이 대문자로 지정하는 경우 대체하지 않고 현재 레지스터 내용에 추가됩니다. 따라서 h한 번에 하나의 조각을 등록한 다음 one-shot을 사용하여 모두 삭제하는 등 매우 복잡한 것을 만들 수 있습니다 " h p.

레지스터 이름은 선택 사항입니다. 즉, 명명된 레지스터를 사용하는 데 필요한 많은 명령을 이미 알고 있고 사용하고 있다는 의미입니다. :help registers몇 가지 가능성에 대해 알아보려면 Vim과 대화하세요 .

반품,바이 머그 받기.

답변3

복사 레지스터를 변경하지 않고 d를 사용하여 텍스트를 삭제해야 하는 경우(예를 들어 텍스트를 복사했지만 다른 텍스트를 삭제하기 전에 붙여넣을 준비가 되지 않은 경우) 다음을 사용할 수 있습니다.블랙홀 레지스터 _.

"_dd예를 들어, 이렇게 하면 현재 행이 즉시 삭제되고 잊혀집니다.

사실 저는 이 레지스터를 자주 사용하지 않습니다. 일반 레지스터(알파벳순 레지스터)에 저장하는 것보다 더 적은 키 입력이 필요하지 않으며, 일반 레지스터에 저장하는 경우 최소한 삭제한 행은 필요한 경우 레지스터를 덮어쓸 때까지 계속 사용할 수 있습니다.

dd삭제할 때 다른 레지스터를 사용하는 것을 잊어버리는 경향이 있는 경우 다음과 같은 래퍼 매크로를 정의할 수 있습니다 :noremap dd "add.

답변4

(현재) 허용된 답변의 주석에서 지적했듯이 이를 수행하는 정식 방법은 레지스터 0( "0)을 사용하는 것입니다. 레지스터 0은 항상 마지막 복사본을 포함하고 d및에 의해 덮어쓰여 지지 않습니다 x. 따라서 "0p그 동안 편집된 내용은 항상 복사한 내용에 저장됩니다.

관련 정보