Exportar EDITOR com uma flag

3

Estou usando o Zsh e alguns CLI, como gcloud load files do Google via $EDITOR .

Para mim, defini isso como:

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

Com aliases para esse editor usando o -v flag que carrega o vim no terminal:

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

Isso funciona, mas quando o gcloud CLI chama $EDITOR , ele não tem o -v flag, portanto, ele é aberto em um novo terminal. Pensei que poderia alterar isso, adicionando o sinalizador -v aqui:

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

No entanto, quando tento e executo isso na linha de comando, obtenho:

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

É possível incluir um sinalizador ao exportar meu $EDITOR ?

    
por Anthony 08.03.2017 / 17:24

1 resposta

10

Use um wrapper de shell fino:

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

E armazene isso em algum lugar (em algum lugar em PATH ou talvez em ~/libexec ou qualquer outro) e defina esse wrapper como o valor EDITOR .

Com o ZSH, pode-se forçar a expansão:

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

Como detalhado em zshexpn(1) :

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

Observe que o ZSH contradiz outras ocorrências sobre não fazendo SH_WORD_SPLIT por padrão. O padrão POSIX, por sinal, é um poderoso rake que muitos usaram incorretamente e, assim, pisou e foi golpeado por:

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

No entanto, vários outros programas, possivelmente aqueles que não sabem como realizar a divisão da palavra shell, podem chamar EDITOR . A opção mais portátil para EDITOR é, portanto, algo que pode ser executado diretamente por uma chamada exec(3) e, se necessário, esse script pode adicionar qualquer sinalizador para o editor real. Portanto, um invólucro fino e fino.

    
por 08.03.2017 / 17:28

Tags