Versuche dies:
vim -e $1 -c "set nobackup" $ -c "colorscheme moria" \ -c TOhtml \ -c wq -c q
Eine Erläuterung der Funktionsweise finden Sie auf der Manpage bash (1) im Abschnitt zu Parametererweiterung.
Legt fest, ob die Zeilennummern nach dem Start von vim angezeigt werden (in einem nicht interaktiven Modus).
Ein Shell-Skript enthält den folgenden Code:
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
Das Skript ( src2png.sh
) wird aufgerufen als:
./src2png.sh src2png.sh
Und auch als:
./src2png.sh src2png.sh numbers
Im zweiten Fall sollte vim mit Zahlen auf der linken Seite beginnen. (Das Wort "Zahlen" kann alles sein, solange es nicht leer ist.) Ich habe mehrere syntaktische Variationen ohne Erfolg ausprobiert:
NUMBERS=-c "set number" NUMBERS="-c set number" NUMBERS="-c 'set number'" NUMBERS="-c \":set number\""
All dies scheitert beim Start von vim aus verschiedenen Gründen. (Normalerweise "Fehler beim Verarbeiten der Befehlszeile:".)
Wie lautet die korrekte Syntax, damit ein zweiter Befehlszeilenparameter steuern kann, ob vim mit angezeigten Zeilennummern beginnt oder nicht?
Vielen Dank!
Versuche dies:
vim -e $1 -c "set nobackup" $ -c "colorscheme moria" \ -c TOhtml \ -c wq -c q
Eine Erläuterung der Funktionsweise finden Sie auf der Manpage bash (1) im Abschnitt zu Parametererweiterung.
Versuchen Sie es NUMBERS
mit einem Array:
NUMBERS=(-c set number)
oder NUMBERS
als flag verwenden und tun:
NUMBERS=flag if [ "$2" == "" ]; then NUMBERS= fi vim -e $1 -c "set nobackup" $ -c ":colorscheme moria" \
Siehe auch BashFAQ / 050 .
Ein einfacher Hack wäre, sh -c wie folgt zu verwenden:
NUMBERS="-c ':set number'" sh -c "vim $NUMBERS"
Dadurch wird ein weiterer Shell-Prozess gestartet. Wenn Sie sich also Sorgen über den Overhead machen, können Sie stattdessen versuchen, $ NUMBERS entweder ": set number" oder eine No-Operation wie ":" zu verwenden.
vim -c "$NUMBERS"