自从我发现 Neovim 的终端模拟器与我的代码一起运行代码以来,它已经成为我工作流程的重要组成部分。然而,我希望有一种方法可以做到这一点,这样当我打开一个新的 nvim 终端窗口时,它会比当前我打开一个窗口并占据一半屏幕时更窄。
我不完全理解 vimscript,这是这里问题的一部分。我研究了如何根据文件类型运行自动命令,以及如何调整窗口大小并根据这些拼凑一些东西。它不起作用,因为它会调整整个 vim 会话的大小,而不仅仅是所需窗口的大小。
au BufWinEnter * if &buftype == 'terminal' | resize 20 | endif
Run Code Online (Sandbox Code Playgroud)
我已经研究了插件的黄金比例,但我不希望终端窗口在我移动时变大;我只是希望它小一点并且放在一边。
问题在于terminal它是在之后buftype设置的。所以你必须用 catch (在 Vim 中) 或(在 Neovim 中) 来代替。 BufWinEnterTerminalOpenTermOpen
augroup myterm | au!
au TermOpen * if &buftype ==# 'terminal' | resize 20 | vert resize 50 | endif
augroup end
Run Code Online (Sandbox Code Playgroud)
另请注意:
请务必使用它augroup来清除或重新定义您的自动命令。
比较字符串时始终使用==#or ==?,这样您就永远不会依赖于ignorecase选项设置。
您仍然需要检查&buftype,因为终端可以开始隐藏(即没有附加任何窗口)。在这种情况下,终端的缓冲区将在 中可用<abuf>,但%将指向活动/可见缓冲区。