Alterar as opções de autoindent <li> no VIM

3

Por padrão, o Vim parece não querer recuar o conteúdo dentro de <li> tags, embora ele seja usado corretamente para a maioria das outras tags HTML.

Por exemplo, se eu começar com este código:

<ul>
<li>
foo
</li>
<li>
bar
</li>
</ul>

e tenho autoindent vim eu recebo:

<ul>
  <li>
  foo
  </li>
  <li>
  bar
  </li>
</ul>

No entanto, o que eu realmente quero é isso:

<ul>
  <li>
    foo
  </li>
  <li>
    bar
  </li>
</ul>

É meio chato quando se escreve um novo código para que ele seja autoindente após a maioria das tags de abertura, mas não este, embora seja fácil o suficiente para contornar. Para mim, isso é quando uso o vim para autoformatar um grande HTML gerado com o qual estou tentando brincar (tentando fazer mock de algumas mudanças na interface usando a fonte gerada).

Existe alguma maneira fácil de alterar este comportamento autoindent para que ele trata <li> como qualquer outra tag de abertura, e recuar o conteúdo?

Herms
fonte

Respostas:

6

Não vejo uma maneira fácil de fazer isso, mas essa solução não é muito difícil.

  1. Copie $ VIMRUNTIME / indent / html.vim para ~ / .vim / indent / html.vim se estiver no Unix ou em ~ / vimfiles / indent / html.vim se estiver no Windows.
  2. Edite sua cópia do indent / html.vim, adicionando esta linha,

    call <SID>HtmlIndentPush('li')

    à lista de chamadas semelhantes já existentes nesse arquivo.

Isso deve resolver.

garyjohn
fonte
Eu acho que cai sob a categoria de "solução fácil". Achei que tinha que ser algo assim, mas não tinha certeza de como o recuo foi definido. Trabalhou perfeitamente.
Herms
Eu estou usando construído em vim no OSX. Alguma ideia de que $ VIMRUNTIME é? vim está em / usr / bin / (não é um symlink)
John Hinnegan
1
@ JohnHinnegan: Você deve ser capaz de abrir o Vim e executar :echo $VIMRUNTIME.
garyjohn
2

Se alguém encontrar essa pergunta como eu fiz, via google, há outra solução usando Tim Pope rag tag extensão. Isso adicionará automaticamente os recuos corretos e atualizará algumas outras tags para HTML5.

Sean Farley
fonte
Desculpe, eu instalei o plugin que você mencionou, mas o <li> não são recuados corretamente para mim .. eu copiei ragtag.vim para o meu ~/.vim/plugin/ diretório, reinicie o vim e gg=G
user35538