羽夏闲谈——NewCode
前言
在工作学习中,我配置好了一个VSCode,学习C语言,需要经常性的创建代码文件,而往往这里面有一个固定的模板,比如下面:
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
int main(int argc,char* argv[])
{
/* code */
system("pause");
return 0;
}
你总不能一个一个文件复制粘贴吧?尤其代码量上去的时候,尤其不方便。但如果你学习的语言越多:C++、Python、JavaScript,以及写博客需要用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 <iostream>
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++、C、C#、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 <iostream>
using namespace std;
int main(int argc,char* argv[])
{
// Written By wingsummer
system("pause");
return 0;
}
但是如果没有后面的格式化填充命令,将会得到警告,并用空字符串进行填充,也就是如下命令:
Newcode -t cpp -p D:\test
也就是下面的结果:
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
// Written By
system("pause");
return 0;
}
这就可以正常使用了,想要更好的使用的话,请详细阅读源码并作出自己习惯的使用的方式的代码,毕竟经过自己体会的代码,自己做出的工具是最趁自己手的。
关于提交 Bug
自己闲时写的,难免有错误。如有Bug,欢迎递交。如果有其他需求,请自己把C#代码写好并在GitHub上进行Pull Request,本人不会实现自己不需要的Request功能。
协议
该软件使用MIT协议,说明您可以使用可以在合法的用途下对其代码进行修改以符合自己的需求。但请不得随意用于商业用途,除非您对改代码修改程度超出总代码的八成。您可以将您的贡献自行写入该文件中,但不得删除原作者的信息和说明。
羽夏闲谈——NewCode的更多相关文章
- 羽夏闲谈——VSCode 配置 C/C++环境
前言 VSCode是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言.我的环境是64位Win10,如果是其他系统请自行判断调整.本人根据网上的配置方法在结合本 ...
- 羽夏闲谈—— C 的 scanf 的高级用法
前言 今天看到博友发了个有关scanf的使用的注意事项,就是讨论缓冲区残存数据的问题,用简单的代码示例复述一下: #define _CRT_SECURE_NO_WARNINGS #include ...
- 羽夏闲谈—— C 语言入门之问
前言 最近加入了一个QQ频道,有很多想学C的纯小白.为什么这么说呢?因为他们会问一些环境用啥?为啥我配置不行?看了教程配置环境我也不会,咋配置?为啥这里代码这里有错误?啥语言好不好?诸如此类的问题 ...
- (五)羽夏看C语言——结构体与类
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (四)羽夏看C语言——循环与跳转
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (三)羽夏看C语言——进制
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (二)羽夏看C语言——容器
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (一)羽夏看C语言——简述
"羽夏看C语言"介绍什么 本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...
- (六)羽夏看C语言——函数
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
- (七)羽夏看C语言——模板(C++)
写在前面 由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...
随机推荐
- c# 正则提取内容例子
分类 代码/语法 说明 捕获 (exp) 匹配exp,并捕获文本到自动命名的组里 (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp) ...
- KingbaseES V8R6 最老事务阻止vacuum freeze
前言 最近生产环境发生几次由于长事务导致表.库年龄没法回收的情况.我们要规避这种情况的发生,不要等发生了再去强制中断会话连接. 当数据库中存在最老事务版本xmin,那么早于他的快照可以被标记为froz ...
- 怎样更直观的查看KingbaseES数据库日志
数据库日志相关参数:默认设置 log_destination = 'stderr' # Valid values are combinations of # stderr, csvlog, syslo ...
- 学习Python前要了解的tips
学习Python前要了解的tips 对后续的学习来说很重要,否则后续会出现一些奇奇怪怪的问题,而且很难找到解决方法.嘿嘿,就不要问我怎么知道的了吧,好多都是我踩过的坑 卸载电脑内软件 之前我一直用电脑 ...
- 福州大学MEM 备考总结
自己的基本情况 2022年8月2日,当天觉得休息的差不多了,思来想去,觉得考研是个不错的选择,和女朋友聊了一下,得到她的支持,于是乎定下目标.接着就是开始在网络上查找相关的材料,先把要报考高校和专业的 ...
- 微服务集成Spring Cloud Alibaba Seata (二) 客户端连接
通过上篇文章后我们的Seata服务就部署成功了,如果还不清楚怎么部署或者还没有部署Seata服务的朋友可以看我写的上篇文章进行服务部署.Seata部署步骤:https://www.cnblogs.co ...
- 自动编号工具类:NumAutoUtils详解
在软件开发中,经常需要生成唯一的编号,例如订单号.发票号.实验编号等.为了简化这一过程,本文将介绍一个Java工具类NumAutoUtils,它可以帮助我们生成带有前缀和日期的自动编号. 概述 Num ...
- std::thread 三:条件变量(condition_variable())
condition_variable . wait . notify_one . notify_all *:notify_one:通知(唤醒)一个线程 *:notify_all:通知( ...
- 动态库 DLL 封装二:dll封装方法
例:我新建的工程是,带lib的MFC规则的DLL 主要有三个文件需要写东西 ( .h / .cpp / .def ) 示例: // a.h ...... #ifdef __cplusplus e ...
- 国密 SM2 的非对称签名验签过程
国密 SM2 的非对称签名验签过程 介绍 非对称加密确保了消息传输中的保密性,但是由于使用公钥加密,而公钥是分发出去的,可能泄露,谁都可以使用公钥加密发送消息. 因此为了保证收到的消息是由对应的发送者 ...