【发布时间】:2019-10-30 00:40:00
【问题描述】:
我正在寻找一种在缓冲区指向目录时执行命令(:term) 的方法(比如打开指向目录的 vim 时会打开 NERDTree) 当缓冲区为空时/开始屏幕
【问题讨论】:
我正在寻找一种在缓冲区指向目录时执行命令(:term) 的方法(比如打开指向目录的 vim 时会打开 NERDTree) 当缓冲区为空时/开始屏幕
【问题讨论】:
像 NERDTree 这样的插件使用所谓的 暂存缓冲区 来显示它们的“UI”。对于语法高亮,大多数还设置了自定义的、特定于插件的 filetype。所以你可以挂钩:help FileType事件::autocmd FileType nerdtree ...
直接打开终端对我不起作用;因为插件在其暂存缓冲区设置中被中断,并且不希望终端干扰。这里至少需要返回原始暂存缓冲区的附加命令。 (但像:echomsg 这样不起眼的东西会照原样工作。)或者你只是通过feedkeys() 延迟开放:
:autocmd FileType nerdtree call feedkeys(":terminal\<CR>")
一种更通用的方法(不仅适用于 NERDTree)可以连接到 BufWinEnter 并检查 &buftype == 'nofile' 是否(这是暂存缓冲区的典型属性)。
要检查 Vim 是否以“开始屏幕”启动,请使用 VimEnter 并检查 empty(bufname(''))。
:autocmd VimEnter * if empty(bufname('')) | exe "terminal" | endif
【讨论】:
:autocmd FileType nerdtree call feedkeys(":terminal\<CR>") 时,我打开了终端,但我也在终端中获得了 :terminal 命令
.vimrc。随着这些自定义设置的积累,可能会出现副作用,并且会导致您很难解决此问题。