尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

tmux.nvim:4 组快捷键统一 Neovim 分割窗口与 tmux 面板调整,省掉一套肌肉记忆

tmux.nvim:4 组快捷键统一 Neovim 分割窗口与 tmux 面板调整,省掉一套肌肉记忆 tmux.nvim4 组快捷键统一 Neovim 分割窗口与 tmux 面板调整省掉一套肌肉记忆【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend在 tmux 里嵌着 Neovim 时想调大代码窗口你不得不在两套按键体系之间来回切tmux 认前缀键加字母Neovim 认C-w加方向两边互不相通。tmux.nvim 让 Neovim 的分割窗口直接支持 tmux 风格操作4 组快捷键同时管窗口调整、面板导航、位置交换和剪贴板同步。tmux.nvim 快捷键速览4 组键位一张表组合键作用什么时候用Althjkl调整当前 Neovim 分割窗口大小当前窗口太挤想多要一点空间Ctrlhjkl在 Neovim 窗口与 tmux 面板之间导航想跨出编辑器切到旁边的 tmux 面板CtrlAlthjkl交换相邻窗口位置上下或左右两个窗口放反了无固定键位自动生效Neovim 寄存器与 tmux 缓冲区剪贴板同步在 Neovim 里复制切到 tmux 直接粘贴搭好环境三行 tmux.conf 让 Althjkl 生效第一步把插件加进包管理器。以 packer 为例use({ aserowy/tmux.nvim, config function() require(tmux).setup() end, })重载后执行:verbose nmap A-h能看到映射说明插件已就位。第二步改~/.tmux.conf。不加这段绑定Althjkl 会先被 tmux 拦下Neovim 根本收不到按键# 判断当前面板里跑的是不是 vim/neovim is_vimps -o state -o comm -t #{pane_tty} | grep -iqE ^[^TXZ ] (\\S\\/)?g?\.?(view|n?vim?x?)(-wrapped)?(diff)?$ # 是 Neovim把 Althjkl 交还编辑器不是tmux 自己缩面板 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 干的事很简单先查面板对应的进程是不是编辑器是就把按键原样透传回去不是就走 tmux 自己的 resize-pane同一组 Althjkl 在编辑器内外各干各的事。保存后执行tmux source-file ~/.tmux.conf在 Neovim 里按一次 Alth分割窗口变宽说明全链路通了在普通 shell 面板按 Alth面板向左收缩说明 tmux 侧也正常。如果你经常在复制模式滚轮回车里调面板可以照上面的写法再补 4 行bind-key -T copy-mode-vi绑定。边界检测是它聪明的地方 ✨按 Alth 时插件先判断当前窗口是否贴着 Neovim 边界贴着说明这次要动的其实是外面的 tmux 面板调整就透传给 tmux 执行没贴着就在 Neovim 内部把相邻分割窗口调宽或调窄。判断逻辑在lua/tmux/resize.lua的is_nvim_border()里浮动窗口有单独的取舍想确认边界怎么定义可以直接翻这段源码。按你的屏幕微调步长、循环导航与缩放保持你的场景改哪个配置项得到的效果4K 大屏每按一次只动 1 个字符太慢resize_step_x / resize_step_y 调大每次按键多移几个字符几下就到位笔记本小屏一次调整太猛resize_step_x / resize_step_y 调小步进变细不会一步越过目标窗口切到边界后想接着往对面走cycle_navigation 设为 true到边界后自动绕到另一侧tmux 缩放过的面板导航时被重置persist_zoom 设为 true切换窗口时保持 tmux 的缩放状态想自己绑键不要默认映射enable_default_keybindings 设为 false插件不注册默认键位映射归你步长改起来就三行require(tmux).setup({ resize { resize_step_x 2, -- 水平方向每次 2 个字符 resize_step_y 1, }, })排障三则 Python 虚拟环境里切换失效多半是 is_vim 的正则没认出 venv 里启动的 Neovim 进程把 tmux.conf 里那行 ps 检测改成能匹配实际命令的写法重新 source 即可。和 yank 类剪贴板插件一起用tmux.nvim 的同步与 yanky 这类插件可以共存按两边说明调一下 copy_sync 配置即可不用二选一同步逻辑在lua/tmux/copy.lua。低配机器输入发飘把 copy_sync 里的寄存器同步sync_registers关掉只留*和两个系统剪贴板开销会明显降下来。把这几行加进~/.tmux.conf并重新 source下次在 tmux 里打开 NeovimAlthjkl 就是顺手的窗口调整键了。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表