Qual é a diferença entre set e: set?

16

Eu estava olhando para o plugin sensível ao vim de Tim Pope e notei isso no README ...

Veja a fonte para a lista autorizada de recursos. (Não se preocupe, são principalmente :setchamadas.)

Quando olhei para a fonte, as :setchamadas são assim ...

set autoindent

Não há :antes do set.

Tenho certeza de que também vi :setnos exemplos .vimrcs.

Qual é a diferença?

Qual formulário devo usar no meu .vimrc?

Ethan
fonte

Respostas:

21

Um "script" nada mais faz do que executar uma sequência de comandos ex. Um "comando ex" é o que você digita quando usa :no Vim. Por exemplo :wq, :set wrap, :e file, etc, são todos os comandos ex.

O :não faz parte do comando; é apenas um pressionamento de tecla para iniciar o modo de linha de comando; nem sempre é necessário incluir o :, por exemplo, quando você liga vários comandos |, não precisa repetir :mais de uma vez. Por exemplo, :write | quitfuncionará bem.

Por conveniência, o :pode ser incluído. Isso ajuda na cópia / colagem e coisas do tipo, mas você não precisa. Não importa. De fato, todos os líderes :são simplesmente ignorados. :write,, writee :::::::::writesão todos equivalentes em termos de funcionalidade (embora obviamente não em termos de sanidade).

Geralmente, é útil incluir a :documentação in para esclarecer que esse é um comando ex. Por exemplo, wpode se referir ao :wcomando do modo normal ou wpara ir para a próxima palavra.

Observe que isso se aplica a tudo . Estruturas de controle como ife tambémendif são apenas ex comandos; você pode digitar algo como isto:

:if 1
:echo 'one'
:endif

da linha de comando do Vim muito bem; não há necessidade de um "script". Os scripts do Vim são muito "não mágicos" e "não especiais"; tudo o que você pode fazer a partir da linha de comando ex que você pode fazer em um script Vim e vice-versa.

Martin Tournoij
fonte
6

Não há diferença. Se o vim vir um :comando antes do vimrc (ou qualquer arquivo vimscript), ele será ignorado. Além disso, como mencionado acima, isso não é específico para o setcomando.

Normalmente, o :meio que o comando seria executado por você em vez de ser colocado no seu vimrc (ou outro arquivo vimscript) , mas isso geralmente depende do contexto. Pessoalmente, acho muito melhor não colocar os dois pontos antes dos comandos nos arquivos vimscript, e isso parece ser o que a maioria das pessoas também faz.

Para mais informações, consulte :help script.

EvergreenTree
fonte
:h scriptou :h vim-script-intro(equivalente)
VanLaser 05/03