在构建系统的文件名输出中使用 search/replace
Using search/replace in filename output in build system
如何 search/replace 我的构建系统命令中的输出文件名?例如,如果我正在编辑的文件名为 file_src
,那么我希望我的构建系统将其输出为 file_build
。
"shell_cmd": "my_command ${file} > ${file_name_but_search_replaced}"
构建系统中的变量扩展使用与 snippet substitutions 中使用的相同的底层机制执行,即:
${var_name/regex/format_string/options}
如上文 link 所述,在片段中命名的变量可以是片段字段或仅适用于片段的其他特殊变量,例如 $SELECTION
。在 sublime-build
文件中,使用 build variables 代替。
如何应用取决于您的需要和涉及的文件名。例如:
{
"shell_cmd": "echo '${file_path}/${file_name/_src/_build/}'"
}
要记住的是,替换将应用于文件中的第一个匹配项(除非您指定选项使其成为全局的,在这种情况下它适用于所有),所以这里的扩展是文件的路径,后跟文件名,仅在该字段中进行替换。
这确保在路径可能还包含正则表达式的情况下只修改文件名。根据您的用例,这可能无关紧要(或可取),在这种情况下,您可以将其应用于 $file
。
如何 search/replace 我的构建系统命令中的输出文件名?例如,如果我正在编辑的文件名为 file_src
,那么我希望我的构建系统将其输出为 file_build
。
"shell_cmd": "my_command ${file} > ${file_name_but_search_replaced}"
构建系统中的变量扩展使用与 snippet substitutions 中使用的相同的底层机制执行,即:
${var_name/regex/format_string/options}
如上文 link 所述,在片段中命名的变量可以是片段字段或仅适用于片段的其他特殊变量,例如 $SELECTION
。在 sublime-build
文件中,使用 build variables 代替。
如何应用取决于您的需要和涉及的文件名。例如:
{
"shell_cmd": "echo '${file_path}/${file_name/_src/_build/}'"
}
要记住的是,替换将应用于文件中的第一个匹配项(除非您指定选项使其成为全局的,在这种情况下它适用于所有),所以这里的扩展是文件的路径,后跟文件名,仅在该字段中进行替换。
这确保在路径可能还包含正则表达式的情况下只修改文件名。根据您的用例,这可能无关紧要(或可取),在这种情况下,您可以将其应用于 $file
。