我试图通过向其他开发人员提供代码片段来补充我的代码的帮助功能。这些生成的代码骨架演示了如何使用/调用我的类或方法。
我创建了一个.snippet文件并将其放置在“ %Visual Studio Folder%\Code Snippets\Visual Basic\My Snippets ”文件夹中。我使用了代码片段管理器并确保它包含此文件夹,以便我可以访问代码片段。
当我在根 CodeSnippets 标签中有 1 个 CodeSnippet 标签时,一切都会正常工作......
当我向文件添加多个 CodeSnippet 标签(每个标签都有自己的标题和自己的代码示例)时,我遇到了一些奇怪的情况。
我添加的第一个 CodeSnippet 包含用于向系统添加某些内容的代码,第二个包含用于编辑系统中某些内容的代码,第三个包含用于从系统中删除某些内容的代码。
当我通过右键单击并选择“插入代码片段”来使用代码片段时,只有文件中的第一个代码片段显示为选项。当我选择它时,第一个 CodeSnippet 中的代码被插入......但其他 CodeSnippet 标签中的代码也是如此。
您是否必须为您想要提供的每个代码片段拥有一个单独的 XML .snippet文件?
在阅读完 MSDN 有关创建代码片段的内容后,我的印象是这一切都可以在一个文件中完成。
看来我在这里不理解一些非常基本的东西,并且很想找到答案,但显然代码片段未得到充分使用,因此事实证明找到答案比我最初想象的要棘手一些。
谢谢,
-弗林尼
最近我开始使用 Visual Code,它似乎是一个非常好的编辑器,但让我烦恼的是 IntelliSense JavaScript 片段建议出现的顺序(当我输入“for”时,我希望第一个建议是定义的 JavaScript 片段,但是相反,我得到了很多对象和接口,这使我可以遍历列表)。如果有人能给我一个提示,我将不胜感激如何组织 JavaScript 的 IntelliSense 建议/
我正在使用Visual Studio 2017 Enterprise,版本15.3.3
我看起来像IntelliSense有一些代码完成的新功能.在此功能的基础上,在写入类型时会自动建议字段名称.
SpacePosition s .. //以s开头,Intellisense提示"space","position"和"spacePosition"
我喜欢这个功能,但不是代码片段.使用剪切的代码我遇到的问题是,在按Tab键(用于导航到下一个文字)之后,文字的名称会被IntelliSense自动替换.
在我的示例中,我想将属性命名为"other",然后跳转到代码段内的下一个文字.但由于IntelliSense,属性名称被"spacePosition"取代.
有没有办法在代码片段中禁用IntelliSense功能?
我在Visual Studio Code中找到了解决相同问题的解决方案: stackoverflow文章但不适用于Visual Studio
我有以下用户片段:
{
/*
// Place your snippets for JavaScript React here. Each snippet is defined under a snippet name and has a prefix, body and
// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the
// same ids are connected.
// Example:
"Print to console": {
"prefix": …Run Code Online (Sandbox Code Playgroud) 在 TextMate 中,可以键入php<tab>进行插入<?php | ?>(此处使用 | 标记光标位置)。
我正在尝试在 VSC 中重新创建它,如下所示在 php.json 片段文件中:
"php tag": {
"prefix": "php",
"body": [
"<?php $1 ?>"
],
"description": "Insert <?php ?>"
}
Run Code Online (Sandbox Code Playgroud)
问题是,除非我已经在 php 标签内,否则该代码片段不会显示,这违背了目的。
将代码片段添加到 HTML 文件中并没有帮助。
有什么办法可以让我按照我想要的方式进行这项工作吗?
vs 代码据说支持用户定义的片段中的变电站,即转换。但它只适用于(内置)变量而不是占位符。
请参阅以下代码段:
"substitution test" : {
"prefix" : "abc",
"body": [
"${TM_FILENAME}",
"${TM_FILENAME/^([^.]+)\\..+$/$1/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/capitalize}/}",
"${TM_FILENAME/^([^.]+)\\..+$/${1:/upcase}/}",
"${2:showMeInAllCapsWhenReferenced}",
"${2/upcase}"
]
}
Run Code Online (Sandbox Code Playgroud)
第 1-4 行的输出符合预期:
users.actions.ts
users
Users
USERS
Run Code Online (Sandbox Code Playgroud)
在第 5 行有一个占位符,我在第 6 行再次引用它。我希望它显示两次,一次是在我输入时显示,一次是全部大写。所以例如:
fooFoo
FOOFOO
Run Code Online (Sandbox Code Playgroud)
但实际输出是
showMeInAllCapsWhenReferenced
${2/upcase}
Run Code Online (Sandbox Code Playgroud)
是否可以替换/转换引用的占位符(如我输入的那样)?
我尝试按照扩展的自述文件中给出的说明进行操作。我使用 Windows 并打开我的笔记本,我使用存储在目录中的 jupyter-notebook.exe
..\Anaconda3\脚本
在 Anaconda3 目录中,我转到子目录
Anaconda3\Lib\site-packages\jupyter_contrib_nbextensions\nbextensions\snippets
并更改文件“snippets.json”的代码
{
"snippets" : [
{
"name" : "example",
"code" : [
"# This is an example snippet!",
"# To create your own, add a new snippet block to the",
"# snippets.json file in your jupyter data directory under nbextensions:",
"# $(jupyter --data-dir)/nbextensions/snippets/snippets.json",
"import this"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
到
{
"snippets" : [
{
"name" : "example",
"code" : [
"# This is a test if something changed",
]
] …Run Code Online (Sandbox Code Playgroud) 有时,当我按下 Enter 按钮时,VSCode 会主动完成我不想要的代码。
例如:
当我输入
import numpy as np
Run Code Online (Sandbox Code Playgroud)
然后按回车键,VSCode 会将其更改np为numpy
或者当我输入
else
Run Code Online (Sandbox Code Playgroud)
然后按回车键,VSCode 会将其更改为
else
{
/*...*/
}
Run Code Online (Sandbox Code Playgroud)
虽然我有时真的不需要这种格式。
那么如何禁用代码片段的“Enter”并仅使用 Tab 呢?
我正在为 flutter/dart 创建自定义片段。我的目标是提取文件名(TM_FILENAME_BASE)删除所有下划线并将其转换为 PascalCase(或camelCase)。
这是我迄今为止所学到的有关正则表达式和 vscode 片段的链接。 https://code.visualstudio.com/docs/editor/userdefinesnippets
我已经能够使用以下代码很好地删除下划线
${TM_FILENAME_BASE/[\\_]/ /}
Run Code Online (Sandbox Code Playgroud)
我什至可以全部大写
${TM_FILENAME_BASE/(.*)/${1:/upcase}/}
Run Code Online (Sandbox Code Playgroud)
然而,我似乎不能一次做两步。我不熟悉正则表达式,这只是我最近几天在摆弄它。
如果有人可以帮助程序员同事让编码变得更简单,我将不胜感激!
我希望“my_file_name”的输出为“MyFileName”。
我可以在(vanilla)Vim 中使用什么脚本将带有当前日期和时间的片段插入到生成的每个新笔记中。
code-snippets ×10
intellisense ×3
dart ×1
flutter ×1
formatting ×1
javascript ×1
jupyter-contrib-nbextensions ×1
php ×1
regex ×1
vb.net ×1
vim ×1