自从我发现它以来,使用 Neovim 的终端模拟器在我的代码旁边运行代码已经成为我工作流程的重要组成部分。但是,我想有一种方法可以使当我打开一个新的 nvim 终端窗口时,它会比当前打开一个窗口时更窄,并且它占据了屏幕的一半。

我不完全理解 vimscript,这是这​​里问题的一部分。我研究了如何根据文件类型运行自动命令,以及如何调整窗口大小并根据这些拼凑一些东西。它不起作用,因为它会调整整个 vim session 的大小,而不仅仅是所需的窗口。

au BufWinEnter * if &buftype == 'terminal' | resize 20 | endif

我已经研究了插件的黄金比例,但我不希望终端窗口在我四处走动时变大;我只是想让它小一点,放在一边。

最佳答案

terminal 的问题在于 buftypeBufWinEnter 之后设置 。因此,您必须改为捕获 TerminalOpen(在 Vim 中)或 TermOpen(在 Neovim 中)。

augroup myterm | au!
    au TermOpen * if &buftype ==# 'terminal' | resize 20 | vert resize 50 | endif
augroup end

另请注意:
  • 始终使用 augroup 来清除或重新定义您的自动命令。
  • 比较字符串时始终使用 ==#==?,因此您永远不会依赖于 ignorecase 选项设置。
  • 您仍然需要检查 &buftype ,因为终端可以隐藏启动(即不附加任何窗口)。在这种情况下,终端的缓冲区将在 <abuf> 中可用,但 % 将指向事件/可见缓冲区。
  • 关于vim - Neovim/Vim : Resize window based on type of buffer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57899527/

    10-11 21:53