Я не знаю tcsh, но если связки работают там так же, то последующие аргументы просто дописываются к команде, т.е. в первом случае будет запущена команда sdcv -n >> file_name {arguments}, во втором sdcv -n >> file_name && vim file_name. Tcsh, как и zsh, видимо, поддерживает указание перенаправлений в любом месте командной строки, поэтому первая команда эквивалентна sdcv -n {arguments} >> file_name и нормально работает. Но во втором случае дополнительные аргументы получает vim, а не sdcv, поэтому сначала вы видите sdcv, которая, вероятно, в отсутствии слова, введённого из командной строки, ожидает его из стандартного ввода (её вы завершаете по <C-c>), а потом vim, который словил все остальные аргументы.
Я не знаю tcsh, но если связки работают там так же, то последующие аргументы просто дописываются к команде, т.е. в первом случае будет запущена команда sdcv -n >> file_name {arguments}, во втором sdcv -n >> file_name && vim file_name. Tcsh, как и zsh, видимо, поддерживает указание перенаправлений в любом месте командной строки, поэтому первая команда эквивалентна sdcv -n {arguments} >> file_name и нормально работает. Но во втором случае дополнительные аргументы получает vim, а не sdcv, поэтому сначала вы видите sdcv, которая, вероятно, в отсутствии слова, введённого из командной строки, ожидает его из стандартного ввода (её вы завершаете по <C-c>), а потом vim, который словил все остальные аргументы.
В этих рассуждениях уже вижу две ошибки:
В случае zsh, Vim не выполниться после <C-c>, потому что предыдущий процесс завершится с ошибкой (если только sdcv не ловит и не обрабатывает <C-c> самостоятельно).
В случае zsh, Vim не должен висеть в процессах пока предыдущий процесс не выполнен.