求VSCode扩展:实现Shell与PowerShell多行命令后缀及PWD格式互转
Shell 与 PowerShell 多行命令格式互转方案
一、VSCode 扩展现状及临时替代方案
目前VSCode市场没有专门针对Shell/PowerShell多行命令格式互转的专用扩展,但可以通过通用文本处理扩展自定义规则实现:
- 用
Replace Rules扩展:添加两组替换规则,分别对应Shell↔PowerShell的换行符和PWD格式转换 - 用
Multi-Command扩展:组合多个查找替换命令,一键触发转换
二、JS代码实现核心转换逻辑
如果要自行封装VSCode扩展,可以用以下核心JS逻辑实现转换,处理换行符和$PWD/${PWD}的互转:
1. Shell → PowerShell 转换函数
function shellToPowerShell(commandText) { // 替换行尾的\为`(仅匹配作为换行标记的行尾反斜杠) let converted = commandText.replace(/(?<=^\s*.+)\\$/gm, '`'); // 替换$PWD为${PWD},包含引号内的情况 converted = converted.replace(/"\$PWD"/g, '"${PWD}"'); converted = converted.replace(/'\$PWD'/g, "'${PWD}'"); converted = converted.replace(/\$PWD(?!\{)/g, '${PWD}'); return converted; }
2. PowerShell → Shell 转换函数
function powerShellToShell(commandText) { // 替换行尾的`为\(仅匹配作为换行标记的行尾反引号) let converted = commandText.replace(/(?<=^\s*.+)``$/gm, '\\'); // 替换${PWD}为$PWD,包含引号内的情况 converted = converted.replace(/"\$\{PWD\}"/g, '"$PWD"'); converted = converted.replace(/'\$\{PWD\}'/g, "'$PWD'"); converted = converted.replace(/\$\{PWD\}/g, '$PWD'); return converted; }
封装VSCode扩展的大致步骤
- 用Yeoman生成器初始化VSCode扩展项目
- 在
extension.js中注册两个命令:shellToPowerShell和powerShellToShell - 命令逻辑:获取当前编辑器选中的文本,调用对应转换函数,替换选中内容
- 在
package.json中声明命令和快捷键绑定(可选)
三、快速临时解决方案:VSCode 查找替换(正则模式)
无需安装额外工具,直接用VSCode的查找替换功能开启正则模式(Alt+R):
Shell → PowerShell
- 查找:
(?<=^\s*.+)\\$,替换为:` - 查找:
"\$PWD",替换为:"${PWD}" - 查找:
\$PWD(?!\{),替换为:${PWD}
PowerShell → Shell
- 查找:
(?<=^\s*.+)``$,替换为:\ - 查找:
"\$\{PWD\}",替换为:"$PWD" - 查找:
\$\{PWD\},替换为:$PWD
内容的提问来源于stack exchange,提问作者KargWare
相关产品推荐
相关产品推荐

