羽夏闲谈——NewCode


前言

??在工作学习中,我配置好了一个VSCode,学习C语言,需要经常性的创建代码文件,而往往这里面有一个固定的模板,比如下面:

#define _CRT_SECURE_NO_WARNINGS

#include 
#include 

int main(int argc,char* argv[])
{
    /* code */
    system("pause");
    return 0;
}

??你总不能一个一个文件复制粘贴吧?尤其代码量上去的时候,尤其不方便。但如果你学习的语言越多:C++PythonJavaScript,以及写博客需要用MD。这些都能在VSCode得到很好的解决方案,但是管理起来十分麻烦。于是我是想为什么不自己写一个软件来实现这种管理呢?NewCode于是就写出来了,原本是一种语言一个版本,现在只需要配置好,就能实现一个NewCode程序管理大量的单文件代码了。

仓库地址

??目前只在GitHub上,等这个软件差不多了搬到Gitee:https://github.com/Wing-summer/NewCode

编码语言和编译环境

??本人使用目前版本较高的VS2020,使用C#语言编写,下载编译即可。

入门

??当你双击运行时,就会出现这个界面。

??也就是说,当你直接运行该程序不带参数的时候,只会显示帮助并显示按任意键退出。
??本工具的所有命令不区分大小写,如下为几个示例:

NewCode -t cpp -p C:\test -k
NewCode -st c
NewCode -t cpp -p C:\test -f "hello" " world"
NewCode -q

??看不懂,我们来看看每个参数的含义:

-t | -type:类型,配置 json 代码块时的 id
-p | -path:路径,创建文件的路径,如果省略后缀,则以 json 配置为准添加
-k | -keepalive | -keep | -alive:执行该程序后不会退出,保持运行状态,可以执行其他的命令
-f | -fill | -param:填充可变参数,这对于模板十分有用,如何编写合适请见示例
-st | -settype:程序运行后,如果没特地设置,默认调用配置文件的第一个
-q:退出程序,仅在 keepalive 环境中有效
-add [type] [path] {ext}:添加以 type 的内容为 id ,然后用 path 作为路径,注意路径建议为相对路径,如果有 ext 参数则以它
为扩展名。
-mod [type] p={path} ext={ext}:修改 type 中的配置
-del [type]:删除以 type == id 的内容
-cls:清理所有的配置
-showAll:显示所有配置键值
-showInfo [type]:显示该类型的所有信息
-showtype [type]:作用同 -showInfo
-r | -restart:重启程序,如果后面带有 # 作为参数说明以管理员权限重启,重启默认带有 -k 参数。
-curdir | -pwd:显示当前工作目录
-prodir:显示该程序所在目录
-cd:更改当前目录,这通常很有用
-setenv:为该程序所在目录添加环境变量
-delenv:删除该程序所在目录的环境变量

??下面有个说明:如果在keepalive状态,也就是带有参数-k运行时。就不需输入 NewCode。如果上面的参数没有,该程序会调用cmd命令运行。如果被视为cmd命令运行,开头不得带有-字符,否则视为内部命令。
??输入几个命令测试一下:

??配合VSCode的终端功能更舒服:

编写配置

??文件配置目录建议为相对目录,使用相对目录是指相对于本程序来说的。比如我配置一个cpp模板,如下所示:

#include 
using namespace std;

int main(int argc,char* argv[])
{
    // Written By |[0]|
    system("pause");
    return 0;
}

??其中你可能会发现一个特殊字符|[0]|这个是啥意思,对于C#来说,如果格式化此字符串,等同于如下代码:

string.Format( "Written By {0}" , arg );

??看到这个代码是不是懂了很多,因为代码语法比如C++CC#Java等语言的大括号是有含义的,为了实现格式化功能,我对这个做了一个转义而已。也就是说,这个格式化支持所有的C#代码格式化。
??配置文件弄好,并用UTF-8编码进行保存,这个就是我的程序遵守的协定,记好它的相对路径假设code\cpp.txt
??然后我们在控制台并转到程序目录,运行该程序并带上参数:

NewCode -add cpp code\cpp.txt

??这样我们就成功的在配置文件配置好了。
??如果程序位置固定的话,建议为它设置环境变量,这就需要我们添加,不过我程序已经封装好这个功能,需要管理员权限,但是通常是以普通权限启动的,我们可以在keepalive模式下使用下面的命令:

-r #

??#就是代表管理员权限,然后就使用keepalive模式的管理员权限启动了这个程序,然后输入下面的命令:

-setenv

??这就会为该程序所在目录添加环境变量,此时就不要动它的目录了,以防失效。

生成使用

??接着上面的配置,我们就可以使用该程序创建,我们可以输入下面的命令:

Newcode -t cpp -p D:\test -f wingsummer

??上面命令的含义就是在D盘创建一个文件test.cpp文件,并将wingsummer作为参数进行格式化,调用配置cpp,也就是我们之前配置好的,生成好的文件打开就会有如下结果:

#include 
using namespace std;

int main(int argc,char* argv[])
{
    // Written By wingsummer
    system("pause");
    return 0;
}

??但是如果没有后面的格式化填充命令,将会得到警告,并用空字符串进行填充,也就是如下命令:

Newcode -t cpp -p D:\test

??也就是下面的结果:

#include 
using namespace std;

int main(int argc,char* argv[])
{
    // Written By
    system("pause");
    return 0;
}

??这就可以正常使用了,想要更好的使用的话,请详细阅读源码并作出自己习惯的使用的方式的代码,毕竟经过自己体会的代码,自己做出的工具是最趁自己手的。

关于提交 Bug

??自己闲时写的,难免有错误。如有Bug,欢迎递交。如果有其他需求,请自己把C#代码写好并在GitHub上进行Pull Request,本人不会实现自己不需要的Request功能。

协议

??该软件使用MIT协议,说明您可以使用可以在合法的用途下对其代码进行修改以符合自己的需求。但请不得随意用于商业用途,除非您对改代码修改程度超出总代码的八成。您可以将您的贡献自行写入该文件中,但不得删除原作者的信息和说明。