vscode-delfiles-by-search 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +162 -0
- package/LICENSE +20 -0
- package/PUBLISHING.md +110 -0
- package/README.md +183 -0
- package/USAGE.md +47 -0
- package/bin/delfiles-cli.js +3 -0
- package/package.json +80 -0
- package/src/cli/index.js +258 -0
- package/src/core/file-manager.js +158 -0
- package/src/core/parser.js +95 -0
- package/src/core/searcher.js +172 -0
- package/src/extension/extension.js +268 -0
- package/vscode-delfiles-by-search-0.0.1.vsix +0 -0
- package/vscode-delfiles-by-search-0.0.2.tgz +0 -0
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# VSCode Delete Files By Search Results - Developer Guide
|
|
2
|
+
|
|
3
|
+
本文档面向项目的开发者和贡献者,详细介绍了 `deletefiles-by-search` 项目的开发、调试、构建及部署流程。
|
|
4
|
+
|
|
5
|
+
## 1. 项目简介
|
|
6
|
+
|
|
7
|
+
`deletefiles-by-search` 是一个双模式工具,包含 VSCode 插件和 Node.js CLI 工具。它主要用于解析包含文件搜索结果的长字符串(如 VSCode 全局搜索结果),从中提取文件路径,并对这些文件执行指向性删除操作。
|
|
8
|
+
|
|
9
|
+
核心特性包括:
|
|
10
|
+
- **智能解析**:自动从复杂的搜索结果字符串中提取文件路径(支持 Windows/Unix 路径)。
|
|
11
|
+
- **安全删除**:默认将文件移动到回收站(支持配置为永久删除)。
|
|
12
|
+
- **双模式**:提供 VSCode 插件界面和命令行接口 (CLI)。
|
|
13
|
+
- **模拟运行**:支持 Dry Run 模式,预览将要删除的文件而不实际执行。
|
|
14
|
+
- **基准路径**:灵活配置基准路径,支持相对路径解析。
|
|
15
|
+
- **忽略规则**:支持通过 glob 模式忽略特定文件或文件夹。
|
|
16
|
+
- **交互式模式**:CLI 支持交互式补充参数,支持剪贴板内容读取,提供文件过滤确认步骤,提升用户体验。
|
|
17
|
+
|
|
18
|
+
## 2. 环境准备
|
|
19
|
+
|
|
20
|
+
在开始开发之前,请确保您的开发环境满足以下要求:
|
|
21
|
+
|
|
22
|
+
- **Node.js**: 建议使用 LTS 版本 (v16.x 或更高)。
|
|
23
|
+
- **npm**: Node.js 自带的包管理器。
|
|
24
|
+
- **IDE**: 推荐使用 **Trae** (完全兼容 VSCode 插件开发) 或 VSCode。
|
|
25
|
+
|
|
26
|
+
## 3. 本地开发调试步骤
|
|
27
|
+
|
|
28
|
+
### 3.1 克隆项目与安装依赖
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
git clone <repository-url>
|
|
32
|
+
cd vscode-delfiles-by-search
|
|
33
|
+
npm install
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 3.2 CLI 工具调试
|
|
37
|
+
|
|
38
|
+
在开发过程中,您不需要安装就可以直接运行 CLI 工具进行调试:
|
|
39
|
+
|
|
40
|
+
**方式一:直接运行脚本**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# 查看帮助信息
|
|
44
|
+
node ./bin/delfiles-cli.js --help
|
|
45
|
+
|
|
46
|
+
# 运行交互式模式
|
|
47
|
+
node ./bin/delfiles-cli.js
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**方式二:本地链接 (npm link)**
|
|
51
|
+
|
|
52
|
+
您可以将当前正在开发的包链接到全局环境,模拟发布后的使用体验:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 1. 在项目根目录下执行链接命令
|
|
56
|
+
npm link
|
|
57
|
+
|
|
58
|
+
# 2. 现在可以在任何终端直接使用 delfiles 命令
|
|
59
|
+
delfiles --help
|
|
60
|
+
delfiles -s "path/to/file.js: ..."
|
|
61
|
+
|
|
62
|
+
# 3. 调试完成后取消链接
|
|
63
|
+
npm unlink -g
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3.3 插件开发与调试 (Trae / VSCode)
|
|
67
|
+
|
|
68
|
+
本项目完全兼容 Trae IDE,您可以像在 VSCode 中一样进行开发。
|
|
69
|
+
|
|
70
|
+
1. 在 Trae 中打开项目根目录。
|
|
71
|
+
2. 确保已安装项目依赖 (`npm install`)。
|
|
72
|
+
3. 点击左侧活动栏的 **"运行和调试" (Run and Debug)** 图标 (或按下 `Shift+Cmd+D`)。
|
|
73
|
+
4. 在顶部的调试配置下拉菜单中选择 **"Run Extension"**。
|
|
74
|
+
5. 点击绿色的播放按钮 (或按下 `F5`) 开始调试。
|
|
75
|
+
6. Trae 将启动一个新的 **扩展开发主机 (Extension Development Host)** 窗口,在该窗口中插件已自动激活。
|
|
76
|
+
|
|
77
|
+
**测试插件功能**:
|
|
78
|
+
- **触发命令**:打开命令面板 (`Cmd+Shift+P` / `Ctrl+Shift+P`),输入并执行 `Delete Files from Search Results`。
|
|
79
|
+
- **选择输入源**:插件会弹出快速选择列表 (QuickPick),您可以选择:
|
|
80
|
+
- `使用选中的文本` (仅当编辑器有选中内容时出现)
|
|
81
|
+
- `使用剪贴板内容` (仅当剪贴板有内容时出现,支持预览)
|
|
82
|
+
- `手动输入搜索结果` (进入输入框粘贴内容)
|
|
83
|
+
- **文件过滤**:解析成功后,会弹出文件选择列表,您可以取消勾选不想删除的文件。
|
|
84
|
+
- **确认删除**:确认文件列表后,会弹出最终确认框(支持删除或仅模拟运行)。
|
|
85
|
+
|
|
86
|
+
> **注意**:如果您修改了 `src/extension/extension.js` 中的代码,可以在调试工具栏中点击 **"重启" (Restart)** 按钮 (绿色旋转箭头) 来重新加载扩展主机,无需关闭窗口。
|
|
87
|
+
|
|
88
|
+
## 4. 构建与打包流程
|
|
89
|
+
|
|
90
|
+
本项目目前主要作为源码发布。
|
|
91
|
+
|
|
92
|
+
- **插件打包 (.vsix)**:
|
|
93
|
+
使用 `vsce` 工具打包成 `.vsix` 文件(需先全局安装 `npm install -g vsce`)。
|
|
94
|
+
```bash
|
|
95
|
+
vsce package
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
- **CLI 发布准备**:
|
|
99
|
+
确保 `package.json` 中的 `bin` 字段指向正确的入口文件,并且入口文件具有可执行权限。
|
|
100
|
+
|
|
101
|
+
## 5. 部署上线指南
|
|
102
|
+
|
|
103
|
+
### 发布到扩展市场
|
|
104
|
+
|
|
105
|
+
1. 更新 `package.json` 中的版本号。
|
|
106
|
+
2. 确保 `CHANGELOG.md` (如果有) 已更新。
|
|
107
|
+
3. 使用 `vsce publish` 命令发布到 Visual Studio Marketplace 或 Open VSX Registry。
|
|
108
|
+
- 需提前创建 Publisher 并获取 Personal Access Token。
|
|
109
|
+
|
|
110
|
+
### 发布到 npm (CLI 工具)
|
|
111
|
+
|
|
112
|
+
1. **准备与检查**:
|
|
113
|
+
- 确保所有本地更改已提交到 Git。
|
|
114
|
+
- 运行测试和代码检查:`npm test` && `npm run lint`。
|
|
115
|
+
- 确保当前分支正确(通常是 `main` 或 `master`)。
|
|
116
|
+
|
|
117
|
+
2. **登录 npm**:
|
|
118
|
+
- 运行 `npm login` 并按提示完成登录。
|
|
119
|
+
- 验证登录状态:`npm whoami`。
|
|
120
|
+
|
|
121
|
+
3. **更新版本**:
|
|
122
|
+
- 推荐使用 `npm version` 命令更新版本号并自动创建 git tag:
|
|
123
|
+
```bash
|
|
124
|
+
# 更新补丁版本 (例如 0.0.1 -> 0.0.2)
|
|
125
|
+
npm version patch
|
|
126
|
+
|
|
127
|
+
# 或者更新次版本 (例如 0.0.1 -> 0.1.0)
|
|
128
|
+
# npm version minor
|
|
129
|
+
```
|
|
130
|
+
- 或者手动修改 `package.json` 中的 `version` 字段。
|
|
131
|
+
|
|
132
|
+
4. **发布**:
|
|
133
|
+
- 运行发布命令:
|
|
134
|
+
```bash
|
|
135
|
+
npm publish
|
|
136
|
+
```
|
|
137
|
+
- 如果发布的是 scoped 包(例如 `@scope/package`),初次发布可能需要加上 `--access public`。
|
|
138
|
+
|
|
139
|
+
5. **验证**:
|
|
140
|
+
- 发布成功后,可以尝试全局安装最新版本进行验证:
|
|
141
|
+
```bash
|
|
142
|
+
npm install -g vscode-delfiles-by-search@latest
|
|
143
|
+
delfiles --version
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
用户安装方式:
|
|
147
|
+
```bash
|
|
148
|
+
npm install -g vscode-delfiles-by-search
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 6. 常见问题排查
|
|
152
|
+
|
|
153
|
+
**Q: 为什么 CLI 报错 "permission denied"?**
|
|
154
|
+
A: 请检查 `./bin/delfiles-cli.js` 是否具有执行权限。可以运行 `chmod +x ./bin/delfiles-cli.js` 修复。
|
|
155
|
+
|
|
156
|
+
**Q: 插件无法解析文件路径?**
|
|
157
|
+
A: 请确保输入的文本格式符合预期,通常应包含 `path/to/file.ext:` 格式。您可以在 `src/core/parser.js` 中查看具体的正则匹配逻辑。
|
|
158
|
+
|
|
159
|
+
**Q: 误删了文件怎么办?**
|
|
160
|
+
A: 默认情况下 (`moveToTrash: true`),文件会被移动到系统回收站。如果使用了 `--no-trash` 参数或配置,文件将被永久删除,无法恢复。
|
|
161
|
+
|
|
162
|
+
## 7. 目录结构说明
|
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Proprietary License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 guifengxiao
|
|
4
|
+
|
|
5
|
+
All rights reserved.
|
|
6
|
+
|
|
7
|
+
1. **Usage Rights**:
|
|
8
|
+
You are granted a non-exclusive, non-transferable license to install and use this software extension ("Software") solely for personal or internal business purposes within the Visual Studio Code, Trae, or compatible editor environments.
|
|
9
|
+
|
|
10
|
+
2. **Restrictions**:
|
|
11
|
+
- You may NOT modify, reverse engineer, decompile, or disassemble the Software.
|
|
12
|
+
- You may NOT redistribute, sublicense, rent, lease, or sell the Software or any part of it.
|
|
13
|
+
- You may NOT create derivative works based on the Software.
|
|
14
|
+
- You may NOT remove or alter any copyright, trademark, or other proprietary notices.
|
|
15
|
+
|
|
16
|
+
3. **No Warranty**:
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
18
|
+
|
|
19
|
+
4. **Termination**:
|
|
20
|
+
This license is effective until terminated. Your rights under this license will terminate automatically without notice if you fail to comply with any of its terms. Upon termination, you must cease all use of the Software and destroy all copies.
|
package/PUBLISHING.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
|
|
2
|
+
# 多平台插件发布操作指南
|
|
3
|
+
|
|
4
|
+
本文档提供了将 `deletefiles-by-search` 插件发布到 **Trae**、**VS Code** 和 **Cursor** 插件市场的详细操作步骤。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. 发布前准备
|
|
9
|
+
|
|
10
|
+
在发布到任何平台之前,请确保完成以下检查:npm install -g @vscode/vsce
|
|
11
|
+
|
|
12
|
+
1. **更新版本号**:在 `package.json` 中增加版本号(例如从 `0.0.1` 到 `0.0.4`)。
|
|
13
|
+
2. **更新文档**:确保 `README.md` 和 `USAGE.md` 是最新的。
|
|
14
|
+
3. **安装打包工具**:
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @vscode/vsce
|
|
17
|
+
```
|
|
18
|
+
4. **构建并验证**:
|
|
19
|
+
在本地打包 `.vsix` 文件进行最终测试。
|
|
20
|
+
```bash
|
|
21
|
+
vsce package
|
|
22
|
+
# 生成文件示例: vscode-delfiles-by-search-0.0.4.vsix
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. 发布到 VS Code Marketplace (Visual Studio Code)
|
|
28
|
+
|
|
29
|
+
VS Code 插件市场是目前最大的插件分发平台。
|
|
30
|
+
|
|
31
|
+
### 步骤
|
|
32
|
+
|
|
33
|
+
1. **创建账号**:
|
|
34
|
+
* 访问 [Marketplace Management Portal](https://marketplace.visualstudio.com/manage)。
|
|
35
|
+
* 使用 Microsoft 账号登录。
|
|
36
|
+
2. **创建 Publisher (发布者)**:
|
|
37
|
+
* 如果还没有发布者账号,请创建一个。发布者 ID 需要与 `package.json` 中的 `publisher` 字段一致(当前为 `guifengxiao`)。
|
|
38
|
+
3. **获取 Access Token**:
|
|
39
|
+
* 访问 [Azure DevOps](https://dev.azure.com/)。
|
|
40
|
+
* 进入 User Settings -> Personal Access Tokens。
|
|
41
|
+
* 创建一个新的 Token,Organization 选择 "All accessible organizations",Scope 选择 "Marketplace -> Manage"。
|
|
42
|
+
4. **命令行发布**:
|
|
43
|
+
```bash
|
|
44
|
+
vsce login guifengxiao
|
|
45
|
+
# 输入上一步获取的 Access Token
|
|
46
|
+
|
|
47
|
+
vsce publish
|
|
48
|
+
```
|
|
49
|
+
5. **手动上传(可选)**:
|
|
50
|
+
* 如果在命令行遇到网络问题,可以在 Marketplace Portal 页面点击 "New Extension" -> "Visual Studio Code",上传本地生成的 `.vsix` 文件。
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 3. 发布到 Trae 插件市场
|
|
55
|
+
|
|
56
|
+
Trae 是字节跳动推出的新一代 IDE,完全兼容 VS Code 插件生态。
|
|
57
|
+
|
|
58
|
+
### 步骤
|
|
59
|
+
|
|
60
|
+
1. **准备 .vsix 文件**:
|
|
61
|
+
使用前文生成的 `.vsix` 文件。Trae 直接支持标准 VS Code 插件格式。
|
|
62
|
+
2. **提交审核**:
|
|
63
|
+
* 由于 Trae 市场目前可能尚未完全自助开放,通常有两种方式:
|
|
64
|
+
* **官方收录**:Trae 会定期从 Open VSX 或 VS Code Marketplace 同步热门插件。
|
|
65
|
+
* **手动提交**:请访问 Trae 开发者中心(或通过 Trae IDE 内的反馈渠道),提交您的 `.vsix` 文件或 Marketplace 链接进行审核。
|
|
66
|
+
3. **本地安装测试**:
|
|
67
|
+
* 在 Trae 中,打开扩展面板 -> 点击右上角 "..." -> "从 VSIX 安装..."。
|
|
68
|
+
* 选择生成的 `.vsix` 文件,验证功能是否正常。
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4. 发布到 Open VSX Registry (Cursor / Gitpod)
|
|
73
|
+
|
|
74
|
+
Cursor 和 Gitpod 等基于开源 VS Code 的 IDE 通常使用 Open VSX Registry 作为插件源。
|
|
75
|
+
|
|
76
|
+
### 步骤
|
|
77
|
+
|
|
78
|
+
1. **创建账号**:
|
|
79
|
+
* 访问 [Open VSX Registry](https://open-vsx.org/)。
|
|
80
|
+
* 使用 GitHub 账号登录。
|
|
81
|
+
2. **创建 Namespace**:
|
|
82
|
+
* 进入 Settings -> Namespaces。
|
|
83
|
+
* 创建一个与 `package.json` 中 `publisher` 一致的 Namespace (`guifengxiao`)。
|
|
84
|
+
* *注意:如果该 Namespace 已被占用,您可能需要修改 `package.json` 中的 publisher 并重新打包。*
|
|
85
|
+
3. **获取 Access Token**:
|
|
86
|
+
* 在 Settings -> Access Tokens 中生成一个新的 Token。
|
|
87
|
+
4. **安装发布工具**:
|
|
88
|
+
```bash
|
|
89
|
+
npm install -g ovsx
|
|
90
|
+
```
|
|
91
|
+
5. **发布**:
|
|
92
|
+
```bash
|
|
93
|
+
ovsx publish vscode-delfiles-by-search-0.0.4.vsix -p <YOUR_ACCESS_TOKEN>
|
|
94
|
+
```
|
|
95
|
+
6. **Cursor 验证**:
|
|
96
|
+
* 发布成功后,Cursor 用户通常可以在几个小时内通过插件市场搜索到该插件。
|
|
97
|
+
* 您也可以直接将 `.vsix` 文件拖入 Cursor 窗口进行手动安装。
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 5. 常见问题 (FAQ)
|
|
102
|
+
|
|
103
|
+
**Q: `vsce package` 报错 "Make sure to edit the README.md file"?**
|
|
104
|
+
A: `vsce` 会检查 README 是否包含默认模板内容。请确保已移除所有生成的默认文本。
|
|
105
|
+
|
|
106
|
+
**Q: Cursor 搜不到我的插件?**
|
|
107
|
+
A: Cursor 主要依赖 Open VSX。确保您已成功发布到 Open VSX。如果是刚刚发布,可能需要等待索引更新。
|
|
108
|
+
|
|
109
|
+
**Q: 发布后发现 Bug 怎么办?**
|
|
110
|
+
A: 修复代码 -> 更新 `package.json` 版本号 -> 重新打包 -> 再次执行发布命令。市场会自动推送更新给用户。
|
package/README.md
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
|
|
2
|
+
[English Version](#english-readme) | [中文文档](#chinese-readme)
|
|
3
|
+
|
|
4
|
+
<a id="english-readme"></a>
|
|
5
|
+
# Delete Files from Search Results
|
|
6
|
+
|
|
7
|
+
An efficient dual-mode tool (VSCode Extension + CLI) designed for batch file deletion. It intelligently parses various search result texts (e.g., VSCode global search, grep output) to extract file paths and provides safe batch deletion capabilities.
|
|
8
|
+
|
|
9
|
+
## 📦 Installation
|
|
10
|
+
|
|
11
|
+
### VS Code Extension
|
|
12
|
+
Search for `Delete Files from Search Results` in the VS Code Marketplace and install it.
|
|
13
|
+
|
|
14
|
+
### CLI Tool
|
|
15
|
+
You can also use it as a command-line tool via npm:
|
|
16
|
+
```bash
|
|
17
|
+
npm install -g vscode-delfiles-by-search
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 🚀 VS Code Extension Usage
|
|
21
|
+
|
|
22
|
+
### Quick Start
|
|
23
|
+
1. **Prepare Data**: Get text containing file paths.
|
|
24
|
+
* *Scenario A*: Right-click in VSCode global search results -> "Copy All".
|
|
25
|
+
* *Scenario B*: Directly select a text block containing paths in the editor.
|
|
26
|
+
* *Scenario C*: Copy any external text containing file paths.
|
|
27
|
+
|
|
28
|
+
2. **Execute Command**:
|
|
29
|
+
* Open Command Palette (`Cmd+Shift+P` or `Ctrl+Shift+P`).
|
|
30
|
+
* Type `Delete Files from Search Results` and press Enter.
|
|
31
|
+
|
|
32
|
+
3. **Interaction Flow**:
|
|
33
|
+
* **Select Source**: The plugin automatically detects your context and pops up a QuickPick menu.
|
|
34
|
+
* `Use Selected Text`: Recommended.
|
|
35
|
+
* `Use Clipboard Content`: Supports preview for confirmation.
|
|
36
|
+
* `Manual Input`: Paste manually if the above options don't fit.
|
|
37
|
+
* `Regex Search` (New): Directly input regex to scan and delete matching files in the project.
|
|
38
|
+
* **Filter Files**: After parsing, a list of files to be deleted will be shown. You can **uncheck** files you don't want to delete.
|
|
39
|
+
* **Final Confirmation**: Select "Confirm Delete" to execute, or "Dry Run" to preview.
|
|
40
|
+
|
|
41
|
+
## 💻 CLI Usage
|
|
42
|
+
|
|
43
|
+
The CLI tool offers a powerful interactive mode for terminal users.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Interactive Mode (Recommended)
|
|
47
|
+
delfiles
|
|
48
|
+
|
|
49
|
+
# Parse from string
|
|
50
|
+
delfiles -s "path/to/file.js: ..."
|
|
51
|
+
|
|
52
|
+
# Dry Run (Simulation)
|
|
53
|
+
delfiles --dry-run
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Features
|
|
57
|
+
* **Interactive Mode**: Guides you through input selection (Clipboard/Manual/Regex).
|
|
58
|
+
* **Clipboard Support**: Directly read from system clipboard.
|
|
59
|
+
* **Safety**: Defaults to moving files to trash (configurable).
|
|
60
|
+
|
|
61
|
+
## ⚙️ Configuration (VS Code)
|
|
62
|
+
|
|
63
|
+
You can configure `delfiles` in VSCode Settings:
|
|
64
|
+
|
|
65
|
+
* `delfiles.basePath`: Base directory for relative paths. Defaults to `${workspaceFolder}`.
|
|
66
|
+
* `delfiles.moveToTrash`: Deletion method. Defaults to `true` (move to trash), set to `false` for permanent deletion (Use with caution!).
|
|
67
|
+
* `delfiles.ignorePatterns`: Global ignore rules. Supports Glob pattern arrays, e.g., `["node_modules/**", "*.test.js"]`.
|
|
68
|
+
|
|
69
|
+
## 🛡️ Safety Features
|
|
70
|
+
|
|
71
|
+
* **Default Trash**: Files are moved to the system trash by default to prevent accidental deletion.
|
|
72
|
+
* **Dry Run**: Supports Dry Run mode to preview before execution.
|
|
73
|
+
* **Smart Filtering**: Automatically excludes code lines and comments, accurately identifying file paths.
|
|
74
|
+
* **Interactive Confirmation**: Double assurance via file list confirmation and final popup confirmation.
|
|
75
|
+
|
|
76
|
+
## 📝 FAQ
|
|
77
|
+
|
|
78
|
+
**Q: Cannot parse file paths?**
|
|
79
|
+
A: The plugin supports various path formats (e.g., `path/to/file.js` or `path/to/file.js:`). Ensure the text contains clear file path characteristics.
|
|
80
|
+
|
|
81
|
+
**Q: Files still exist after deletion?**
|
|
82
|
+
A: Check the Output panel (`View -> Output -> Delete Files`) for detailed logs. It might be a permission issue or the file is in use.
|
|
83
|
+
|
|
84
|
+
## 📄 License
|
|
85
|
+
|
|
86
|
+
This project is licensed under the [Proprietary License](https://gitee.com/xiaogf/plugin-delfiles/blob/master/LICENSE).
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
<a id="chinese-readme"></a>
|
|
91
|
+
# Delete Files from Search Results - 使用说明
|
|
92
|
+
|
|
93
|
+
这是一个高效的双模式工具(VSCode 插件 + CLI),专为批量删除文件而设计。它能智能解析各种搜索结果文本(如 VSCode 全局搜索、grep 输出等),从中提取文件路径,并提供安全的批量删除功能。
|
|
94
|
+
|
|
95
|
+
## 📦 安装指南
|
|
96
|
+
|
|
97
|
+
### VS Code 插件
|
|
98
|
+
在 VS Code 扩展市场搜索 `Delete Files from Search Results` 并安装。
|
|
99
|
+
|
|
100
|
+
### CLI 命令行工具
|
|
101
|
+
您也可以通过 npm 安装为全局命令行工具:
|
|
102
|
+
```bash
|
|
103
|
+
npm install -g vscode-delfiles-by-search
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 🚀 VS Code 插件使用
|
|
107
|
+
|
|
108
|
+
### 快速开始
|
|
109
|
+
1. **准备数据**:获取包含文件路径的文本。
|
|
110
|
+
* *场景 A*:在 VSCode 全局搜索结果中右键 -> "Copy All"。
|
|
111
|
+
* *场景 B*:直接选中编辑器中的一段包含路径的文本。
|
|
112
|
+
* *场景 C*:复制任何包含文件路径的外部文本。
|
|
113
|
+
|
|
114
|
+
2. **执行命令**:
|
|
115
|
+
* 打开命令面板 (`Cmd+Shift+P` 或 `Ctrl+Shift+P`)。
|
|
116
|
+
* 输入 `Delete Files from Search Results` 并回车。
|
|
117
|
+
|
|
118
|
+
3. **交互流程**:
|
|
119
|
+
* **选择来源**:插件会自动检测您的上下文,弹出一个快速选择菜单 (QuickPick)。
|
|
120
|
+
* `使用选中的文本`:优先推荐。
|
|
121
|
+
* `使用剪贴板内容`:支持预览,方便确认。
|
|
122
|
+
* `手动输入`:如果前两者都不符合,可手动粘贴。
|
|
123
|
+
* `独立正则搜索` (新增):直接输入正则表达式,插件会自动扫描项目中内容匹配的文件。
|
|
124
|
+
* **过滤文件**:解析成功后,会列出所有待删除文件。您可以**取消勾选**那些不想删除的文件。
|
|
125
|
+
* **最终确认**:选择“确定删除”执行操作,或选择“仅模拟运行 (Dry Run)”查看预览。
|
|
126
|
+
|
|
127
|
+
## 💻 CLI 命令行使用
|
|
128
|
+
|
|
129
|
+
CLI 工具为终端用户提供了强大的交互式体验。
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 进入交互模式 (推荐)
|
|
133
|
+
delfiles
|
|
134
|
+
|
|
135
|
+
# 直接解析字符串
|
|
136
|
+
delfiles -s "path/to/file.js: ..."
|
|
137
|
+
|
|
138
|
+
# 模拟运行 (Dry Run)
|
|
139
|
+
delfiles --dry-run
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 核心特性
|
|
143
|
+
* **交互式模式**:引导式选择输入源(剪贴板/手动输入/正则搜索)。
|
|
144
|
+
* **剪贴板支持**:直接读取系统剪贴板内容。
|
|
145
|
+
* **安全删除**:默认将文件移动到回收站(可配置)。
|
|
146
|
+
|
|
147
|
+
## ⚙️ 配置选项 (VS Code)
|
|
148
|
+
|
|
149
|
+
您可以在 VSCode 设置中搜索 `delfiles` 进行配置:
|
|
150
|
+
|
|
151
|
+
* `delfiles.basePath`: 相对路径的基准目录。默认为 `${workspaceFolder}`(当前工作区根目录)。
|
|
152
|
+
* `delfiles.moveToTrash`: 删除方式。默认为 `true`(移动到回收站),设为 `false` 则永久删除(慎用!)。
|
|
153
|
+
* `delfiles.ignorePatterns`: 全局忽略规则。支持 Glob 模式数组,例如 `["node_modules/**", "*.test.js"]`。
|
|
154
|
+
|
|
155
|
+
## 🛡️ 安全特性
|
|
156
|
+
|
|
157
|
+
* **默认回收站**:文件默认被移动到系统回收站,防止误删。
|
|
158
|
+
* **模拟运行**:支持 Dry Run 模式,先预览后执行。
|
|
159
|
+
* **智能过滤**:自动排除代码行、注释行,精准识别文件路径。
|
|
160
|
+
* **交互确认**:必须经过文件列表确认和最终弹窗确认双重保障。
|
|
161
|
+
|
|
162
|
+
## 📝 常见问题
|
|
163
|
+
|
|
164
|
+
**Q: 解析不到文件?**
|
|
165
|
+
A: 插件支持多种路径格式(如 `path/to/file.js` 或 `path/to/file.js:`)。请确保文本中包含清晰的文件路径特征。
|
|
166
|
+
|
|
167
|
+
**Q: 即使我勾选了删除,文件还在?**
|
|
168
|
+
A: 请检查输出面板 (`View -> Output -> Delete Files`) 查看详细日志,可能是权限问题或文件被占用。
|
|
169
|
+
|
|
170
|
+
## 📄 许可证
|
|
171
|
+
|
|
172
|
+
本项目采用 [Proprietary License](https://gitee.com/xiaogf/plugin-delfiles/blob/master/LICENSE) 许可证。
|
|
173
|
+
|
|
174
|
+
- 支持 `.gitignore` 风格的持久化忽略规则。
|
|
175
|
+
- 完善了开发者文档和测试用例。
|
|
176
|
+
|
|
177
|
+
### v0.0.1 (Initial Release)
|
|
178
|
+
- 实现了核心的字符串解析逻辑。
|
|
179
|
+
- 实现了基于 `trash` 的安全删除功能。
|
|
180
|
+
- 提供了基本的 VSCode 插件命令。
|
|
181
|
+
- 提供了基本的 CLI 工具。
|
|
182
|
+
- 支持 `--dry-run` 模式。
|
|
183
|
+
- 支持 `--ignore` 参数和交互式 CLI 模式。
|
package/USAGE.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
|
|
2
|
+
# Delete Files from Search Results - 使用说明
|
|
3
|
+
|
|
4
|
+
这是一个高效的 VSCode 插件,专为批量删除文件而设计。它能智能解析各种搜索结果文本(如 VSCode 全局搜索、grep 输出等),从中提取文件路径,并提供安全的批量删除功能。
|
|
5
|
+
|
|
6
|
+
## 🚀 快速开始
|
|
7
|
+
|
|
8
|
+
1. **准备数据**:获取包含文件路径的文本。
|
|
9
|
+
* *场景 A*:在 VSCode 全局搜索结果中右键 -> "Copy All"。
|
|
10
|
+
* *场景 B*:直接选中编辑器中的一段包含路径的文本。
|
|
11
|
+
* *场景 C*:复制任何包含文件路径的外部文本。
|
|
12
|
+
|
|
13
|
+
2. **执行命令**:
|
|
14
|
+
* 打开命令面板 (`Cmd+Shift+P` 或 `Ctrl+Shift+P`)。
|
|
15
|
+
* 输入 `Delete Files from Search Results` 并回车。
|
|
16
|
+
|
|
17
|
+
3. **交互流程**:
|
|
18
|
+
* **选择来源**:插件会自动检测您的上下文,弹出一个快速选择菜单 (QuickPick)。
|
|
19
|
+
* `使用选中的文本`:优先推荐。
|
|
20
|
+
* `使用剪贴板内容`:支持预览,方便确认。
|
|
21
|
+
* `手动输入`:如果前两者都不符合,可手动粘贴。
|
|
22
|
+
* `独立正则搜索` (新增):直接输入正则表达式,插件会自动扫描项目中内容匹配的文件。
|
|
23
|
+
* **过滤文件**:解析成功后,会列出所有待删除文件。您可以**取消勾选**那些不想删除的文件。
|
|
24
|
+
* **最终确认**:选择“确定删除”执行操作,或选择“仅模拟运行 (Dry Run)”查看预览。
|
|
25
|
+
|
|
26
|
+
## ⚙️ 配置选项
|
|
27
|
+
|
|
28
|
+
您可以在 VSCode 设置中搜索 `delfiles` 进行配置:
|
|
29
|
+
|
|
30
|
+
* `delfiles.basePath`: 相对路径的基准目录。默认为 `${workspaceFolder}`(当前工作区根目录)。
|
|
31
|
+
* `delfiles.moveToTrash`: 删除方式。默认为 `true`(移动到回收站),设为 `false` 则永久删除(慎用!)。
|
|
32
|
+
* `delfiles.ignorePatterns`: 全局忽略规则。支持 Glob 模式数组,例如 `["node_modules/**", "*.test.js"]`。
|
|
33
|
+
|
|
34
|
+
## 🛡️ 安全特性
|
|
35
|
+
|
|
36
|
+
* **默认回收站**:文件默认被移动到系统回收站,防止误删。
|
|
37
|
+
* **模拟运行**:支持 Dry Run 模式,先预览后执行。
|
|
38
|
+
* **智能过滤**:自动排除代码行、注释行,精准识别文件路径。
|
|
39
|
+
* **交互确认**:必须经过文件列表确认和最终弹窗确认双重保障。
|
|
40
|
+
|
|
41
|
+
## 📝 常见问题
|
|
42
|
+
|
|
43
|
+
**Q: 解析不到文件?**
|
|
44
|
+
A: 插件支持多种路径格式(如 `path/to/file.js` 或 `path/to/file.js:`)。请确保文本中包含清晰的文件路径特征。
|
|
45
|
+
|
|
46
|
+
**Q: 即使我勾选了删除,文件还在?**
|
|
47
|
+
A: 请检查输出面板 (`View -> Output -> Delete Files`) 查看详细日志,可能是权限问题或文件被占用。
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vscode-delfiles-by-search",
|
|
3
|
+
"displayName": "Delete Files from Search Results",
|
|
4
|
+
"description": "Parse search results string and delete corresponding files safely.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"version": "0.0.2",
|
|
7
|
+
"publisher": "guifengxiao",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://gitee.com/xiaogf/plugin-delfiles.git"
|
|
11
|
+
},
|
|
12
|
+
"engines": {
|
|
13
|
+
"vscode": "^1.74.0"
|
|
14
|
+
},
|
|
15
|
+
"categories": [
|
|
16
|
+
"Other"
|
|
17
|
+
],
|
|
18
|
+
"activationEvents": [
|
|
19
|
+
"onCommand:delfiles.parseAndDelete"
|
|
20
|
+
],
|
|
21
|
+
"main": "./src/extension/extension.js",
|
|
22
|
+
"contributes": {
|
|
23
|
+
"commands": [
|
|
24
|
+
{
|
|
25
|
+
"command": "delfiles.parseAndDelete",
|
|
26
|
+
"title": "Delete Files from Search Results"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"configuration": {
|
|
30
|
+
"title": "Delete Files from Search Results",
|
|
31
|
+
"properties": {
|
|
32
|
+
"delfiles.basePath": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"default": "${workspaceFolder}",
|
|
35
|
+
"description": "Base path for relative file paths in search results."
|
|
36
|
+
},
|
|
37
|
+
"delfiles.moveToTrash": {
|
|
38
|
+
"type": "boolean",
|
|
39
|
+
"default": true,
|
|
40
|
+
"description": "Move files to trash instead of permanent deletion."
|
|
41
|
+
},
|
|
42
|
+
"delfiles.ignorePatterns": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
},
|
|
47
|
+
"default": [],
|
|
48
|
+
"description": "Array of glob patterns to ignore during deletion (e.g., ['node_modules/**', '**/*.test.js'])."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"test": "mocha test/**/*.test.js",
|
|
55
|
+
"lint": "eslint ."
|
|
56
|
+
},
|
|
57
|
+
"bin": {
|
|
58
|
+
"delfiles": "bin/delfiles-cli.js"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@types/glob": "^8.0.0",
|
|
62
|
+
"@types/mocha": "^10.0.1",
|
|
63
|
+
"@types/node": "16.x",
|
|
64
|
+
"@types/vscode": "^1.74.0",
|
|
65
|
+
"@vscode/test-electron": "^2.2.0",
|
|
66
|
+
"eslint": "^8.28.0",
|
|
67
|
+
"glob": "^8.1.0",
|
|
68
|
+
"mocha": "^10.1.0",
|
|
69
|
+
"typescript": "^4.9.3"
|
|
70
|
+
},
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"clipboardy": "^2.3.0",
|
|
73
|
+
"commander": "^10.0.0",
|
|
74
|
+
"ignore": "^7.0.5",
|
|
75
|
+
"inquirer": "^8.2.7",
|
|
76
|
+
"minimatch": "^5.1.6",
|
|
77
|
+
"sinon": "^21.0.1",
|
|
78
|
+
"trash": "^8.1.0"
|
|
79
|
+
}
|
|
80
|
+
}
|