Lança o VIM e mostra, ou oculta, números de linha

3

Antecedentes

Controle se os números das linhas são exibidos após o início do vim (em um modo não interativo).

Problema

Um script de shell contém o seguinte código:

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

O script ( src2png.sh ) é invocado como:

./src2png.sh src2png.sh

E também chamado como:

./src2png.sh src2png.sh numbers

No segundo caso, o vim deve ser iniciado com números ao longo do lado esquerdo. (A palavra "números" pode ser qualquer coisa, desde que não esteja vazia.) Tentei várias variações sintáticas sem sucesso:

NUMBERS=-c "set number"
NUMBERS="-c set number"
NUMBERS="-c 'set number'"
NUMBERS="-c \":set number\""

Tudo isso falha ao iniciar o vim, por vários motivos. (Geralmente, "Erro detectado durante o processamento da linha de comando:".)

Pergunta

Qual é a sintaxe correta para permitir que um segundo parâmetro de linha de comando controle se o vim começa ou não com números de linha exibidos?

Obrigado!

    
por Dave Jarvis 28.01.2011 / 00:07

3 respostas

4

Tente isto:

vim -e $1 -c "set nobackup" ${2:+"-c set number"} -c "colorscheme moria" \
-c TOhtml \
-c wq -c q

Veja a página man do bash (1), a seção sobre Expansão de Parâmetros para uma explicação de como isso funciona.

    
por 28.01.2011 / 00:59
1

Tente definir NUMBERS como uma matriz:

NUMBERS=(-c set number)

ou use NUMBERS como sinalizador e faça:

NUMBERS=flag
if [ "$2" == "" ]; then
    NUMBERS=
fi

vim -e $1 -c "set nobackup" ${NUMBERS:+-c set number} -c ":colorscheme moria" \

Por favor, veja também BashFAQ / 050 .

    
por 28.01.2011 / 01:45
0

Um simples hack seria usar sh -c, assim:

NUMBERS="-c ':set number'"
sh -c "vim $NUMBERS"

Isso inicia outro processo de shell, portanto, se você estiver preocupado com a sobrecarga, tente fazer com que $ NUMBERS contenham ": set number" ou nenhuma operação como ":", assim:

vim -c "$NUMBERS"
    
por 28.01.2011 / 00:21