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."
	}
}

回车保存即可。但是如果我们该如何自定义片段里的其它成分?

  1. 在prefix中修改关键字。
  2. 在body中修改代码本身。
  3. 在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里的代码,修改完成。

posted @ 2021-03-11 17:35  Clo91eaf  阅读(118)  评论(0)    收藏  举报