3

Я хочу определить ярлык для ввода пар тегов XML. Нажав комбинацию клавиш key1 - key2 которая должна запросить ввод имени тега .eg "foo" и автоматически вставить " <foo></foo> ". Как это сделать?

В идеале я бы хотел, чтобы курсор автоматически перемещался после первого > .

2 ответа2

2

Если вы используете YASnippet в xml-режиме, он уже содержит фрагмент нужной вам функции.

Введите следующее

tag

нажмите Tab и выберите <tag>...</tag> для встроенного XML-тега или <tag>\n...\n</tag> для тега в отдельной строке, и то, что вы ввели, превращается в

<tag></tag>

или же

<tag>

</tag>

соответственно. То, что вы ввели, превращается либо в имя для открывающего тега, и вы можете ввести любое имя тега, которое вы хотите, и оно также будет скопировано в закрывающий тег. Когда вы закончите ввод имени тега, вы нажимаете клавишу Tab, и курсор помещается между тегами, чтобы вы могли вводить содержимое в тег. Когда вы закончите ввод содержимого в тег, вы снова нажимаете клавишу Tab, чтобы поместить курсор после закрывающего тега.

Обратите внимание, что если вы хотите настроить поведение этих фрагментов, это легко. Используйте меню YASnippet, чтобы найти нужные фрагменты, а затем отредактируйте их в соответствии с вашими потребностями.

Чтобы получить указанные фрагменты в любом другом режиме, вы можете создать их для этого режима, выполнив следующие действия:

  1. Добавьте следующее в ваш .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
    

    Если вы предпочитаете хранить свой фрагмент в другом каталоге, выберите другой.

  2. Войдите в режим, в котором вы хотите фрагменты.

  3. Do Mx yas/new-snippet .
  4. Введите имя tag.1l
  5. Теперь у вас есть возможность редактировать фрагмент. Отметьте все, выполнив Cx h, а затем убейте его нажатием Cw .
  6. Теперь у вас будет пустой фрагмент. Вставьте в него следующее и убедитесь, что фрагмент заканчивается после $0 а не на новой строке:

    #name: <tag>...</tag>
    #key: tag
    # --
    <${1:tag}>$2</$1>$0
    
  7. Сделайте Cc Cc, чтобы сохранить и загрузить фрагмент.

  8. Выполните шаги с 3 по 7, но вместо этого используйте имя tag.2l и вставьте следующее:

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

Обратите внимание, что клавиша, которую yasnippet использует для расширения, Tab, по умолчанию связана с другой функцией в режиме уценки. Таким образом, вы должны либо использовать исправление, например http://calas.github.com/2009/11/20/using-yasnippets-in-markdown-mode.html, либо связать yas/expand с ключом вашего предпочтения.

Следующая анимация показывает, как работает первый фрагмент:

Анимация фрагмента <$ {1:tag}> $ 2 </$ 1> $ 0

0

Это возможно и должно быть легко написать.

Но я думаю, что вы ищете фрагменты / скелеты. Пожалуйста, проверьте Яснипет. В основном это система шаблонов, легко расширяемая для ваших нужд.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .