ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Neovim 窗口调整、导航、交换一次配齐:tmux.nvim 的 3 组快捷键实操

Neovim 窗口调整、导航、交换一次配齐:tmux.nvim 的 3 组快捷键实操 Neovim 窗口调整、导航、交换一次配齐tmux.nvim 的 3 组快捷键实操【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend在 tmux 里用 prefix 调面板进了 Neovim 又得换回:resize两套键位来回切体验割裂。tmux.nvim 把Althjkl一套键位同时交给两边调大小、跨面板导航、交换分割窗、同步剪贴板。把它当一份 tmux.nvim 配置教程读五个实际问题五段最小配置。问题一在 Neovim 里按 Althjkl整个 tmux 面板被拉大默认 tmux 下Althjkl只在纯终端里生效面板里跑着 Neovim 时按下去是整块面板被 resize你的分割窗纹丝不动。原因是 tmux 不知道面板里跑的是什么。所以两边都要动Neovim 侧装插件tmux 侧加一个是不是 vim的判断。装包只有一行以 lazy.nvim 为例packer 等包管理器同理{ aserowy/tmux.nvim, config function() require(tmux).setup() end }再往~/.tmux.conf里加这 5 行is_vimps -o state -o comm -t #{pane_tty} | grep -iqE ^[^TXZ ] (\\S\\/)?g?\\.?(view|n?vim?x?)(-wrapped)?(diff)?$ bind -n M-h if-shell $is_vim send-keys M-h resize-pane -L 1 bind -n M-j if-shell $is_vim send-keys M-j resize-pane -D 1 bind -n M-k if-shell $is_vim send-keys M-k resize-pane -U 1 bind -n M-l if-shell $is_vim send-keys M-l resize-pane -R 1is_vim先查当前面板的进程是 vim 系编辑器就把M-h/j/k/l即 Althjkl原样转发给 Neovim不是tmux 自己按 1 格 resize 面板。同一套键两边通吃判断由 tmux 完成。改完执行tmux source-file ~/.tmux.conf重载即可。问题二调大小、切焦点、换位置别记三套键插件自带三组键位各省掉一类操作Althjkl调当前窗口大小省掉每次进命令模式敲:resizeCtrlhjkl在 Neovim 分割窗与 tmux 面板之间移焦点一套键替代CtrlWSh和 prefix 方向键CtrlAlthjkl当前窗口与相邻窗口互换位置省掉关掉重开分割窗的折腾。调整大小有个智能边界细节光标所在分割窗没贴到 Neovim 边界时先在窗口内扩缩分割分割窗已经贴边才把键转给 tmux 去 resize 面板。检测逻辑在lua/tmux/resize.lua的is_nvim_border()里浮动窗口单独处理。你省掉的是这一下到底归 vim 管还是归 tmux 管的判断。问题三高分屏上一格一格调按到手酸默认步长是 1 格。4K 屏上 1 格可能只值几个像素把窗口撑宽一半要按十几下。水平、垂直步长可以分开设require(tmux).setup({ resize { resize_step_x 2, resize_step_y 1 }, })resize_step_x是每次按键横着扩缩的格数resize_step_y是纵着的。建议从 2/1 起步按自己分辨率微调想换掉某组默认键位就关对应模块的enable_default_keybindings再自己绑。问题四Neovim 里 yank 的代码到 tmux 终端粘不出来 现象Neovim 里 yank 一段代码切到旁边的终端面板一粘占位符是空的。原因两边剪贴板是两套。插件的copy_sync模块负责把 Neovim 寄存器与 tmux 缓冲同步实现在lua/tmux/copy.lua。require(tmux).setup({ copy_sync { enable true, sync_clipboard true, sync_registers true, }, })sync_clipboard同步系统剪贴板非终端应用里也能粘sync_registers同步全部寄存器最彻底也最耗低配机器把sync_registers关掉、只留sync_clipboard输入延迟明显下降。问题五窗口位置不对想换位置但不想重建 CtrlAlthjkl让当前窗口与对应方向的相邻窗口互换布局一次归位。配合cycle_navigation方向按到边界时绕回对面面板多时省事。一个已知坑在 python 虚拟环境或嵌套 shell 里起 Neovim 时is_vim的进程匹配可能误判表现是主面板里按键正常、子面板里被吞。遇到就回到~/.tmux.conf调is_vim规则最快的验证是手动send-keys一条看键到底有没有送到 vim。这套 tmux 快捷键的收益在窗口数量上分割窗加面板超过五六个一套肌肉记忆才开始显出差距。现在就做一件事把问题一的 5 行 tmux.conf 加进配置、重载然后到 Neovim 里连按三次Altl看窗口向右扩 3 格。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表