背景#
在 Visual Studio 中,一般通过默认的快捷键 Ctrl + K + D
来格式化当前文件中的所有内容。
与我自己而言,代码的格式化非常重要,它影响着我的阅读体验。但是,与我工作的一些同事和一些公司老人,他们并不会特别在意代码的格式问题,这就让我有点无语了,我看到之后虽然会修复,但这会造成一些多余的 git commit 记录,浪费我的时间。
所以,我需要找到一个类似 Prettier 的自动格式化工具,来帮助我在阅读代码前,自动的格式化整个项目里面的所有代码。
偶然间我发现了 CSharpier,我只能说 Good!关于他的介绍,可以在官网中清晰的看到。
接下来,我们来看看怎么安装。
安装 CSharpier CLI#
为单个项目安装#
这样做的好处是,可以声明当前项目依赖的 dotnet tool,方便它人还原依赖。
- 新建 .config/dotnet-tools.json:
dotnet new tool-manifest
- 为当前项目安装 CLI:
dotnet tool install csharpier
更新:
dotnet tool update csharpier
全局安装#
全局安装:
dotnet tool install --global csharpier
更新:
dotnet tool update csharpier -g
安装 Visual Studio 插件#
下载插件:https://marketplace.visualstudio.com/items?itemName=csharpier.CSharpier
然后就可以在代码中右键点击 Reformat with CSharpier
按钮来格式化当前文件:
也可以自定义快捷键,或者在保存时自动格式化,参考插件主页:https://marketplace.visualstudio.com/items?itemName=csharpier.CSharpier
使用#
在解决方案根目录或者指定项目目录中执行:
dotnet csharpier .
格式化配置#
如果需要修改默认的格式化参数,就需要在项目中添加配置文件,目前支持的格式有 3 种:
.csharpierrc
: 内容可以是 JSON or YAML..csharpierrc.json
or.csharpierrc.yaml
文件..editorconfig
file. 参考 https://csharpier.com/docs/Configuration#editorconfig。
我采用 YAML 文件,也就是在根目录创建一个 .csharpierrc
,然后把以下配置拷贝进去:
printWidth: 140
useTabs: false
tabWidth: 4
endOfLine: auto
更多配置可以查看 https://csharpier.com/docs/Configuration
忽略文件配置#
通过添加一个 .csharpierignore
文件来忽略特定文件和文件夹,也就是不对它们执行格式化行为。文件内容采用 gitignore 语法,比如:
Uploads/
**/App_Data/*.cs
当然,CSharpier CLI 内部会有一些默认忽略配置,参考:https://csharpier.com/docs/Ignore#files-ignored-by-default
如果想忽略格式化文件中某一段代码,就添加以下注释(参考):
// csharpier-ignore
它还可以通过安装 Nuget 包来调用 API 编写一个格式化代码的程序,参考:https://csharpier.com/docs/API
和 IDE 集成#
官方还提供了一些 IDE 的插件,参考:https://csharpier.com/docs/Editors
其它#
CSharpier 功能太多了,还支持 MsBuild Package、Pre-commit Hook、Continuous Integration 等等功能,时间有限,我就介绍到此了。
已知问题#
- 无法删除多余的换行符