Se você usar YASnippet no modo xml, ele já contém um trecho para a funcionalidade que você pede.
Digite o seguinte
tag
pressione Aba e escolha <tag>...</tag>
para uma tag XML in-line ou <tag>\n...\n</tag>
para uma tag em sua própria linha e o que você digitou se transforma
<tag></tag>
ou
<tag>
</tag>
respectivamente. Como o que você digitou se transforma em ou o nome da tag de abertura está marcado e você pode digitar o nome da tag que quiser e também será copiado para a tag de fechamento. Quando terminar de inserir o nome da tag, pressione Aba e o cursor é colocado entre as tags para que você possa inserir conteúdo na tag. Quando terminar de inserir o conteúdo na tag que você pressiona Aba novamente para posicionar o cursor após a tag de fechamento.
Observe que, se você quiser personalizar o comportamento desses snippets, será fácil. Use o menu YASnippet para encontrar os trechos em questão e, em seguida, edite-os para atender às suas necessidades.
Para obter os ditos fragmentos em qualquer outro modo, você pode criá-los para esse modo fazendo o seguinte:
Adicione o seguinte ao seu .emacs:
(setq yas/root-directory "~/.emacs.d/mysnippets"); Develop and keep personal snippets under ~/emacs.d/mysnippets
(yas/load-directory yas/root-directory); Load the snippets
Se você preferir manter seu trecho em outro diretório, vá em frente e escolha outro.
Entre no modo em que você quer os trechos.
- Faz M x
yas/new-snippet
.
- Digite o nome
tag.1l
- Agora você terá a chance de editar o snippet. Marque tudo fazendo Cxh , então mate-o por C-w .
Agora você terá um snippet vazio. Cole o seguinte nele e certifique-se de que o snippet termine depois $0
e não em uma nova linha :
#name: <tag>...</tag>
#key: tag
# --
<${1:tag}>$2</$1>$0
Faz C-c C-c para salvar e carregar o snippet.
Siga os passos de 3 a 7, mas use o nome tag.2l
e, em vez disso, cole o seguinte:
#name: <tag> \n...\n</tag>
#key: tag
# --
<${1:tag}>
$2
</$1>$0
Note que o yasnippet chave usa para expansão, Aba , está ligado a outra função no modo markdown por padrão. Assim, você tem que usar uma correção como http://calas.github.com/2009/11/20/using-yasnippets-in-markdown-mode.html ou ligar yas/expand
para uma chave de sua preferência.
A animação a seguir mostra como o primeiro snippet funciona: