: r! date 및 기타 셸 명령을 사용할 때 Vim에서 줄 바꿈을 어떻게 방지합니까?


0

날짜를 삽입 할 때 대부분의 경우 줄 중간에 날짜를 입력하려고합니다. 기본적 :r!으로 삽입 풍미는 항상 새로운 줄에 결과를 넣는 것처럼 보입니다 . 대부분의 쉘 명령이 명령 결과를 표시하기 전에 줄 바꿈을 출력하기 때문에 이것은 나에게 의미가 있으며, 이것은 터미널에서 확실히 바람직합니다. Vim에서와 같은 작은 명령을 위해 껍질을 벗기는 경우 date +%x이것은 내가 선호하는 행동이 아닙니다. 이 문제를 어떻게 해결합니까?

답변:


2

삽입 모드에서는 Ctrl-R=현재 커서 위치에 표현식을 삽입하는 데 사용할 수 있습니다 .

예를 들어 system()함수를 사용할 수 있습니다 . 불행히도 이것은 출력의 결과 system()에 적어도 마지막 줄 바꿈이 추가되어 입력 후 줄이 끊어지기 때문에 문제의 절반 만 해결 합니다. 이 마지막 줄 바꿈 을 피하는 방법에 대한 해결책은 vi.stackexchange of minesystem() 에서이 답변을 살펴보십시오 .

(예를 들어 Ctrl-R=systemlist ( 'date') [0] Enter)를 사용할 수 있습니다.


현재 커서 위치에 날짜를 삽입하는 다른 방법은 Ctrl-R=strftime ( '% c')를 사용하는 것입니다.Enter

Ctrl-R=컨텐츠를 삽입하기 위해 표현식 레지스터 를 사용하고 있습니다. 이 :help i_ctrl-r명령으로 자세한 내용을 확인 하거나 appspot의 설명서를 볼 수 있습니다.


0

쉘 문제가 일반적으로 줄 바꿈 으로 끝나는 것이 아니라 문제는 read라인 지향 명령 (예 : ex 명령)이라고 생각합니다. ed1970 년대 의 원래 버전으로 존재 하기 전에 존재했으며, 일반적인 사용 사례는 한 파일에서 다른 파일로 많은 행 (예 : C 함수 또는 텍스트 단락)을 읽는 것이 었습니다. 대부분의 사용자는 대부분 새로운 라인을 별도의 라인으로 삽입하고 싶었습니다.:r!command

이를 수행하여이를 확인 / 시연 할 수 있습니다 :r!printf Tuesday. 짝수하지만 printf Tuesday명령 (지정하지 않았기 때문에 줄 바꿈을 기록하지 않습니다 \n), 당신은 얻을 것이다 Tuesday모두 한 줄에 단독으로.

아마도 가장 간단한 해결 방법은하는 것입니다 i Enter Esc(현재 행을 중단하기), -또는 k다시 라인까지 이동 한 다음 작업을 수행 한 후,과 에 다시 함께 라인. 이것이 자주하는 일이라면 매크로를 매핑하는 것이 좋습니다.:r!commandJJoin

공개 : 나는 vi합리적으로 잘 알고 있지만 vim배우지 못한 것들이 많이 있습니다. 에서 더 쉬운 방법이있을 수 있습니다 vim.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.