vim
명령줄 모드를 사용하여 특정 레지스터의 값을 삽입하는 데 문제가 있습니다.
normal
모드에서는 레지스터 값을 현재 라인 아래에 배치하는 시퀀스를 입력할 수 있습니다 ."*p
"*
"*put
명령줄에 명령을 입력하려고 하면 아무 일도 일어나지 않습니다. 반면에 방금 명령을 실행하면 put
이름이 지정되지 않은 레지스터의 값이 배치됩니다.
그렇다면 문제는 명령줄 모드를 사용하여 명명된 레지스터의 내용을 어떻게 입력할 수 있느냐는 것입니다.
편집 #1
몇 가지 추가 테스트를 거친 후 해결 방법을 찾았습니다.
qz1"cpq
먼저 시퀀스에서 붙여넣기 레지스터를 캡처할 위치를 사용합니다.
qz -> start recording into register z
1 -> goto line 1
"cp -> put content of register c
q -> end recording
매크로를 :@z
실행하여 필요한 단계를 수행할 수 있습니다. 다음과 함께 사용하는 경우 bufdo
:
:bufdo execute "normal @z"
이 레지스터는 열려 있는 모든 버퍼에 새 라인으로 추가될 수 있습니다.
이것이 작업 방법이기는 하지만 매크로 없이 동일한 작업을 수행하는 더 효율적인 방법이 있다고 생각합니다.
답변1
이를 수행하려면 다음 명령줄 버전을 사용할 수 있습니다 put
.
:put z
전체 구문은 을 :[line]pu[t] [x]
참조하십시오 :help :put
.
참고 사항: Vim 괴짜의 굴은 다음과 같습니다.이 방법.