306 lines
10 KiB
Markdown
306 lines
10 KiB
Markdown
# Doom Emacs File Explorer Cheatsheet
|
|
|
|
## 🗂️ **What is Dired?**
|
|
|
|
Dired (Directory Editor) is Emacs' built-in file manager that allows you to navigate, manage, and manipulate files and directories efficiently.
|
|
- Browse directories with keyboard navigation
|
|
- Mark, copy, move, and delete files
|
|
- Execute commands on multiple files at once
|
|
- Integrate with other Emacs tools and buffers
|
|
|
|
## 📋 **Requirements**
|
|
- Doom Emacs (Dired is built-in)
|
|
- **Treemacs**: Must be enabled in `~/.doom.d/init.el` (uncomment `treemacs` line)
|
|
- Optional tools for enhanced functionality:
|
|
- `rsync` - Fast file synchronization and copying
|
|
- `fd` or `find` - Enhanced file finding
|
|
- `rg` (ripgrep) or `ag` (the_silver_searcher) - Fast text search
|
|
- `exa` or `lsd` - Enhanced directory listings
|
|
- `trash-cli` - Safe file deletion to trash
|
|
- `zip`/`unzip`, `tar`, `gzip` - Archive handling
|
|
|
|
## ⌨️ **Opening File Explorers**
|
|
|
|
### **Dired (Built-in File Manager):**
|
|
- `SPC .` - **Open Dired** in current directory
|
|
- `SPC f d` - **Find directory** (open Dired in specific path)
|
|
- `C-x d` - **Open Dired** (classic Emacs binding)
|
|
|
|
### **Project File Navigation:**
|
|
- `SPC SPC` - **Find file** in project
|
|
- `SPC f f` - **Find file** anywhere
|
|
- `SPC f r` - **Recent files**
|
|
- `SPC p f` - **Find file** in project
|
|
|
|
### **Tree-style Explorers:**
|
|
- `SPC o p` - **Toggle project sidebar** (Treemacs)
|
|
- `SPC f t` - **Find file** in tree
|
|
|
|
## 🧭 **Navigation in Dired**
|
|
|
|
### **Basic Movement:**
|
|
- `j/k` or `n/p` - **Move up/down** between files
|
|
- `h` - **Go up** one directory (parent)
|
|
- `l` or `RET` - **Enter directory** or open file
|
|
- `^` - **Go to parent directory**
|
|
- `g` - **Refresh** directory listing
|
|
|
|
### **Jumping Around:**
|
|
- `gg` - **Go to top** of listing
|
|
- `G` - **Go to bottom** of listing
|
|
- `/` - **Search** for file/directory name
|
|
- `SPC s s` - **Search within** directory
|
|
|
|
### **File Information:**
|
|
- `(` - **Toggle details** (show/hide file info)
|
|
- `s` - **Sort** files (by name, date, size)
|
|
- `C-h m` - **Show help** for current mode
|
|
|
|
## 📁 **File Operations**
|
|
|
|
### **Opening Files:**
|
|
- `RET` - **Open file** in current window
|
|
- `o` - **Open file** in other window
|
|
- `C-o` - **Open file** in other window (keep cursor in Dired)
|
|
- `v` - **View file** (read-only)
|
|
- `f` - **Find file** (same as RET)
|
|
|
|
### **Creating Files & Directories:**
|
|
- `+` - **Create directory**
|
|
- `SPC f c` - **Create file** (when in Dired buffer)
|
|
- `C-x C-f` - **Find/create file** (from Dired)
|
|
|
|
## 🏷️ **Marking Files**
|
|
|
|
### **Basic Marking:**
|
|
- `m` - **Mark file** for operations
|
|
- `u` - **Unmark file**
|
|
- `U` - **Unmark all** files
|
|
- `t` - **Toggle marks** (mark unmarked, unmark marked)
|
|
- `* %` - **Mark by regex** pattern
|
|
|
|
### **Quick Marking:**
|
|
- `* .` - **Mark by extension** (e.g., *.txt)
|
|
- `* /` - **Mark directories**
|
|
- `* @` - **Mark symlinks**
|
|
- `* *` - **Mark executables**
|
|
|
|
### **Advanced Marking:**
|
|
- `% m` - **Mark files** matching regex
|
|
- `% d` - **Mark for deletion** files matching regex
|
|
- `* c` - **Change marks** (change one mark to another)
|
|
|
|
## ✂️ **File Management Operations**
|
|
|
|
### **Copy, Move, Delete:**
|
|
- `C` - **Copy** marked files (or file under cursor)
|
|
- `R` - **Rename/Move** marked files
|
|
- `D` - **Delete** marked files immediately
|
|
- `d` - **Mark for deletion** (use `x` to execute)
|
|
- `x` - **Execute deletions** (delete files marked with `d`)
|
|
|
|
### **Deletion Options:**
|
|
- `d` then `x` - **Safe deletion** (mark first, then execute)
|
|
- `D` - **Immediate deletion** (bypass mark step)
|
|
- **Trash integration**: If `trash-cli` is installed, files go to trash instead of permanent deletion
|
|
|
|
### **Advanced Operations:**
|
|
- `Z` - **Compress/uncompress** files (uses `gzip`, `zip`, `tar` automatically)
|
|
- `A` - **Search** in marked files (uses `grep` or `rg` if available)
|
|
- `Q` - **Query replace** in marked files
|
|
- `!` - **Run shell command** on marked files
|
|
- `&` - **Run async shell command** on marked files
|
|
|
|
## 📋 **Copying & Moving**
|
|
|
|
### **Copy Operations:**
|
|
- `C` - **Copy files** (prompts for destination)
|
|
- Works with marked files or single file under cursor
|
|
- Uses `rsync` if available for faster, resumable copying
|
|
- Supports copying to different drives/partitions
|
|
|
|
### **Move/Rename Operations:**
|
|
- `R` - **Rename/Move** files
|
|
- Can rename single files or move multiple marked files
|
|
- Supports moving across directories
|
|
|
|
### **Tips for Copy/Move:**
|
|
- Mark multiple files first, then use `C` or `R`
|
|
- Tab completion works for destination paths
|
|
- Use relative paths (`.`, `..`) for quick navigation
|
|
|
|
## 🔍 **Search & Filter**
|
|
|
|
### **Finding Files:**
|
|
- `/` - **Search** file names in current listing
|
|
- `n/N` - **Next/previous** search match
|
|
|
|
### **Enhanced Search (with external tools):**
|
|
- `A` - **Search inside files** (uses `rg` > `ag` > `grep` in priority order)
|
|
- Much faster with `ripgrep` or `the_silver_searcher`
|
|
- Supports regex patterns and file type filtering
|
|
|
|
### **Filtering Display:**
|
|
- `(` - **Toggle** detailed view
|
|
- `s` - **Sort** by different criteria
|
|
- `C-u s` - **Sort** with custom options
|
|
|
|
### **Content Search:**
|
|
- `A` - **Search inside** marked files
|
|
- `Q` - **Query replace** across marked files
|
|
|
|
## 🔧 **Advanced Features**
|
|
|
|
### **Wdired (Writable Dired):**
|
|
- `C-x C-q` - **Edit filenames** directly (like renaming)
|
|
- Edit filenames as text, then `C-c C-c` to apply changes
|
|
- `C-c C-k` to cancel edits
|
|
|
|
### **Multiple Windows:**
|
|
- `o` - **Open in other window**
|
|
- `C-o` - **Display in other window** (stay in Dired)
|
|
- `2` - **Split window** vertically for two Dired views
|
|
|
|
### **Subdirectories:**
|
|
- `i` - **Insert subdirectory** in same buffer
|
|
- `$` - **Hide/show** subdirectory contents
|
|
- `M-$` - **Hide all** subdirectories
|
|
|
|
## 📊 **File Comparison**
|
|
|
|
### **Diff Operations:**
|
|
- `=` - **Diff file** with another
|
|
- `M-=` - **Diff** marked files against each other
|
|
- Works with external diff tools
|
|
|
|
## 🗜️ **Archive Operations**
|
|
|
|
### **Compression & Archives:**
|
|
- `Z` - **Compress/decompress** automatically detects format
|
|
- Supports: `.gz`, `.zip`, `.tar`, `.tar.gz`, `.tar.xz`, `.7z`
|
|
- Uses appropriate tools: `gzip`, `zip`, `tar`, `7z`
|
|
|
|
### **Archive Viewing:**
|
|
- Open `.zip`, `.tar`, etc. files directly to browse contents
|
|
- Extract specific files from archives
|
|
|
|
## 🎛️ **Customization & Settings**
|
|
|
|
### **View Options:**
|
|
- `(` - **Toggle** between simple and detailed view
|
|
- `s` - **Cycle** through sort orders (name, date, size)
|
|
- Enhanced listings with `exa` or `lsd` if available
|
|
|
|
### **Useful Settings:**
|
|
- Dired reuses buffers by default in Doom
|
|
- Auto-refresh on file changes
|
|
- Integration with Evil mode keybindings
|
|
|
|
## ⚡ **Treemacs (Tree Explorer)**
|
|
|
|
### **Basic Treemacs:**
|
|
- `SPC o p` - **Toggle** Treemacs sidebar
|
|
- `j/k` - **Navigate** up/down in tree
|
|
- `RET` - **Open file** or expand/collapse directory
|
|
- `TAB` - **Expand/collapse** directory
|
|
|
|
### **Treemacs File Operations:**
|
|
- `cf` - **Create file**
|
|
- `cd` - **Create directory**
|
|
- `R` - **Rename**
|
|
- `d` - **Delete**
|
|
- `yy` - **Copy** path to clipboard
|
|
|
|
## 🚀 **Quick Start Workflow**
|
|
|
|
### **Basic File Management:**
|
|
1. **Press `SPC .`** - Open Dired in current directory
|
|
2. **Navigate with `j/k`** - Move between files
|
|
3. **Mark files with `m`** - Select multiple files
|
|
4. **Use `C` to copy** or `R` to move/rename
|
|
5. **Press `g`** to refresh when done
|
|
|
|
### **Efficient File Operations:**
|
|
1. **Mark multiple files** with `m`
|
|
2. **Execute batch operations** (`C` for copy, `R` for move)
|
|
3. **Use `!`** to run shell commands on marked files
|
|
4. **Toggle details with `(`** for more/less information
|
|
|
|
## 📚 **Essential Keybind Summary**
|
|
|
|
| Action | Key | Description |
|
|
|--------|-----|-------------|
|
|
| Open Dired | `SPC .` | Open file explorer |
|
|
| Navigate | `j/k` | Move up/down |
|
|
| Enter/Open | `RET` or `l` | Open file/directory |
|
|
| Parent Dir | `h` or `^` | Go up one directory |
|
|
| Mark | `m` | Mark file for operations |
|
|
| Copy | `C` | Copy marked files |
|
|
| Move/Rename | `R` | Move or rename files |
|
|
| Delete | `d` then `x` | Mark for deletion, execute |
|
|
| Create Dir | `+` | Create new directory |
|
|
| Compress | `Z` | Compress/decompress |
|
|
| Search Files | `A` | Search inside files |
|
|
| Refresh | `g` | Refresh directory listing |
|
|
| Help | `?` | Show available commands |
|
|
|
|
## 🔧 **Troubleshooting**
|
|
|
|
### **Common Issues:**
|
|
- **Dired buffer not updating?** Press `g` to refresh
|
|
- **Can't see file details?** Press `(` to toggle detailed view
|
|
- **Operations feel slow?** Use marking (`m`) for batch operations
|
|
- **Wrong sort order?** Press `s` to cycle through sort options
|
|
|
|
### **Performance Tips:**
|
|
- Install `fd` for faster file finding
|
|
- Install `rg` (ripgrep) for faster text search
|
|
- Use `rsync` for efficient file copying
|
|
- Consider `exa` or `lsd` for enhanced directory listings
|
|
|
|
### **Getting Help:**
|
|
- `?` - **Context help** in any Dired buffer
|
|
- `C-h m` - **Mode-specific help**
|
|
- `SPC h d f dired` - **Full Dired documentation**
|
|
|
|
## 📋 **Comparison: Dired vs Treemacs**
|
|
|
|
### **Use Dired when:**
|
|
- Managing multiple files at once
|
|
- Need detailed file information
|
|
- Performing batch operations
|
|
- Working with file permissions/ownership
|
|
|
|
### **Use Treemacs when:**
|
|
- Quick project overview
|
|
- Simple file navigation
|
|
- Prefer visual tree structure
|
|
- Need persistent sidebar
|
|
|
|
## 🛠️ **External Tool Integration**
|
|
|
|
### **Recommended Tools:**
|
|
- **`rsync`** - Fast, reliable file copying with resume capability
|
|
- **`ripgrep` (rg)** - Extremely fast text search, much faster than grep
|
|
- **`fd`** - Fast alternative to find with better defaults
|
|
- **`exa`** - Modern replacement for ls with colors and git integration
|
|
- **`trash-cli`** - Safe deletion to trash instead of permanent removal
|
|
- **`7z`** - Handle 7zip archives and other compression formats
|
|
|
|
### **Installation (Debian/Ubuntu):**
|
|
```bash
|
|
sudo apt install rsync ripgrep fd-find exa trash-cli p7zip-full
|
|
```
|
|
|
|
## 🎯 **Pro Tips**
|
|
|
|
- **Batch operations**: Mark files first (`m`), then execute operations
|
|
- **Quick navigation**: Use `/` to search for files by name
|
|
- **Edit filenames**: Use `C-x C-q` for Wdired mode to rename multiple files
|
|
- **Shell integration**: Use `!` to run shell commands on files
|
|
- **Multiple directories**: Use `i` to show subdirectories in same buffer
|
|
- **Safe deletion**: Install `trash-cli` to send files to trash instead of permanent deletion
|
|
- **Fast search**: Install `ripgrep` for lightning-fast text search in files
|
|
|
|
Dired provides a comprehensive file management experience that integrates well with external Linux tools, making file operations both efficient and powerful.
|