Como definir um atalho (combinação de teclas) para inserir “tag / tag” no Emacs?

3

Eu quero definir um atalho para inserir pares de tags XML. Pressionando a combinação de teclas key1 - key2 , que deve solicitar a inserção de um nome de tag, por exemplo,. "foo" e insere automaticamente " <foo></foo> ". Como fazer isso?

Idealmente, gostaria que o cursor fosse movido automaticamente para depois do primeiro > .

    
por qazwsx 28.02.2012 / 03:49

2 respostas

2

Se você usar o YASnippet no modo xml, ele já contém um snippet para a funcionalidade que você solicita.

Digite o seguinte

tag

pressione Tab e escolha <tag>...</tag> para uma tag XML embutida ou <tag>\n...\n</tag> para uma tag em sua própria linha e o que você digitou se transforma em

<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 digitar o nome da tag, pressione Tab e o cursor será colocado entre as tags para que você possa inserir o conteúdo na tag. Quando você terminar de inserir o conteúdo na tag, pressione Tab 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:

  1. 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 snippet em outro diretório, vá em frente e escolha outro.

  2. Digite o modo no qual você deseja inserir os snippets.

  3. Fazer M-x yas/new-snippet .
  4. Digite o nome tag.1l
  5. Você terá a chance de editar o snippet. Marque tudo fazendo C-xh e, em seguida, mate-o por C-w .
  6. Agora você terá um snippet vazio. Cole o seguinte em e certifique-se de que o snippet termine após $0 e não em uma nova linha :

    #name: <tag>...</tag>
    #key: tag
    # --
    <${1:tag}>$2</$1>$0
    
  7. Faça C-c C-c para salvar e carregar o snippet.

  8. Siga as etapas de 3 a 7, mas use o nome tag.2l e cole o seguinte:

    #name: <tag> \n...\n</tag>
    #key: tag
    # --
    <${1:tag}>
      $2
    </$1>$0
    

Note que a chave yasnippet usa para expansão, Tab , está ligada a outra função no modo markdown por padrão. Assim, você precisa usar uma correção como link ou vincule yas/expand a uma chave de sua preferência.

A animação a seguir mostra como o primeiro snippet funciona:

    
por 28.02.2012 / 20:18
0

É possível e deve ser fácil escrever isso.

Mas eu acho que você está atrás de trechos / esqueletos. Por favor, confira yasnippet . É basicamente um sistema de templates facilmente extensível às suas necessidades

    
por 28.02.2012 / 04:33