1

一个用例是black为 python 文件提供sqlfluff代码格式化程序,为 SQL 文件提供代码格式化程序,并为这两种工具使用相同的键盘快捷键。

目前,两者都设置在 中Preferences -> Tools -> External Tools,遵循black文档

4

2 回答 2

2

可悲的是没有。您不能根据文件扩展名分配一个快捷方式并调用不同的外部工具。

但是您可以很容易地解决它:

  • 您将需要一个外部工具条目,而不是当前的两个。
  • 制作一个 shell/batch 脚本来进行实际的格式化(将调用实际的格式化工具)。
  • 将该脚本用作外部工具命令。
  • 在该自定义脚本中检测文件的扩展名并在那里执行最合适的格式化程序(black对于 Python 文件和sqlfluffSQL 文件)。
于 2022-02-15T16:01:27.770 回答
1

感谢 LazyOne 的建议,我编写了这个小 shell 脚本来运行blacksqlfluff根据文件扩展名运行:

#!/bin/sh

file_path="$1"
file_name=$(basename -- "$file_path")
extension="${file_name##*.}"

echo "Formatting file $file_path"
echo "With extension $extension"

if [ "$extension" = "py" ]; then
  /Users/alexandre/.local/bin/black "$file_path"
elif [ "$extension" = "sql" ]; then
  /Users/alexandre/.local/bin/sqlfluff fix -f --dialect postgres "$file_path"
else
  exit 2
fi

确保将路径更改为您的实际安装路径(which black和的输出which sqlfluff)。

您可以将脚本保存在文件中(例如code_formatter.sh),并使其可执行:

chmod +x code_formatter.sh

然后在 Pycharm 设置中将其配置为外部工具,不要忘记"$FilePath$"参数:

在此处输入图像描述

您现在可以为“我的代码格式化程序”外部工具定义一个键盘快捷键,它应该适用于 sql 和 python 文件。

于 2022-02-16T18:35:56.177 回答