前言

  在工作学习中,我配置好了一个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++PythonJavaScript,以及写博客需要用MD。这些都能在VSCode得到很好的解决方案,但是管理起来十分麻烦。于是我是想为什么不自己写一个软件来实现这种管理呢?NewCode于是就写出来了,原本是一种语言一个版本,现在只需要配置好,就能实现一个NewCode程序管理大量的单文件代码了。

仓库地址

  目前只在GitHub上,等这个软件差不多了搬到Giteehttps://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++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 <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的更多相关文章

  1. 羽夏闲谈——VSCode 配置 C/C++环境

    前言   VSCode是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言.我的环境是64位Win10,如果是其他系统请自行判断调整.本人根据网上的配置方法在结合本 ...

  2. 羽夏闲谈—— C 的 scanf 的高级用法

    前言   今天看到博友发了个有关scanf的使用的注意事项,就是讨论缓冲区残存数据的问题,用简单的代码示例复述一下: #define _CRT_SECURE_NO_WARNINGS #include ...

  3. 羽夏闲谈—— C 语言入门之问

    前言   最近加入了一个QQ频道,有很多想学C的纯小白.为什么这么说呢?因为他们会问一些环境用啥?为啥我配置不行?看了教程配置环境我也不会,咋配置?为啥这里代码这里有错误?啥语言好不好?诸如此类的问题 ...

  4. (五)羽夏看C语言——结构体与类

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  5. (四)羽夏看C语言——循环与跳转

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  6. (三)羽夏看C语言——进制

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  7. (二)羽夏看C语言——容器

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  8. (一)羽夏看C语言——简述

    "羽夏看C语言"介绍什么   本系列从汇编的角度,比较翔实的介绍C语言.C++和C其实是一样的东西,C++的编译器只是更强大,更能帮助我们写代码,例如模板.没有特殊说明,本系列不会 ...

  9. (六)羽夏看C语言——函数

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

  10. (七)羽夏看C语言——模板(C++)

    写在前面   由于此系列是本人一个字一个字码出来的,包括示例和实验截图.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇 ...

随机推荐

  1. KingbaseESV8R6使用pageinspect插件观察空值

    前言 在KingbaseES元组头数据中,有一个t_bits数组,用于存储空值位图.当元组中没有null值的时候,t_bits是空的,当元组有null值的列时,t_bits使用一个bit来表示列是否为 ...

  2. 使用OHOS SDK构建libpng

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/glennrp/libp ...

  3. 驾考宝典携手HMS Core统一扫码服务,构建复杂场景中的流畅扫码体验

    "驾考宝典"是一款颇具人气的互联网综合驾照考试学习应用,通过强大的驾考功能,在手机移动端为学车学员提供从报名.学习到拿本的全方位驾考服务.作为一个专业的驾培平台,"驾考宝 ...

  4. Causal Inference理论学习篇-Tree Based-Causal Tree

    Tree-Based Algorithms Tree-based这类方法,和之前meta-learning 类的方法最明显的区别是: 这类方法把causal effect 的计算显示的加入了到了树模型 ...

  5. scala json解析到case类

    有时候,需要将从json文件读取程序配置设置,并同步到定义好的一些case类中,这个时候可以使用 io.circe解析json文件,并同步文件字段到定义好的case类 case class Confi ...

  6. 《c#高级编程》第4章C#4.0中的更改(九)——协变和逆变

    动态字典(Dynamic Dictionary)是指一个键值对集合,其中键和值的类型都可以在运行时确定并且可以动态变化.在C#中,可以使用 dynamic 关键字来实现这一功能. 例如,下面的代码演示 ...

  7. 物联网浏览器(IoTBrowser)-使用深度学习开发防浸水远程报警

    一.起因 新房子买在2楼,反水概率较大,加上无良开发商的劣质材料,就我所在楼栋已经发生几起反水事件,而且是高层反水,有几户重复出现反水,原因是管道中间有一个钢筋 :( 二.解决方案 1.水浸传感器+W ...

  8. 力扣520(java)-检测大写字母(简单)

    题目: 我们定义,在以下情况时,单词的大写用法是正确的: 1.全部字母都是大写,比如 "USA" .2.单词中所有字母都不是大写,比如 "leetcode" . ...

  9. 第 9章 数据分析案例:Python 岗位行情

    第 9章 数据分析案例:Python 岗位行情 9.1 数据爬取 (1)打开某招聘网站首页 https://www.lagou.com,选择"全国站",在搜索栏输入 Python, ...

  10. HarmonyOS NEXT应用开发实战—组件堆叠

    介绍 本示例介绍运用Stack组件以构建多层次堆叠的视觉效果.通过绑定Scroll组件的onScroll滚动事件回调函数,精准捕获滚动动作的发生.当滚动时,实时地调节组件的透明度.高度等属性,从而成功 ...