因为我们可以选择在 neovim 缓冲区中使用终端。我非常希望有一种方法可以“切换”包含终端的缓冲区并将其显示在固定位置,例如屏幕底部。
我知道 nerdtree 为我做这件事,它通过键绑定切换以始终出现在我的屏幕左侧。我希望与 neovim 中的终端缓冲区相同。有没有人知道这样的插件或我将如何创建一个插件?
因为我们可以选择在 neovim 缓冲区中使用终端。我非常希望有一种方法可以“切换”包含终端的缓冲区并将其显示在固定位置,例如屏幕底部。
我知道 nerdtree 为我做这件事,它通过键绑定切换以始终出现在我的屏幕左侧。我希望与 neovim 中的终端缓冲区相同。有没有人知道这样的插件或我将如何创建一个插件?
对于任何想要隐藏/显示任何高度的单个 neovim 终端窗口的人来说,这都是我的解决方案。
终端将在插入模式下显示在最底部。如果您想更改拆分行为,只需编辑botright new
其他内容。:help opening-window
let g:term_buf = 0
let g:term_win = 0
function! Term_toggle(height)
if win_gotoid(g:term_win)
hide
else
botright new
exec "resize " . a:height
try
exec "buffer " . g:term_buf
catch
call termopen($SHELL, {"detach": 0})
let g:term_buf = bufnr("")
endtry
startinsert!
let g:term_win = win_getid()
endif
endfunction
nnoremap <M-t> :call Term_toggle(10)<cr>
tnoremap <M-t> <C-\><C-n>:call Term_toggle(10)<cr>
我可能有一个解决方案给你。下面的代码使用 f4 按钮切换最左侧的终端:
let g:term_buf = 0
function! Term_toggle()
1wincmd w
if g:term_buf == bufnr("")
setlocal bufhidden=hide
close
else
topleft vnew
try
exec "buffer ".g:term_buf
catch
call termopen("bash", {"detach": 0})
let g:term_buf = bufnr("")
endtry
startinsert!
endif
endfunction
nnoremap <f4> :call Term_toggle()<cr>
我认为这一定比IDE好一点,
let g:term_buf = 0
function! Term_toggle()
1wincmd w
if g:term_buf == bufnr("")
setlocal bufhidden=hide
close
else
rightbelow new
12winc -
try
exec "buffer ".g:term_buf
catch
call termopen("bash", {"detach": 0})
let g:term_buf = bufnr("")
endtry
set laststatus=0
startinsert!
endif
endfunction
nnoremap <f4> :call Term_toggle()<cr>
" Terminal go back to normal mode
tnoremap <Esc> <C-\><C-n>
" When switching to terminal windows it goes into insert mode automatically
au BufEnter * if &buftype == 'terminal' | :startinsert | endif
一个简单的解决方案,但它会删除缓冲区:
nnoremap <silent> <F3> :split term://zsh <CR>
tnoreamp <silent> <F3> <C-\><C-n> :bd! <CR>
autocmd TermOpen * startinsert
终端缓冲区需要选择关闭!