플래그가 포함된 편집기 내보내기

플래그가 포함된 편집기 내보내기

저는 Zsh와 Google과 같은 일부 CLI gcloud$EDITOR.

나를 위해 나는 그것을 다음과 같이 설정했습니다.

export EDITOR="/usr/local/bin/mvim"

해당 편집기의 별칭을 사용하여 -v플래그를 사용하여 터미널에 vim을 로드합니다.

 mac_vim="$EDITOR -v"
 alias vi=$mac_vim
 alias vim=$mac_vim
 alias v=$mac_vim

이는 작동하지만 gcloudCLI를 호출 하면 $EDITOR해당 플래그가 없으므로 -v새 터미널에서 열립니다. -v여기에 플래그를 추가하면 이를 변경할 수 있을 것 같습니다 .

export EDITOR="/usr/local/bin/mvim -v"

그러나 명령줄에서 실행하려고 하면 다음과 같은 결과가 나타납니다.

$EDITOR text.html
zsh: no such file or directory: /usr/local/bin/mvim -v

광산을 내보낼 때 플래그를 포함할 수 있나요 $EDITOR?

답변1

얇은 크러스트 래퍼를 사용하세요.

#!/bin/sh
exec /usr/local/bin/mvim -v "$@"

PATH어딘가에(어딘가 또는 어쩌면 다른 곳) 숨기고 ~/libexec해당 래퍼를 value 로 설정합니다 EDITOR.

ZSH를 사용하면 강제로 확장할 수 있습니다.

% EDITOR='echo -E'
% $EDITOR /etc/passwd
zsh: command not found: echo -E
% $=EDITOR /etc/passwd
/etc/passwd
% 

세부사항은 다음과 같습니다 zshexpn(1):

   ${=spec}
          Perform  word splitting using the rules for SH_WORD_SPLIT during

ZSH는 다음 문제에서 다른 셸과 충돌합니다.아니요SH_WORD_SPLIT기본적으로 실행됩니다. 그런데 POSIX 기본값은 꽤 좋은 레이크이고 많은 사람들이 이를 잘못 사용하여 밟히고 망치게 됩니다.

% DERP="/var /nish"
% ls $DERP
ls: cannot access /var /nish: No such file or directory
% sudo bash
# DERP="/var /nish"
# rm -rf $DERP 
...

그러나 쉘 토큰화를 수행하는 방법을 모르는 다양한 다른 프로그램을 호출할 수 있습니다 EDITOR. 가장 이식 가능한 옵션은 를 EDITOR호출하여 직접 수행할 수 있는 옵션이며 exec(3), 필요한 경우 스크립트는 실제로 편집기에 무엇이든 추가할 수 있습니다. 심벌 마크. 그래서 포장이 매우 얇습니다.

관련 정보