월별 글 목록: 2021년 6월월

vim : * 만 * y 복사 할 수 있습니까? 수용하지 않은 한

나는 vim을 좋아하는 것을 배우고 있지만, 아직 완전히 수용하지 않은 한 가지는 복사 및 붙여 넣기 상황입니다. 머글 텍스트 편집기에서 나는 것 CtrlC삭제 텍스트 다음 편집 /의 조각을 복사 한 다음 다른 곳에서 텍스트를 붙여 넣습니다. 그러나 정력에 나는 텍스트를 복사 한 후 때문에이 작업을 수행 할 수없는 y텍스트가 종종 포함, 수정, dx내 원래의 텍스트를 말살한다.

만드는 방법이 있나요 dx텍스트를 복사하지? 그렇지 않으면 어떻게 이러한 vim 기능을 사용해야합니까?



답변

9 개의 이전 yank는를 1통해 호출 된 레지스터에 저장됩니다 9. 당신과 함께 다음 – 투 – 마지막 십중팔구 불러올 수 있습니다 "1p이전 한 "2p등등하고있다. 이 명령 :reg은 붙여 넣기에 사용 가능한 레지스터를 보여줍니다.

k 크가 더 오래 지속되도록 하려면 문자 레지스터를 사용하십시오 .

더 명확하지 않은 yank 관련 명령을 보려면 :help "설명서 에서 를 읽으십시오 .


답변

당신이 말하는 명령은 소위 “명명되지 않은”레지스터를 사용합니다. 매우 짧은 기간 동안 만 사용해야합니다. “나는 이것을 여기에서 잡아 당겨서 저기 놓을 것이다”일종의 것들.

가서 다른 일을하는 동안 몇 초 이상 무언가를 붙잡고 싶다면, 명명 된 레지스터를 사용해야합니다.

예를 들어, " a y y커서가있는 줄을 a레지스터 에 넣습니다 . a레지스터 와 관련된 다른 명령을 입력하지 않으면 아무 것도 실수로 클로버되지 않습니다 . 분, 시간, 심지어 며칠이 지난 후에 커서가 " a p있는 a레지스터 아래 의 해당 줄 사본을 삭제하도록 입력 할 수 있습니다 .

(이 정말 잘 작동하려면, 당신은 같은 라인을 가지고 있어야 set viminfo='50,\"1000당신의 ~/.vimrc빔 세션에서 레지스터 내용 등을 기억하도록 지시하는 파일. 그런 다음 십중팔구과 풋 사이에 휴가를 갈 수 있습니다!)

26 개의 명명 된 레지스터 (az)가 있습니다. 위에 표시된 대신 대문자로 제공하면 현재 레지스터 내용을 바꾸지 않고 추가합니다. 예를 들어, h한 번에 한 조각 씩 등록한 다음을 사용하여 한 번에 아래로 내리면 정말 복잡한 것을 만들 수 있습니다 " h p.

레지스터 이름은 선택 사항입니다. 이것은 이미 알고 있고 명명 된 레지스터를 사용할 수있는 곳에서 사용하는 많은 명령이있을 수 있음을 의미합니다. :help registers가능성에 대한 아이디어를 얻으려면 Vim에서 말 하십시오.

또한 Vi 찻잔을 얻으십시오 .


답변

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

당신이 할 경우 "_dd, 예를 들어, 현재 행은 즉시 삭제하고 잊혀 질 것입니다.

실제로이 레지스터는 자주 사용하지 않습니다. 범용 레지스터 (문자 레지스터)에 저장하는 것보다 키 입력이 적지 않으며, 범용 레지스터에 저장하는 경우 적어도 삭제 한 행은 레지스터를 덮어 쓸 때까지 계속 사용할 수 있습니다. 필요가 발생합니다.

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


답변

(현재) 허용되는 답변에 대한 의견에서 지적했듯이이를 수행하는 정식 방법은 레지스터 0 ( "0) 을 사용하는 것 입니다. 레지스터 0에는 항상 마지막 yank가 포함되며 dand로 덮어 쓰지 x않으므로 "0p그 동안 편집 한 내용에 관계없이 항상 yank 한 모든 것을 넣습니다.


답변