Neovim/Vim:根据缓冲区类型调整大小 window
Neovim/Vim: Resize window based on type of buffer
使用 Neovim 的终端模拟器与我的代码一起 运行 编写代码,自从我发现它以来,它已成为我工作流程的重要组成部分。但是,我想有一种方法可以做到这一点,这样当我打开一个新的 nvim 终端 window 时,它会比当前打开一个时窄,它占据了屏幕的一半。
我不完全理解 vim脚本,这是这里问题的一部分。我研究了如何根据文件类型制作自动命令 运行 以及如何调整 windows 的大小,并根据这些内容拼凑了一些东西。它不起作用,因为它会调整整个 vim 会话的大小,而不仅仅是所需的 window.
au BufWinEnter * if &buftype == 'terminal' | resize 20 | endif
我已经研究了插件的黄金比例,但我不希望终端 window 在我四处走动时变大;我只希望它小一点,放在一边。
参考help, you only need to set the 'termwinsize'选项。
例如:
set termwinsize=0x50
将使 vertical terminal
打开终端垂直拆分,50 列宽。
set termwinsize=20x0
让 terminal
打开终端水平拆分,20 行高。
terminal
的问题是 buftype
设置在 之后 BufWinEnter
。所以你必须捕获 TerminalOpen
(在 Vim 中)或 TermOpen
(在 Neovim 中)。
augroup myterm | au!
au TermOpen * if &buftype ==# 'terminal' | resize 20 | vert resize 50 | endif
augroup end
另请注意:
始终使用 augroup
来清除或重新定义您的自动命令。
在比较字符串时始终使用 ==#
或 ==?
,因此您永远不会依赖 ignorecase
选项设置。
您仍然需要检查 &buftype
,因为终端可以隐藏启动(即 w/o 任何 window 附加)。在这种情况下,终端的缓冲区将在 <abuf>
中可用,但 %
将指向 active/visible 缓冲区。
使用 Neovim 的终端模拟器与我的代码一起 运行 编写代码,自从我发现它以来,它已成为我工作流程的重要组成部分。但是,我想有一种方法可以做到这一点,这样当我打开一个新的 nvim 终端 window 时,它会比当前打开一个时窄,它占据了屏幕的一半。
我不完全理解 vim脚本,这是这里问题的一部分。我研究了如何根据文件类型制作自动命令 运行 以及如何调整 windows 的大小,并根据这些内容拼凑了一些东西。它不起作用,因为它会调整整个 vim 会话的大小,而不仅仅是所需的 window.
au BufWinEnter * if &buftype == 'terminal' | resize 20 | endif
我已经研究了插件的黄金比例,但我不希望终端 window 在我四处走动时变大;我只希望它小一点,放在一边。
参考help, you only need to set the 'termwinsize'选项。
例如:
set termwinsize=0x50
将使 vertical terminal
打开终端垂直拆分,50 列宽。
set termwinsize=20x0
让 terminal
打开终端水平拆分,20 行高。
terminal
的问题是 buftype
设置在 之后 BufWinEnter
。所以你必须捕获 TerminalOpen
(在 Vim 中)或 TermOpen
(在 Neovim 中)。
augroup myterm | au!
au TermOpen * if &buftype ==# 'terminal' | resize 20 | vert resize 50 | endif
augroup end
另请注意:
始终使用
augroup
来清除或重新定义您的自动命令。在比较字符串时始终使用
==#
或==?
,因此您永远不会依赖ignorecase
选项设置。您仍然需要检查
&buftype
,因为终端可以隐藏启动(即 w/o 任何 window 附加)。在这种情况下,终端的缓冲区将在<abuf>
中可用,但%
将指向 active/visible 缓冲区。