Вы можете bind
виджеты vi-{back,for}ward-blank-word
на Ctrl+{влево, вправо}`:
bindkey $'\E[1;5D' vi-backward-blank-word
bindkey $'\E[1;5C' vi-forward-blank-word
или переопределить {back,for}ward-word
виджеты, чтобы использовать другой WORDCHARS
(, чтобы это повлияло на другие привязки (, такие как Alt+{B,F} ), которые используют эти виджеты):
WORDCHARS='~!#$%^&*(){}[]<>?.+;-'
MOTION_WORDCHARS='~!#$%^&*(){}[]<>?.+;-/'
''{back,for}ward-word() WORDCHARS=$MOTION_WORDCHARS zle.$WIDGET
zle -N backward-word
zle -N forward-word
См. такжеinfo zsh select-word-style
структуру для динамического выбора стилей слов .
Вы также можете использовать его для выбора разных стилей слов для разных виджетов, например:
autoload -U select-word-style
zle -N select-word-style
bindkey '\ez' select-word-style
WORDCHARS='~!#$%^&*(){}[]<>?.+;-' # for the "normal" style
select-word-style normal
zstyle ':zle:*ward-word' word-style space
zstyle ':zle:backward-kill-word' word-style space
Вы получите стиль слова на основе «пробела» -для виджетов *ward-word
и backward-kill-word
и всего, что выбрано с помощью Alt+Z , изначально «обычный»,$WORDCHARS
-на основе стиля слова для других виджетов слова.
Возможно, это более простое решение, эмулирующее оболочку.:
$(eval mfn_lstf := $(shell cat ${MFN_LSTF}))
$(foreach mfn, ${mfn_lstf}, $(MAKE) -f mfd/${mfn} clean;)
И, следующие работы, без эмуляции оболочки:
if [ -s "$${MFN_LSTF}" ]; then \
while IFS= read -r mfn; do \
$(MAKE) -f "mfd/$${mfn}" clean; \
done < "$${MFN_LSTF}"; \
fi
Вы можете просто написать часть оболочки в рецепте.
clean:
F="$MF_NAMES_LIST" ;\
if [ -e "$$F" ] ; then \
for mfn in $$(cat "$$F") ; do \
$(MAKE) -f mfd/$${mfn} clean;\
done ; \
fi
Следует отметить, что если вы хотите, чтобы оболочка увидела доллар, вам нужно удвоить его, и что вы хотите, чтобы программа была одной логической строкой, поэтому make отдает ее одной оболочке.
GNUmake имеет расширение, позволяющее запускать весь рецепт в одной оболочке.
Чтение файла с помощью cat в цикле for не является лучшей практикой, например, если в файле есть пробелы, это пойдет не так, но я не исправляю это здесь, чтобы сохранить код ближе к оригиналу.