首页 > 解决方案 > 如何使用命令切换到终端普通模式?

问题描述

我想做一个键映射,可以移动到终端窗口并切换到终端正常模式,然后再次执行相反的操作以查看长消息。

map <F4> call Toggle_Terminal_Mode()<cr>

function Toggle_Terminal_Mode()
  if &buftype ==""
    move to terminal-window         
    switch terminal-normal mode     " ?????
    do blah blah blah....       
    
  elseif &buftype=="terminal" && mode()=="n"
    swich terminal-mode           
    move back to edited buffer window       
  endif
endfunc

我知道我可以使用<C-w>N<C-\><C-n>切换到终端正常模式,但我想在函数中使用命令来代替做其他事情。

我尝试

  1. :execute "normal \<C-w>N" 也不起作用<C-\><C-N>
  2. :call term_sendkey(..) ,不起作用。

如何使用命令切换到终端正常模式?

标签: functionvimterminalmode

解决方案


最后,我尝试<expr>解决条件要求。

nnoremap <expr><F3> &bt=="" ? "<C-w>j<C-\><C-n>z100<CR>H" : "z10<cr>i" . "<C-_>k"

如果当前缓冲区类型为“”(空),它将跳到终端窗口(默认),进入普通模式,并将行高调整为最大大小(假设为 100)。在终端中查看长消息。

如果当前缓冲区类型是“终端”,它将恢复到 10 行高,进入终端模式,并返回上窗口。继续编辑代码窗口。

但我仍在寻找如何在命令中更改终端模式的方法(不是键映射方法)。


推荐阅读