Попробуй это:
vim -e $1 -c "set nobackup" $ -c "colorscheme moria" \ -c TOhtml \ -c wq -c q
См. Справочную страницу bash (1), раздел, посвященный расширению параметров, для объяснения того, как это работает.
Управляет отображением номеров строк после запуска vim (в неинтерактивном режиме).
Сценарий оболочки содержит следующий код:
echo Converting $1 to $1.html... NUMBERS="-c set number" if [ "$2" == "" ]; then NUMBERS= fi vim -e $1 -c "set nobackup" $NUMBERS -c ":colorscheme moria" \ -c :TOhtml \ -c wq -c :q
Скрипт ( src2png.sh
) вызывается как:
./src2png.sh src2png.sh
И также вызывается как:
./src2png.sh src2png.sh numbers
Во втором случае vim должен начинаться с цифр в левой части. (Слово «числа» может быть любым, если оно не пустое.) Я попробовал несколько синтаксических вариантов без успеха:
NUMBERS=-c "set number" NUMBERS="-c set number" NUMBERS="-c 'set number'" NUMBERS="-c \":set number\""
Все они терпят неудачу при запуске vim по разным причинам. (Обычно «Обнаружена ошибка при обработке командной строки:».)
Каков правильный синтаксис, позволяющий второму параметру командной строки контролировать, начинается ли vim с отображаемых номеров строк?
Спасибо!
Попробуй это:
vim -e $1 -c "set nobackup" $ -c "colorscheme moria" \ -c TOhtml \ -c wq -c q
См. Справочную страницу bash (1), раздел, посвященный расширению параметров, для объяснения того, как это работает.
Попробуйте установить NUMBERS
в массив:
NUMBERS=(-c set number)
или используйте NUMBERS
в качестве флага и сделайте:
NUMBERS=flag if [ "$2" == "" ]; then NUMBERS= fi vim -e $1 -c "set nobackup" $ -c ":colorscheme moria" \
Пожалуйста, смотрите также BashFAQ / 050 .
Простым хаком было бы использовать sh -c, вот так:
NUMBERS="-c ':set number'" sh -c "vim $NUMBERS"
Это запускает другой процесс оболочки, поэтому, если вы беспокоитесь о накладных расходах, вместо этого вы можете попытаться использовать $ NUMBERS либо с «: set number», либо без операции, например «:», таким образом:
vim -c "$NUMBERS"