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

问题描述

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

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. 调用 term_sendkey(..) ,不起作用。

如何使用命令切换到终端-普通模式?

解决方法

最后,我尝试使用 <expr> 来解决条件需求。

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

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

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

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