clean: $(SRCDIR).subdir-clean
 
 sandbox:
-       @make $(MFLAGS) RUNPREFIX=$(CURDIR)/sandbox/usr PREFIX=/usr DESTDIR=./sandbox install
+       $(Q)$(MAKE) $(MFLAGS) RUNPREFIX=$(CURDIR)/sandbox/usr PREFIX=/usr DESTDIR=./sandbox install
 
 runsandbox: sandbox
        sandbox/usr/bin/vimb
 
 %.subdir-all:
-       @$(MAKE) $(MFLAGS) -C $*
+       $(Q)$(MAKE) $(MFLAGS) -C $*
 
 %.subdir-clean:
-       @$(MAKE) $(MFLAGS) -C $* clean
+       $(Q)$(MAKE) $(MFLAGS) -C $* clean
 
 .PHONY: all options install uninstall clean sandbox runsandbox
 
        $(RM) vimb *.o scripts/scripts.h
 
 vimb: $(OBJ)
-       $(CC) $(LDFLAGS) $(OBJ) -o $@
+       $(Q)echo "${CC} $@"
+       $(Q)$(CC) $(LDFLAGS) $(OBJ) -o $@
 
 $(OBJ): config.h $(BASEDIR)/config.mk scripts/scripts.h
 
 -include $(OBJ:.o=.d)
 
 config.h:
-       @echo create $@ from config.def.h
-       @cp config.def.h $@
+       $(Q)echo create $@ from config.def.h
+       $(Q)cp config.def.h $@
 
 scripts/scripts.h: $(JSFILES)
-       $(RM) $@
-       @echo "create $@ from *.js"
-       @for file in $(JSFILES); do \
+       $(Q)$(RM) $@
+       $(Q)echo "create $@ from *.js"
+       $(Q)for file in $(JSFILES); do \
                ./scripts/js2h.sh $$file >> $@; \
        done
 
 %.o: %.c
-       @echo "${CC} $@"
-       @$(CC) $(CFLAGS) -c -o $@ $<
+       $(Q)echo "${CC} $@"
+       $(Q)$(CC) $(CFLAGS) -c -o $@ $<
 
 %.subdir-all: config.h
-       @$(MAKE) $(MFLAGS) -C $*
+       $(Q)$(MAKE) $(MFLAGS) -C $*
 
 %.subdir-clean:
-       @$(MAKE) $(MFLAGS) -C $* clean
+       $(Q)$(MAKE) $(MFLAGS) -C $* clean
 
 .PHONY: all clean
 
        $(RM) $(EXTTARGET) *.lo
 
 $(EXTTARGET): $(OBJ)
-       @echo "$(CC) $@"
-       @$(CC) $(EXTLDFLAGS) ${OBJ} -o $@
+       $(Q)echo "$(CC) $@"
+       $(Q)$(CC) $(EXTLDFLAGS) ${OBJ} -o $@
 
 %.lo: %.c
-       @echo "${CC} $@"
-       @$(CC) $(EXTCFLAGS) -fPIC -c -o $@ $<
+       $(Q)echo "${CC} $@"
+       $(Q)$(CC) $(EXTCFLAGS) -fPIC -c -o $@ $<
 
 .PHONY: all clean