나는 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
(잘 작동하려면 ~/.vimrc
Vim 세션 전반에 걸쳐 등록된 콘텐츠 등을 기억하도록 지시하는 한 줄을 파일에 추가해야 합니다. 그런 다음 끌어서 놓기 사이에 잠시 쉬어도 됩니다!)
26개의 명명된 레지스터(az)가 있습니다. 위와 같이 대문자로 지정하는 경우 대체하지 않고 현재 레지스터 내용에 추가됩니다. 따라서 h
한 번에 하나의 조각을 등록한 다음 one-shot을 사용하여 모두 삭제하는 등 매우 복잡한 것을 만들 수 있습니다 " h p.
레지스터 이름은 선택 사항입니다. 즉, 명명된 레지스터를 사용하는 데 필요한 많은 명령을 이미 알고 있고 사용하고 있다는 의미입니다. :help registers
몇 가지 가능성에 대해 알아보려면 Vim과 대화하세요 .
반품,바이 머그 받기.
답변3
복사 레지스터를 변경하지 않고 d를 사용하여 텍스트를 삭제해야 하는 경우(예를 들어 텍스트를 복사했지만 다른 텍스트를 삭제하기 전에 붙여넣을 준비가 되지 않은 경우) 다음을 사용할 수 있습니다.블랙홀 레지스터 _
.
"_dd예를 들어, 이렇게 하면 현재 행이 즉시 삭제되고 잊혀집니다.
사실 저는 이 레지스터를 자주 사용하지 않습니다. 일반 레지스터(알파벳순 레지스터)에 저장하는 것보다 더 적은 키 입력이 필요하지 않으며, 일반 레지스터에 저장하는 경우 최소한 삭제한 행은 필요한 경우 레지스터를 덮어쓸 때까지 계속 사용할 수 있습니다.
dd삭제할 때 다른 레지스터를 사용하는 것을 잊어버리는 경향이 있는 경우 다음과 같은 래퍼 매크로를 정의할 수 있습니다 :noremap dd "add
.
답변4
(현재) 허용된 답변의 주석에서 지적했듯이 이를 수행하는 정식 방법은 레지스터 0( "0
)을 사용하는 것입니다. 레지스터 0은 항상 마지막 복사본을 포함하고 d
및에 의해 덮어쓰여 지지 않습니다 x
. 따라서 "0p
그 동안 편집된 내용은 항상 복사한 내용에 저장됩니다.