【问题标题】:Over-ride Default Snippet Prefix in VS Code覆盖 VS Code 中的默认片段前缀
【发布时间】:2018-06-26 12:20:24
【问题描述】:

我正在为 VS Code 编写一些 JavaScript sn-ps,当我为事件侦听器添加一个时,有许多与其他代码段相关的预定义前缀分配。我想使用“ael”作为这个sn-p的前缀提示,但是默认为alert命令(这特别令人沮丧,因为alert的前3个字母实际上是“ale”),无论如何,有没有办法覆盖默认行为?

在下面的代码中,如果我将prefix 更改为“ttt”,然后键入“ttt”,sn-p 可以正常工作,而当我使用“ael”时却不行。

如何覆盖这个?

片段

"ael": {
    "prefix": "ael",
    "body": [
        "addEventListener(\"\t$1\", function(){",
        "\t$2",
        "}, false);"
    ],
    "description": "Add an Event Listener",
}

【问题讨论】:

  • "editor.snippetSuggestions": "top", ?
  • @Alex 这会去哪里?
  • 用户设置?
  • 不,很遗憾这不起作用
  • 然后提供更多细节。逻辑上"ael" 应该覆盖alert 关键字。添加屏幕截图。

标签: json visual-studio-code editor code-snippets vscode-settings


【解决方案1】:

这是最新更新的一部分:1.19 release notes

当您接受建议时,它会记住并跳转到您之前接受的内容。这里是关于控制这个功能的问题:#41060

由于 vscode 1.20 有一个选项可以禁用或修改此行为:

"editor.suggestSelection"

"first" - 和以前一样(没有记忆,没有预选)

"recentlyUsed" - 选择之前使用的项目

"recentlyUsedByPrefix" - 根据您使用的前缀选择项目

【讨论】:

  • 谢谢。当我在家时,我会正确阅读。当前的功能是我在代码编辑器中看到的最愚蠢的事情,因为 Brackets 决定不允许您从工作区中删除所有文件夹,因此即使您不使用,也总是必须在其中有一个文件夹它。也许我会回到 Atom。
【解决方案2】:

如果我正确理解你的情况,那么你不需要滚动列表。当你输入ael 时,你的 sn-p 已经在下拉列表中被选中(从截图来看)。之后您只需按EnterTab

sn-p 中的几个前缀

此外,您还可以添加额外的前缀,以便在不同情况下使用,例如,像这样:

    "addEventListener": {
        "prefix": ["ael", "addEventListener"],
        "body": [
            "addEventListener(\"${1:event}\", (${2:e}) => {",
            "\t$0",
            "}, false);"
        ],
        "description": "Add an Event Listener",
    }

之后,如果您在javascript文件中输入例如add甚至adli,则会出现如下所示的列表。
在其中,您需要向下移动几步到addEventListener 行并按下EnterTab,之后编辑器将从sn-p 插入代码,选择第一个占位符(@987654337 @),在这种情况下包含事件的名称。接下来可以编辑,按Tab移动到第二个占位符($2),改变函数的输入参数,然后再按Tab移动到函数体($0 - 最后一个占位符)。

建议选择

是的,正如his answer 中提到的Alex,您可以使用editor.suggestSelection 设置来更改下拉菜单中预选的行为。如code.visualstudio.com 所述:

  • first - 始终选择顶部列表项。
  • recentlyUsed -(默认)除非前缀(要选择的类型)选择不同的项目,否则会选择以前使用的项目。
  • recentlyUsedByPrefix - 根据之前完成这些建议的前缀选择项目。

“Type to select”表示当前前缀(大致为光标左侧的文本)用于过滤和排序建议。当发生这种情况并且其结果与recentlyUsed 的结果不同时,它将被优先考虑。

当使用最后一个选项 recentlyUsedByPrefix 时,VS Code 会记住为特定前缀(部分文本)选择了哪个项目。例如,如果您输入了co,然后选择了console,那么下次您输入co 时,建议console 将被预先选择。这使您可以快速将各种前缀映射到不同的建议,例如 co -> consolecon -> const

建议中的片段

正如code.visualstudio.com 笔记:
默认情况下,VS Code 在一个小部件中显示 sn-ps 和完成建议。您可以使用editor.snippetSuggestions 设置来控制行为。它的可用值:

  • none - 从建议小部件中删除 sn-ps
  • top - 将 sn-ps 放在顶部
  • bottom - 将 sn-ps 放在底部
  • inline - (默认)显示 sn-p 建议以及按字母顺序排列的其他建议

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 2021-05-12
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多