如何设置Vim快捷键<Ctrl+t>实现内置终端的开启关闭切换?
问题根因
你原来的配置有3个核心错误:
- Vim 内置终端的
filetype固定为terminal,不是bash,判断条件完全不匹配 - 映射中的 Vim 脚本需要作为 Ex 命令执行,缺少前缀
:和结尾的执行回车<CR>,同时|是 Vim 命令分隔符,在映射中需要转义为<Bar>才能正确识别 - 终端打开后默认进入终端交互模式,普通模式的映射不会生效,需要单独补充终端模式下的快捷键配置
可用配置
直接把以下代码写入你的 .vimrc(Neovim 写入 init.vim/init.lua 对应配置段即可):
" 普通模式逻辑:当前缓冲区是终端则关闭,否则新建终端 nnoremap <C-t> :if &filetype ==# 'terminal' <Bar> q <Bar> else <Bar> terminal <Bar> endif<CR> " 终端交互模式逻辑:按下<C-t>直接关闭当前终端 tnoremap <C-t> <C-\><C-n>:q<CR>
配置说明
==#是严格大小写匹配,避免部分自定义配置修改filetype大小写导致判断失效<C-\><C-n>是 Vim 默认的终端模式切回普通模式的快捷键,不需要额外配置- 如果需要实现「不管当前在哪个缓冲区,按下
都关闭所有已打开的终端」,可以把普通模式映射替换为:
nnoremap <C-t> :if len(filter(getbufinfo(), 'v:val.buftype ==# "terminal"')) > 0 <Bar> bufdo if &buftype ==# "terminal" <Bar> bdelete <Bar> endif <Bar> else <Bar> terminal <Bar> endif<CR>
修改配置后执行 :source $MYVIMRC 即可立即生效,不需要重启 Vim。
内容的提问来源于stack exchange,提问作者sicro
相关产品推荐
相关产品推荐

