Improved flow

This commit is contained in:
Morten Olsen
2026-01-26 23:04:14 +01:00
parent d9950b3e4d
commit b3b70bceeb
28 changed files with 4492 additions and 7 deletions

View File

@@ -0,0 +1,164 @@
# Database Cheatsheet
## Quick Reference
| Key | Action |
|-----|--------|
| `<leader>Du` | Toggle DBUI |
| `<leader>Da` | Add connection |
| `<leader>Df` | Find DB buffer |
## Opening DBUI
```
<leader>Du Toggle database UI
<leader>Da Add new connection
```
## Connection Strings
### PostgreSQL
```
postgresql://user:password@localhost:5432/dbname
postgres://user:password@localhost/dbname
# With SSL
postgresql://user:password@host:5432/dbname?sslmode=require
```
### SQLite
```
sqlite:path/to/database.db
sqlite:./local.db
sqlite::memory:
```
## DBUI Navigation
```
<cr> Toggle node / Execute query
o Open node
R Refresh
d Delete
r Rename
S Sort by
H Toggle help
q Close
```
## Writing Queries
1. `<leader>Du` - Open DBUI
2. Navigate to database
3. Press `<cr>` on "New Query"
4. Write SQL
5. `<leader>Rs` or `<cr>` to execute
## Query Execution
In a `.sql` buffer connected to DBUI:
```
<cr> Execute query under cursor
<leader>Rs Execute query (visual: selected)
```
## Table Helpers
Right-click or press `<cr>` on a table for quick actions:
### PostgreSQL
- Count: `SELECT COUNT(*) FROM table`
- First10: `SELECT * FROM table LIMIT 10`
- Schema: `\d+ table`
### SQLite
- Count: `SELECT COUNT(*) FROM table`
- First10: `SELECT * FROM table LIMIT 10`
- Schema: `.schema table`
## Buffer Management
```
<leader>Df Find DB buffer
<leader>Dr Rename DB buffer
<leader>Dl Last query info
```
## Common Workflows
### Connect to Database
1. `<leader>Da` - Add connection
2. Enter connection string
3. Give it a name
4. Connection saved for future sessions
### Explore Schema
1. `<leader>Du` - Open DBUI
2. Expand database node
3. Expand "Tables" node
4. `<cr>` on table for helpers
### Run Ad-hoc Query
1. `<leader>Du` - Open DBUI
2. Navigate to database
3. New Query
4. Write SQL:
```sql
SELECT * FROM users WHERE active = true LIMIT 10;
```
5. Execute with `<cr>`
### Export Results
After running query:
1. Results appear in split
2. `:w filename.csv` to save
## Tips
### Multiple Databases
- Add multiple connections
- Switch by selecting in DBUI
- Each buffer tracks its connection
### Environment Variables
Connection strings can use env vars:
```
postgresql://$DB_USER:$DB_PASS@$DB_HOST/$DB_NAME
```
### SSH Tunnels
For remote databases, set up SSH tunnel first:
```bash
ssh -L 5432:localhost:5432 user@server
```
Then connect to `localhost:5432`.
## Troubleshooting
### Connection Failed
- Check credentials
- Verify database is running
- Check firewall/network
### Missing Adapter
Run `:checkhealth` and verify:
- `vim-dadbod` installed
- Database client available (psql, sqlite3)
### Slow Queries
- Add `LIMIT` to large tables
- Use `EXPLAIN` to analyze

View File

@@ -0,0 +1,142 @@
# Git Workflow Cheatsheet
## Quick Reference
| Key | Action |
|-----|--------|
| `<leader>gd` | Open diff view |
| `<leader>gD` | Close diff view |
| `<leader>gf` | File history |
| `<leader>gB` | Toggle blame |
| `<leader>gpl` | List PRs |
| `<leader>gpc` | Create PR |
## Viewing Changes
### Diffview
```
<leader>gd Open diff view (staged + unstaged)
<leader>gD Close diff view
<leader>gf Current file history
<leader>gF Branch history
<leader>gm Compare to origin/main
<leader>gM Compare to origin/master
```
### In Diffview File Panel
**Important**: Staging keys only work when focused on the file panel (left side).
```
j/k Navigate files
<cr> Open file diff
- Stage/unstage file (must be in file panel)
S Stage all files
U Unstage all files
X Revert file changes
<tab> Toggle file panel visibility
<leader>e Focus file panel
<leader>b Toggle file panel
R Refresh file list
g? Show help
```
**Note**: Use `<leader>gd` (not `<leader>gf`) to open diffview with staging capabilities. File history (`<leader>gf`) is read-only.
## Blame
```
<leader>gB Toggle inline blame
<leader>go Open commit in browser
<leader>gy Copy commit URL
```
## Staging & Committing (Gitsigns)
```
]h Next hunk
[h Previous hunk
<leader>ghs Stage hunk
<leader>ghr Reset hunk
<leader>ghS Stage buffer
<leader>ghu Undo stage hunk
<leader>ghp Preview hunk
<leader>ghb Blame line
```
## Pull Requests (Octo)
### Listing & Navigation
```
<leader>gpl List PRs
<leader>gpo Checkout PR
<leader>gpb Open PR in browser
<leader>gpd Show PR diff
```
### Creating & Managing
```
<leader>gpc Create PR
<leader>gpr Mark PR ready
<leader>gpm Merge PR
```
### Reviewing
```
<leader>grs Start review
<leader>grr Resume review
<leader>grc Submit review
<leader>grd Discard review
```
### In PR Buffer
```
<leader>ca Add comment
<leader>cd Delete comment
<leader>sa Approve
<leader>sc Comment
<leader>sr Request changes
```
## Issues (Octo)
```
<leader>gil List issues
<leader>gic Create issue
<leader>gib Open in browser
```
## Common Workflows
### Review a PR
1. `<leader>gpl` - List PRs
2. Select PR and press `<cr>`
3. `<leader>grs` - Start review
4. Navigate files, add comments
5. `<leader>grc` - Submit review
### Compare Branch to Main
1. `<leader>gm` - Open diff vs main
2. Review changes in split view
3. `<leader>gD` - Close when done
### Investigate File History
1. `<leader>gf` - File history
2. Navigate commits with `j/k`
3. `<cr>` to view diff at commit
4. `<leader>gD` - Close when done
### Quick Blame Check
1. `<leader>gB` - Toggle blame
2. Line blame shows inline
3. `<leader>go` - Open commit if needed
4. `<leader>gB` - Toggle off

View File

@@ -0,0 +1,206 @@
# Keybindings Cheatsheet
Leader key: `<Space>`
## Navigation
| Key | Description |
|-----|-------------|
| `<C-h/j/k/l>` | Navigate between splits/tmux panes |
| `<leader>ff` | Find files |
| `<leader><space>` | Find files (alt) |
| `<leader>fr` | Recent files |
| `<leader>fb` | Browse buffers |
| `<leader>e` | File explorer |
| `s` | Flash jump (in normal mode) |
| `S` | Flash treesitter |
## Harpoon (Quick File Access)
| Key | Description |
|-----|-------------|
| `<leader>H` | Add file to harpoon |
| `<leader>h` | Toggle harpoon menu |
| `<leader>1-9` | Jump to harpoon file 1-9 |
## Search
| Key | Description |
|-----|-------------|
| `<leader>sg` | Grep (search text) |
| `<leader>sw` | Search word under cursor |
| `<leader>ss` | Search symbols |
| `<leader>sS` | Search symbols (workspace) |
| `<leader>/` | Search in buffer |
| `<leader>sr` | Search and replace (grug-far) |
## LSP / Code
| Key | Description |
|-----|-------------|
| `gd` | Go to definition |
| `gr` | Go to references |
| `gI` | Go to implementation |
| `gy` | Go to type definition |
| `K` | Hover documentation |
| `gK` | Signature help |
| `<leader>ca` | Code actions |
| `<leader>cr` | Rename symbol |
| `<leader>cf` | Format document |
| `<leader>cd` | Line diagnostics |
| `<leader>cS` | Reload snippets |
| `]d` / `[d` | Next/prev diagnostic |
| `]e` / `[e` | Next/prev error |
| `]w` / `[w` | Next/prev warning |
## Git
| Key | Description |
|-----|-------------|
| `<leader>gg` | Lazygit (if installed) |
| `<leader>gd` | Diffview: Open |
| `<leader>gD` | Diffview: Close |
| `<leader>gf` | Diffview: File history |
| `<leader>gF` | Diffview: Branch history |
| `<leader>gm` | Diffview: Compare to main |
| `<leader>gB` | Toggle git blame |
| `<leader>go` | Open commit in browser |
| `<leader>gy` | Copy commit URL |
### GitHub (Octo)
| Key | Description |
|-----|-------------|
| `<leader>gpl` | List PRs |
| `<leader>gpc` | Create PR |
| `<leader>gpo` | Checkout PR |
| `<leader>gpb` | Open PR in browser |
| `<leader>gpm` | Merge PR |
| `<leader>gil` | List issues |
| `<leader>gic` | Create issue |
| `<leader>grs` | Start review |
| `<leader>grr` | Resume review |
| `<leader>grc` | Submit review |
## Testing
| Key | Description |
|-----|-------------|
| `<leader>tt` | Run nearest test |
| `<leader>tf` | Run file tests |
| `<leader>ta` | Run all tests |
| `<leader>tl` | Run last test |
| `<leader>tS` | Stop tests |
| `<leader>td` | Debug nearest test |
| `<leader>tD` | Debug file tests |
| `<leader>tw` | Toggle watch (file) |
| `<leader>ts` | Toggle summary |
| `<leader>to` | Show output |
| `<leader>tO` | Toggle output panel |
| `]t` / `[t` | Next/prev failed test |
## Debugging (DAP)
| Key | Description |
|-----|-------------|
| `<leader>db` | Toggle breakpoint |
| `<leader>dB` | Breakpoint with condition |
| `<leader>dc` | Continue |
| `<leader>dC` | Run to cursor |
| `<leader>di` | Step into |
| `<leader>do` | Step over |
| `<leader>dO` | Step out |
| `<leader>dp` | Pause |
| `<leader>dt` | Terminate |
| `<leader>du` | Toggle DAP UI |
| `<leader>de` | Evaluate expression |
## Database
| Key | Description |
|-----|-------------|
| `<leader>Du` | Toggle DBUI |
| `<leader>Da` | Add DB connection |
| `<leader>Df` | Find DB buffer |
| `<leader>Dr` | Rename DB buffer |
| `<leader>Dl` | Last query info |
## REST Client
| Key | Description |
|-----|-------------|
| `<leader>Rs` | Send request |
| `<leader>Ra` | Send all requests |
| `<leader>Rr` | Replay last request |
| `<leader>Ri` | Inspect request |
| `<leader>Rt` | Toggle headers/body |
| `<leader>Rc` | Copy as cURL |
| `<leader>Re` | Select environment |
| `]r` / `[r` | Next/prev request |
## AI Assistant (opencode.nvim)
| Key | Description |
|-----|-------------|
| `<leader>kk` | Toggle opencode |
| `<leader>ka` | Ask opencode |
| `<leader>kA` | Ask about current file |
| `<leader>kn` | New session |
| `<leader>ke` | Explain code near cursor |
| `<leader>kE` | Explain selection (visual) |
| `<leader>kr` | Review file |
| `<leader>kg` | Review git diff |
| `<leader>kf` | Fix diagnostics |
| `<leader>ko` | Optimize selection (visual) |
| `<leader>kR` | Refactor selection (visual) |
| `<leader>kd` | Document selection (visual) |
| `<leader>kt` | Test selection (visual) |
| `<leader>kh` | Ask about harpooned files |
## Session Management
| Key | Description |
|-----|-------------|
| `<leader>qs` | Restore session |
| `<leader>ql` | Restore last session |
| `<leader>qd` | Don't save session |
| `<leader>qS` | Select session |
## Background Tasks (Executor)
| Key | Description |
|-----|-------------|
| `<leader>Brr` | Run task |
| `<leader>Brs` | Set command |
| `<leader>Bll` | Show last task |
## Window Management
| Key | Description |
|-----|-------------|
| `<leader>ww` | Other window |
| `<leader>wd` | Delete window |
| `<leader>w-` | Split below |
| `<leader>w\|` | Split right |
| `<leader>wm` | Maximize window |
## Buffers
| Key | Description |
|-----|-------------|
| `<S-h>` | Previous buffer |
| `<S-l>` | Next buffer |
| `<leader>bd` | Delete buffer |
| `<leader>bo` | Delete other buffers |
## Misc
| Key | Description |
|-----|-------------|
| `<leader>l` | Lazy (plugin manager) |
| `<leader>L` | Lazy extras |
| `<leader>fn` | New file |
| `<leader>xl` | Location list |
| `<leader>xq` | Quickfix list |
| `<leader>xt` | Todo list |
| `<leader>uz` | Toggle zen mode |

151
docs/cheatsheets/testing.md Normal file
View File

@@ -0,0 +1,151 @@
# Testing Cheatsheet
## Quick Reference
| Key | Action |
|-----|--------|
| `<leader>tt` | Run nearest test |
| `<leader>tf` | Run file tests |
| `<leader>ta` | Run all tests |
| `<leader>td` | Debug test |
| `<leader>ts` | Toggle summary |
## Running Tests
```
<leader>tt Run nearest test (cursor position)
<leader>tf Run all tests in current file
<leader>ta Run all tests in project
<leader>tl Re-run last test
<leader>tS Stop running tests
```
## Debugging Tests
```
<leader>td Debug nearest test (with DAP)
<leader>tD Debug all tests in file
```
## Watch Mode
```
<leader>tw Toggle watch mode (file)
<leader>tW Toggle watch mode (nearest)
```
Tests auto-run when file changes.
## Output & Results
```
<leader>ts Toggle test summary panel
<leader>to Show output for nearest test
<leader>tO Toggle output panel
```
## Navigation
```
]t Jump to next failed test
[t Jump to previous failed test
```
## Test Summary Panel
When summary is open (`<leader>ts`):
```
<cr> Jump to test
o Show output
i Show short output
O Show full output
m Mark test
M Clear marks
r Run marked/nearest
R Run all in file
d Debug test
```
## Framework-Specific
### Vitest (TypeScript)
Files detected: `*.test.ts`, `*.spec.ts`, `*.test.tsx`, `*.spec.tsx`
```typescript
// Test file example
describe('MyComponent', () => {
it('should render', () => {
// cursor here, <leader>tt runs this test
})
})
```
### Pytest (Python)
Files detected: `test_*.py`, `*_test.py`
```python
# Test file example
def test_something():
# cursor here, <leader>tt runs this test
pass
class TestMyClass:
def test_method(self):
pass
```
### Go Test
Files detected: `*_test.go`
```go
// Test file example
func TestSomething(t *testing.T) {
// cursor here, <leader>tt runs this test
}
```
## Common Workflows
### TDD Workflow
1. Write failing test
2. `<leader>tw` - Enable watch mode
3. Write implementation
4. Test auto-runs on save
5. `<leader>tw` - Disable when done
### Debug Failing Test
1. `]t` - Jump to failed test
2. `<leader>to` - View output
3. Set breakpoint if needed (`<leader>db`)
4. `<leader>td` - Debug test
5. Step through with DAP controls
### Run Specific Tests
1. `<leader>ts` - Open summary
2. `m` on tests to mark them
3. `r` to run marked tests
## Troubleshooting
### Tests Not Found
- Check file naming convention
- Verify neotest adapter is installed
- Run `:checkhealth neotest`
### Wrong Framework Used
- Check `testing.lua` for adapter config
- Ensure correct adapter is listed
### Output Not Showing
- `<leader>tO` to toggle output panel
- Check if test actually ran