Сделайте это функцией оболочки, чтобы вы могли потерять внешние кавычки.
groe() {
vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
}
Это должно вызвать vim
с аргументами -c
, нормальный "+ p1Gdddd"
, -c
, : % s / \ n /
, -c
, нормальный "gVGgJy"
, -cq!
. «$ @»
в расширяется до параметров, которые вы указали функции, поэтому groe foo.txt
должен работать.
Make делает это, используя свои встроенные правила . В них, в частности, рассказывается, как компилировать код C и как связывать однообъектные программы.
На самом деле вам даже не нужен Makefile:
make test
будет работать без него.
Чтобы увидеть скрытые правила, которые делают все это возможным, используйте параметр -p
без файла Makefile:
make -p -f /dev/null
Как указано в alephzero , Make построил- в правилах очень давно (если не всегда); Первая версия Стюарта Фельдмана в Unix V7 определяет их в files.c
, а его статья 1979 года упоминает их. Они также являются частью спецификации POSIX . (Это не означает, что все реализации Make поддерживают их - старая версия Borland Make для DOS не поддерживает их, по крайней мере, до версии 3.0.)