VSCODE用户片段的修改
用户片段的更改
演示
有时我们会遇到一些重复性很高的代码片段,以下我以快读和快写代码作为样例:
template<typename T>void read(T&x){
static char c;static int f;
for(c = ch(),f = 1;c < '0' || c > '9'; c = ch()) if(c == '-')f = -f;
for(x = 0; c >= '0' && c <= '9'; c = ch()) x = x * 10 + (c & 15); x * = f;
}
template<typename T>void write(T x){
static char q[65];int cnt=0;
if(x < 0) pc('-'),x = -x;
q[++cnt] = x % 10, x / = 10;
while(x)
q[++cnt] = x % 10 , x /= 10;
while(cnt)pc(q[cnt--]+'0');
}
我们希望能够像代码自动补全一样实现这些模板的自动输入。vscode中的用户片段可以很好地帮我们实现这个功能。
如:我编辑了快读快写的模板代码,我希望在我输入RandW时能够输出这一串模板。


实现
我们打开vscode->文件->首选项->用户片段->新建全局代码片段文件->输入文件名(怎样都可以)
假设我输入的文件名是test,回车后会进入text.json文件。
以下我以RandW为例。
将文件中的文本替换为:
{
"RandW": {
// prefix: 在编辑器中输入的此内容时,在编辑器建议中会显示该片段。
"prefix": "RandW",
"body": [
"template<typename T>void read(T&x){",
" static char c;static int f;",
" for(c = ch(),f = 1;c < '0' || c > '9'; c = ch()) if(c == '-')f = -f;",
" for(x = 0; c >= '0' && c <= '9'; c = ch()) x = x * 10 + (c & 15); x * = f;",
"}",
"template<typename T>void write(T x){",
" static char q[65];int cnt=0;",
" if(x < 0) pc('-'),x = -x;",
" q[++cnt] = x % 10, x / = 10;",
" while(x)",
" q[++cnt] = x % 10 , x /= 10;",
" while(cnt)pc(q[cnt--]+'0');",
"}",
],
// 描述说明,在片段说明中会显示此字段的文本内容。
"description": "Insert description."
}
}
回车保存即可。但是如果我们该如何自定义片段里的其它成分?
- 在prefix中修改关键字。
- 在body中修改代码本身。
- 在description中修改代码的说明。
但是我们发现body中的代码并不像我们平常写的代码那样,它通常是在字符串的首尾加上了 "", 这三个字符,这时我们要给我们的代码加上这些字符。
于是我们还需要写一个make.cpp,来得到body中应该出现的那中格式的代码。
创建cpp文件:make.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("ou.txt", "w", stdout);
string s;
while(getline(cin, s))
{
cout << "\"" << s << "\"," << endl;
}
return 0;
}
运行并编译,然后找到ou.txt文件,就得到了我们要的body里的代码,修改完成。

浙公网安备 33010602011771号