Используйте тонкую обертку оболочки:
#!/bin/sh
exec /usr/local/bin/mvim -v "$@"
И спрячьте ее где-нибудь (где-нибудь в PATH
или, может быть, в ~/libexec
или еще где-нибудь), а затем установите эту обертку в качестве значения 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)
, и при необходимости этот сценарий может добавить любые флаги для собственно редактора. Следовательно, это тонкая обертка.
Если это записывает ожидаемые команды cp, удалите echo
из строки:
find . -name '*.html' -exec /bin/sh -c 'file="{}"; echo cp -prv "$file" "projects/html_files/${file##*/}(${file%/*})"' \;