https://github.com/aca/wezterm.nvim
https://github.com/aca/wezterm.nvim
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/aca/wezterm.nvim
- Owner: aca
- Created: 2021-12-29T13:32:55.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-01-28T16:39:17.000Z (over 4 years ago)
- Last Synced: 2024-06-19T02:06:59.803Z (about 2 years ago)
- Language: Go
- Size: 2.93 KB
- Stars: 40
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# wezterm.nvim
Replacement of
- [vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator)
- [better-vim-tmux-resizer](https://github.com/RyanMillerC/better-vim-tmux-resizer)
for [wezterm](https://github.com/wez/wezterm).
## prerequisite
.bashrc / .zshrc
```
[ -n "$WEZTERM_PANE" ] && export NVIM_LISTEN_ADDRESS="/tmp/nvim$WEZTERM_PANE"
```
.config/fish/config.fish
```
if not set -q $WEZTERM_PANE
set -x NVIM_LISTEN_ADDRESS "/tmp/nvim$WEZTERM_PANE"
end
```
I just use the original tmux plugins for vim configs.
- [vim-tmux-navigator](https://github.com/christoomey/vim-tmux-navigator)
- [better-vim-tmux-resizer](https://github.com/RyanMillerC/better-vim-tmux-resizer)
```
vim.cmd([[
packadd vim-tmux-navigator
nnoremap TmuxNavigateLeft
nnoremap TmuxNavigateDown
nnoremap TmuxNavigateUp
nnoremap TmuxNavigateRight
tnoremap TmuxNavigateLeft
tnoremap TmuxNavigateDown
tnoremap TmuxNavigateUp
tnoremap TmuxNavigateRight
]])
vim.cmd([[
packadd better-vim-tmux-resizer
let g:tmux_resizer_no_mappings = 1
nnoremap TmuxResizeLeft
nnoremap TmuxResizeDown
nnoremap TmuxResizeUp
nnoremap TmuxResizeRight
]])
```
## navigator
Currently wezterm doesn't provide api to execute wezterm action inside neovim. So we execute commandline program in wezterm which
uses neovim remote msgpack api.
Checkout https://github.com/wez/wezterm/discussions/995 for details/updates.
---
install
```
cd wezterm.nvim.navigator && go install
```
wezterm config
```
local wezterm = require("wezterm")
local os = require("os")
local move_around = function(window, pane, direction_wez, direction_nvim)
local result = os.execute("env NVIM_LISTEN_ADDRESS=/tmp/nvim" .. pane:pane_id() .. " wezterm.nvim.navigator " .. direction_nvim)
if result then
window:perform_action(wezterm.action({ SendString = "\x17" .. direction_nvim }), pane)
else
window:perform_action(wezterm.action({ ActivatePaneDirection = direction_wez }), pane)
end
end
wezterm.on("move-left", function(window, pane)
move_around(window, pane, "Left", "h")
end)
wezterm.on("move-right", function(window, pane)
move_around(window, pane, "Right", "l")
end)
wezterm.on("move-up", function(window, pane)
move_around(window, pane, "Up", "k")
end)
wezterm.on("move-down", function(window, pane)
move_around(window, pane, "Down", "j")
end)
```
wezterm mapping
```
-- pane move(vim aware)
{ key = "h", mods = "CTRL", action = wezterm.action({ EmitEvent = "move-left" }) },
{ key = "l", mods = "CTRL", action = wezterm.action({ EmitEvent = "move-right" }) },
{ key = "k", mods = "CTRL", action = wezterm.action({ EmitEvent = "move-up" }) },
{ key = "j", mods = "CTRL", action = wezterm.action({ EmitEvent = "move-down" }) },
```
## resizer
```
local vim_resize = function(window, pane, direction_wez, direction_nvim)
local result = os.execute(
"env NVIM_LISTEN_ADDRESS=/tmp/nvim"
.. pane:pane_id()
.. " "
.. homedir
.. "/bin/"
.. "wezterm.nvim.navigator "
.. direction_nvim
)
if result then
window:perform_action(wezterm.action({ SendString = "\x1b" .. direction_nvim }), pane)
else
window:perform_action(wezterm.action({ ActivatePaneDirection = direction_wez }), pane)
end
end
wezterm.on("resize-left", function(window, pane)
vim_resize(window, pane, "Left", "h")
end)
wezterm.on("resize-right", function(window, pane)
vim_resize(window, pane, "Right", "l")
end)
wezterm.on("resize-up", function(window, pane)
vim_resize(window, pane, "Up", "k")
end)
wezterm.on("resize-down", function(window, pane)
vim_resize(window, pane, "Down", "j")
end)
```
```
{ key = "h", mods = "ALT", action = wezterm.action({ EmitEvent = "resize-left" }) },
{ key = "l", mods = "ALT", action = wezterm.action({ EmitEvent = "resize-right" }) },
{ key = "k", mods = "ALT", action = wezterm.action({ EmitEvent = "resize-up" }) },
{ key = "j", mods = "ALT", action = wezterm.action({ EmitEvent = "resize-down" }) },
```