Já faz um tempo que não preciso fazer nenhum código semelhante a HTML Vim
, mas recentemente me deparei com isso. Digamos que estou escrevendo algo simples HTML
:
<html><head><title>This is a title</title></head></html>
Como escrevo essas tags de fechamento para título, cabeçalho e html rapidamente? Eu sinto que estou perdendo uma maneira realmente simples aqui que não envolve eu escrevendo todos eles um por um.
É claro que posso usar CtrlPpara preencher automaticamente os nomes de tags individuais, mas o que me atrai no teclado do meu laptop é acertar os colchetes e a barra.
html
xml
vim
autocomplete
wds
fonte
fonte
Ctrl-_
, mas isso torna a fonte pequena do meu terminal.Acho que usar o plugin xmledit é muito útil. ele adiciona duas funcionalidades:
<p>
), ele se expande a marca, logo que você digite o fechamento>
em<p></p>
e coloca o cursor dentro da tag no modo de inserção.Se você digitar imediatamente outro
>
( por exemplo, digitar<p>>
), ele o expandirá para<p>
</p>
e coloca o cursor dentro da tag, recuado uma vez, no modo de inserção.
O plugin xml vim adiciona dobradura de código e correspondência de tag aninhada a esses recursos.
Claro, você não precisa se preocupar com o fechamento de tags se escrever seu conteúdo HTML em Markdown e usar
%!
para filtrar seu buffer Vim através do processador Markdown de sua escolha :)fonte
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Mas só funciona ao editar arquivos .xml. Quando o arquivo ext é .html ou .htm, ele não funciona.Eu gosto de coisas mínimas,
fonte
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
ao final deste para colocar o cursor de volta dentro da tag.,/
para fechar a tagAcho mais conveniente fazer o vim escrever as tags de abertura e fechamento para mim, em vez de apenas a de fechamento. Você pode usar um excelente plugin ragtag de Tim Pope. O uso se parece com isto (deixe | marcar a posição do cursor) que você digita:
pressione CTRL+x SPACE
e você consegue
Você também pode usar CTRL+ em x ENTERvez de CTRL+ x SPACE, e obterá
Ragtag pode fazer mais do que apenas isso (por exemplo, inserir <% = coisas em torno deste%> ou DOCTYPE). Você provavelmente deseja verificar outros plug-ins do autor de ragtag , especialmente surround .
fonte
ragtag
: vim.org/scripts/script.php?script_id=1896Se você estiver fazendo algo elaborado, a animação é muito boa.
Um exemplo de seu site:
ul > li.item-$*3
expande para:com um
<C-e>
.Para fazer o exemplo dado na pergunta,
rendimentos
fonte
Também existe um plugin zencoding vim: https://github.com/mattn/zencoding-vim
tutorial: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Atualização: agora chamado Emmet : http://emmet.io/
Um trecho do tutorial:
fonte
Mapeamento
Eu gosto de ter minhas tags de bloco (ao invés de inline) fechadas imediatamente e com um atalho o mais simples possível (eu gosto de evitar teclas especiais como CTRLonde for possível, embora eu use
closetag.vim
para fechar minhas tags inline.) Eu gosto de usar isso atalho ao iniciar blocos de tags (graças a @kimilhee; esta é uma saída de sua resposta):Uso de amostra
Tipo-
Resultado-
onde
|
indica a posição do cursor.Explicação
inoremap
significa criar o mapeamento no modo de inserção><Tab>
significa colchetes angulares de fechamento e um caractere de tabulação; isto é o que combina><Esc>
significa terminar a primeira tag e escapar da inserção no modo normalF<
significa encontrar o último colchete angular de abertural
significa mover o cursor para a direita (não copie o colchete angular de abertura)yt>
significa puxar da posição do cursor até antes do próximo colchete angular de fechamento (ou seja, copiar o conteúdo das tags)o</
significa iniciar uma nova linha no modo de inserção e adicionar um colchete angular de abertura e uma barra<C-r>"
significa colar no modo de inserção a partir do registro padrão ("
)><Esc>
significa fechar a tag de fechamento e sair do modo de inserçãoO<Space>
significa iniciar uma nova linha no modo de inserção acima do cursor e inserir um espaçofonte
l
significava "direita" e não "esquerda", haha ... que erro engraçado. O que você achou da minha postagem? Percebi que você não votou positivamente.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Eu removo0<Space>
e adicioneikJxi
. Vá 1 etapa acima, concatene duas linhas, remova um caractere e vá para o modo de inserção.Verificação de saída
vim-closetag
É um script muito simples (também disponível como um
vundle
plugin) que fecha (X) tags HTML para você. DeREADME
:Nota:
|
o cursor está aquifonte
allml (agora Ragtag) e Omni-completar (<CX> <CO>) não funcionam em um arquivo como .py ou .java.
se você quiser fechar a tag automaticamente nesses arquivos, você pode mapear assim.
(^ R é Contrl + R: você pode digitar assim Control + v e então Control + r)
(| é a posição do cursor) agora se você digitar ..
<p> abcde |
e digite ^ j
então feche a tag assim ..
<p> abcde </p> |
fonte
Aqui está outra solução simples baseada na escrita da Web facilmente encontrada:
Fechamento automático de uma tag HTML
:iabbrev </ </<C-X><C-O>
Ativando a conclusão
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
fonte
Com base na excelente resposta de @KeithPinson (desculpe, ainda não há pontos de reputação suficientes para comentar sua resposta), esta alternativa impedirá que o preenchimento automático copie qualquer coisa extra que possa estar dentro da tag html (por exemplo, classes, ids, etc. .) mas não deve ser copiado para a tag de fechamento.
ATUALIZAÇÃO Eu atualizei minha resposta para trabalhar com
filename.html.erb
arquivos.Percebi que minha resposta original não funcionou em arquivos comumente usados em visualizações Rails, como
some_file.html.erb
quando eu estava usando ruby embutido (por exemplo<p>Year: <%= @year %><p>
). O código abaixo irá trabalhar com.html.erb
arquivos.Uso de amostra
Tipo:
Resultado:
onde
|
indica a posição do cursorE como exemplo de adição da tag de fechamento embutida em vez do estilo de bloco:
Uso de amostra
Tipo:
Resultado:
onde
|
indica a posição do cursorÉ verdade que ambos os exemplos acima contam
>[Tab]
para sinalizar uma tag de fechamento (o que significa que você teria que escolher o estilo embutido ou bloco). Pessoalmente, eu uso o estilo de bloco com>[Tab]
e o estilo embutido com>>
.fonte