출력을 명령줄 편집기로 파이프하여 다음 명령 실행

출력을 명령줄 편집기로 파이프하여 다음 명령 실행

나는 사용해왔다

sudo find / -iname '*foo*' 2>/dev/null | vim

포함된 디렉터리/파일 목록을 가져온 foo다음 이 목록을 확인하고 편집한 후 vim에 여러 가지 새로운 명령을 작성하세요.

vim에 명령을 작성한 후 작성한 내용을 복사하고 vim을 종료한 다음 새 명령줄에 붙여넣습니다.

Vim은 내 Cx Ce 명령줄 편집기입니다.

:wq이 vim 세션 내에서 명령줄을 버퍼로 자동으로 채우 도록 할 수 있나요 ?

vim을 시작하는 대신 Cx Ce를 사용할 것이기 때문입니다 vim.

파이프 입력을 사용하여 Cx Ce vim 세션을 시작하는 방법은 무엇입니까?

답변1

vipe(from )을 다음과 같이 사용할 수 있습니다 moreutils.

sudo find / -iname '*foo*' 2>/dev/null | vipe | "$SHELL"

여기서 vipe파이프된 입력을 편집한 다음 원하는 셸에 제공할 수 있습니다.

또는:

sudo find / -iname '*foo*' 2>/dev/null | vipe | xclip -sel c

편집된 파이프라인을 CLIPBOARD X11 선택 항목에 저장합니다.

vipe에 저장된 편집기를 실행 $VISUAL하거나, 설정되지 않은 $EDITOR경우 $VISUAL또는 vi둘 다를 실행합니다.

해당 편집 내용을 쉘 기록에 직접 푸시하려면 zsh다음을 수행할 수 있습니다.

print -rs -- "$(sudo find / -iname '*foo*' 2>/dev/null | vipe)"

(그리고 키를 사용하여 불러옵니다 Up).

쉘의 편집 버퍼 에 직접 넣으려면 zsh여전히 .print -rsprint -rz

또는 없는 경우 vipe:

(){vim $1 && print -rz -- "$(<$1)"} =(sudo find / -iname '*foo*' 2> /dev/null)

예를 들어 다음과 같은 함수를 만들 수 있습니다.

vif sudovif() {
  () {
    vim $1 &&
      print -rz -- "$(<$1)"
  } =(${0%vif} find "$@")
}
vif / -iname '*foo*'

관련 정보