name: alt-meta-keymap-audit description: Audit Alt/Meta (M-*) keymap conflicts for this repository's tmux, Yazi, Neovim (nvf), Zed/zeditor, and Lazygit setup. Use when a user wants to know which files define Alt bindings, how to inspect them, or whether bindings collide across terminal, tmux, editor, and file-manager layers.
Alt/Meta Keymap Audit
Use this skill when the task is to inspect or explain Alt/Meta/M-* keymap conflicts in this repository.
Scope
Treat the audit as a layered input path, not just an app-local keymap check:
- Window manager or OS-level shortcuts may consume
Alt. - The terminal emulator may bind
Altbefore the app sees it. tmuxmay bindM-*globally before an app inside the pane sees it.- The app itself may bind the same key.
A same-key mapping is only a real conflict if both bindings can fire in the same context. Report the layer and context explicitly.
Repository Files To Inspect
Primary app configs:
nixos/shared-home-manager/taco/tmux/default.nixnixos/shared-home-manager/taco/yazi/default.nixnixos/shared-home-manager/taco/yazi/keymap.nixnixos/shared-home-manager/taco/nvf/default.nixnixos/shared-home-manager/taco/nvf/keymaps.nixnixos/shared-home-manager/taco/nvf/plugins/yazi.nixnixos/shared-home-manager/taco/zed/default.nixnixos/shared-home-manager/taco/zed/keymap.nixnixos/shared-home-manager/taco/lazygit/default.nix
Adjacent interception layers that can shadow app bindings:
nixos/shared-home-manager/taco/ghostty/default.nixnixos/linux/home-manager/default.nixnixos/darwin/home-manager/aerospace.nix
Read the adjacent layer files whenever the user wants a definitive conflict answer instead of an app-only inventory.
Current Repo Hotspots
These are the first places to verify before doing any broader search:
tmuxbinds globalM-*keys for splits, window jumps, pane focus, zoom, rename, and new windows.zedbinds manyalt-*keys inWorkspace, panel, and terminal contexts.neovimitself does not broadly useM-*here, butnixos/shared-home-manager/taco/nvf/plugins/yazi.nixbinds<M-e>.yazihas local custom keymap overrides, but no repo-definedAltbinding innixos/shared-home-manager/taco/yazi/keymap.nix.lazygithas theme config only in this repo; no repo-defined customAltbindings.ghosttybindsalt+s, which can shadow app-levelAlt-s.- Darwin
Aerospaceuses severalalt-shift-*andalt-ctrl-*bindings.
Recommended Workflow
1. Collect repo-defined Alt bindings
Use rg first.
rg -n "M-|<M-|alt-|Alt |Meta|meta" \
nixos/shared-home-manager/taco/tmux \
nixos/shared-home-manager/taco/yazi \
nixos/shared-home-manager/taco/nvf \
nixos/shared-home-manager/taco/zed \
nixos/shared-home-manager/taco/lazygit \
nixos/shared-home-manager/taco/ghostty \
nixos/linux/home-manager \
nixos/darwin/home-manager -S
Then read the exact defining files, not just grep output.
2. Normalize notation before comparing
Treat these as equivalent unless the target app distinguishes them:
M-e<M-e>alt-e
Keep modifier order normalized when reporting, for example alt-ctrl-t.
3. Build a collision table by layer
For each key, record:
- key
- layer:
wm,terminal,tmux,app - owner
- context
- source file
- action
Useful collision classes:
hard conflict: same layer and overlapping contextshadowed by upper layer: terminal or tmux grabs the key firstcontext-separated: same key exists but contexts do not overlapno repo override: no local binding found in this repository
4. Verify effective generated config when needed
If the machine has already applied Home Manager, inspect the rendered files too:
sed -n '1,220p' ~/.config/tmux/tmux.conf
sed -n '1,220p' ~/.config/yazi/keymap.toml
sed -n '1,260p' ~/.config/zed/keymap.json
sed -n '1,220p' ~/.config/lazygit/config.yml
For Neovim in this repo, the source-of-truth is usually the Nix source under nixos/shared-home-manager/taco/nvf/, especially:
nixos/shared-home-manager/taco/nvf/keymaps.nixnixos/shared-home-manager/taco/nvf/plugins/yazi.nix
5. Escalate to runtime/default-keymap inspection only if necessary
Absence of a binding in this repo does not prove the application default is unbound.
If the user asks for a definitive runtime answer:
- check the installed app's effective config or generated config
- inspect the app's built-in defaults for the installed version
- state clearly when a conclusion is based only on repo overrides
This matters most for yazi and lazygit, because this repo currently defines little or no custom Alt behavior for them.
Expected Findings In This Repo
Use these as hypotheses to confirm, not assumptions to report blindly:
tmuxis likely to shadow app-levelAlt-h/j/k/l,Alt-f,Alt-r,Alt-t, andAlt-iinside tmux panes because they are bound withbind -n.ghosttyalt+sis likely to shadow Zed terminalalt-swhen the key is pressed in Ghostty before the app receives it.zedalt-randtmuxM-rare likely a conflict only when Zed runs inside tmux.- Neovim
<M-e>can conflict with any upper layer binding ofAlt-e; in this repotmuxdoes not claimM-e, but Zed does usealt-e.
Report Format
When answering the user, prefer a compact table or flat bullet list with:
- key
- conflicting owners
- whether it is a real conflict
- why
- source file references
Example phrasing:
Alt-s:ghosttyvszed Terminal; likely shadowed by terminal layer if Zed is launched inside Ghostty. Sources:nixos/shared-home-manager/taco/ghostty/default.nix,nixos/shared-home-manager/taco/zed/keymap.nix.Alt-h/j/k/l:tmuxglobal pane movement; conflicts with any app in tmux wanting those keys becausebind -ncaptures them first. Source:nixos/shared-home-manager/taco/tmux/default.nix.
Constraints
- Do not claim a collision is definitive unless you checked the relevant upper layer.
- Do not equate cross-application reuse with a conflict if the apps do not run in the same input path.
- Prefer repository evidence first, runtime evidence second, upstream default docs third.