# ls-plus
使用 Rust 编写的增强版 `ls` 命令,提供现代化功能,支持双包管理系统安装。
## 功能特性
- 🚀 **快速高效** - 使用 Rust 构建,性能卓越
- 🎨 **美观输出** - 彩色输出与文件类型指示器
- 📁 **多种格式** - 支持不同显示格式(默认、详细、树形、网格、JSON)
- 🔍 **智能过滤** - 按文件类型过滤,模式匹配
- 🌳 **树形视图** - 层次化目录可视化
- ⚙️ **可配置** - 持久化配置,合理默认值
- 📊 **Git 集成** - 显示文件的 git 状态(可选)
- 🎯 **搜索功能** - 模式匹配查找文件
- 📦 **双包管理** - 同时支持 Cargo 和 npm 安装
## 安装
### Option 1: 通过 npm 安装(推荐)
适合 Node.js 开发者,无需安装 Rust 环境:
```bash
# 全局安装
npm install -g @atom/ls-plus
# 使用命令
lsp --help
```
### Option 2: 通过 Cargo 安装
适合 Rust 开发者:
```bash
cargo install ls-plus
```
### Option 3: 从源码安装
```bash
git clone https://github.com/oppenheimor/ls-plus.git
cd ls-plus
# 方式 1: 使用 npm(自动处理 Rust 构建)
npm install
# 方式 2: 直接使用 Cargo
cargo build --release
```
## 环境要求
### npm 安装
- Node.js 14+
- 无需 Rust 环境(自动下载预构建二进制)
### Cargo 安装
- Rust 1.74 或更新版本
- Git(可选,用于 git 集成功能)
## 使用方法
### 基本用法
```bash
# npm 安装用户使用 lsp 命令
lsp
# Cargo 安装用户使用 ls-plus 命令
ls-plus
# 列出指定目录
lsp /path/to/directory
ls-plus /path/to/directory
# 显示所有文件(包括隐藏文件)
ls-plus -a
# 详细格式显示
ls-plus -l
# 人类可读的文件大小
ls-plus -h
# 按修改时间排序
ls-plus -t
# 逆序排列
ls-plus -r
# 目录优先显示
ls-plus --directories-first
# 显示文件图标
ls-plus --icons
# 强制开启/关闭颜色
ls-plus --color always
ls-plus --color never
```
### 高级功能
```bash
# 树形视图
ls-plus tree /path/to/directory
# 限制树形深度
ls-plus tree -d 3 /path/to/directory
# 不同输出格式
ls-plus --format long
ls-plus --format tree
ls-plus --format grid
ls-plus --format json
# 按文件类型过滤
ls-plus --file-type dir # 仅目录
ls-plus --file-type file # 仅文件
ls-plus --file-type image # 仅图像文件
# 搜索文件
ls-plus find 模式 /搜索路径
# Git 集成
ls-plus --git
```
### 配置管理
```bash
# 显示当前配置
ls-plus config show
# 设置配置值
ls-plus config set display.show_icons true
ls-plus config set display.color_mode always
ls-plus config set behavior.directories_first true
# 重置为默认值
ls-plus config reset
# 编辑配置文件
ls-plus config edit
```
## 配置文件
配置文件位置:
- **Linux/macOS**: `~/.config/ls-plus/config.toml`
- **Windows**: `%APPDATA%/ls-plus/config.toml`
### 配置示例
```toml
[display]
default_format = "Default"
color_mode = "Auto"
show_icons = false
human_readable_sizes = true
directories_first = true
show_hidden = false
[behavior]
follow_symlinks = false
git_integration = false
max_depth = null
sort_by_time = false
reverse_sort = false
[icons]
enable_icons = false
icon_theme = "default"
[colors]
file_colors = true
size_colors = true
time_colors = true
permission_colors = true
```
## 开发
### 构建
```bash
# 调试构建
cargo build
# 发布构建
cargo build --release
# 运行测试
cargo test
# 带日志运行
RUST_LOG=debug cargo run -- /测试路径
```
### 测试
```bash
# 运行所有测试
cargo test
# 运行特定测试
cargo test test_basic_help
# 运行集成测试
cargo test --test integration_test
```
### 代码质量
```bash
# 格式化代码
cargo fmt
# 代码检查
cargo clippy
# 安全审计
cargo audit
```
## 双包架构说明
本项目采用创新的双包管理架构,同时支持 Rust 和 Node.js 生态:
### 🦀 Rust 包 (Cargo)
- **包名**: `ls-plus`
- **命令**: `ls-plus`
- **安装**: `cargo install ls-plus`
- **适用**: Rust 开发者,系统管理员
### 📦 Node.js 包 (npm)
- **包名**: `@atom/ls-plus`
- **命令**: `lsp`
- **安装**: `npm install -g @atom/ls-plus`
- **适用**: 前端开发者,Node.js 用户
### 技术实现
1. **智能安装脚本**: 自动检测环境,优先本地构建,回退到预构建二进制
2. **跨平台支持**: 自动检测操作系统和架构,下载对应的二进制文件
3. **统一功能**: 两种安装方式提供完全相同的功能和命令选项
4. **开发友好**: 开发环境自动构建,生产环境使用预构建二进制
## 项目结构
```
src/
├── main.rs # 应用程序入口
├── cli.rs # 命令行接口定义
├── config.rs # 配置管理
├── display.rs # 输出格式化和渲染
├── error.rs # 错误类型和处理
├── fs.rs # 文件系统操作
└── git.rs # Git 集成
bin/
└── lsp # npm 包命令行入口
tests/
└── integration_test.rs # 集成测试
package.json # npm 包配置
Cargo.toml # Rust 包配置
install.js # npm 智能安装脚本
index.js # npm 包主入口
```
## 贡献
1. Fork 仓库
2. 创建功能分支
3. 进行修改
4. 为新功能添加测试
5. 运行测试套件
6. 提交 Pull Request
## 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
## 路线图
- [ ] 自定义格式化器插件系统
- [ ] 云存储提供商集成
- [ ] 正则表达式高级搜索
- [ ] 性能基准测试工具
- [ ] Shell 自动补全脚本
- [ ] Man 页面生成
- [ ] Windows 特定优化
- [ ] 多语言支持