如何定义快捷键(组合键)来插入““在 Emacs 中?

如何定义快捷键(组合键)来插入““在 Emacs 中?

我想定义一个快捷方式来输入 XML 标签对。按下组合键key1-key2应该提示输入标签名称,例如“foo”,并自动插入“ <foo></foo>”。怎么做?

理想情况下,我希望光标自动移动到第一个之后>

答案1

如果你使用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. M-x yas/new-snippet
  4. 输入名称tag.1l
  5. 现在您将有机会编辑代码片段。通过 标记所有内容C-x h,然后通过 终止它C-w
  6. 现在您将有一个空的代码片段。将以下内容粘贴到其中并确保代码片段在 $0 并且不在新行上

    #name: <tag>...</tag>
    #key: tag
    # --
    <${1:tag}>$2</$1>$0
    
  7. 执行C-c C-c保存并加载代码片段。

  8. 执行步骤 3 至 7,但使用名称tag.2l并粘贴以下内容:

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

请注意,yasnippet 用于扩展的键Tab,默认情况下,在 markdown 模式下已绑定到另一个函数。因此,您要么必须使用修复程序,例如http://calas.github.com/2009/11/20/using-yasnippets-in-markdown-mode.html或绑定yas/expand到您喜欢的键。

以下动画展示了第一个代码片段的工作原理:

片段动画 <${1:tag}>$2</$1>$0

答案2

这是可能的,而且应该很容易写。

但我认为你想要的是片段/骨架。请查看yasnippet. 它基本上是一个可以轻松扩展以满足您的需求的模板系统

相关内容