在内置的终端窗口中,为了能正常使用外部 shell 本身的快捷键,Vim 禁用了绝大部分快捷键。也就是说,在内置终端窗口中键入shell命令,既不是插入模式也不是命令行模式,所以imap与cmap都不会生效。Vim为此定义了一种特殊模式,叫做终端作业(Terminal-Job)模式。如果希望为终端作业模式自定义快捷键,那么需要使用:tmap
命令。
例如定义Shift+Insert键,用于在终端中粘贴系统剪切板的内容:
:tmap <S-Insert> <C-W>"+
请注意:在内置终端窗口中,Esc键也保留为外部shell所用,并不会返回到终端普通(Terminal-Normal)模式。
可以点击Ctrl-\ Ctrl-N快捷键,返回到终端普通模式。请参考:help CTRL-\_CTRL-N
帮助信息。
也可以自定义Shift+Del键,用于返回到终端普通模式:
:tnoremap <S-Del> <C-\><C-N>
在内置终端窗口中,点击i或a键,则可以返回到终端作业模式,继续执行命令。
使用以下命令,可以删除所有终端作业模式的键盘映射:
:tmapclear
'termwinkey'选项,用于设置终端窗口中引导为<CTRL-W>系列命令的键。其默认值为空,即在终端窗口与普通窗口中,<CTRL-W>引导的快捷键含义保持一致。
:set termwinkey?
termwinkey=
使用默认选项的好处在于,不论是在普通窗口还是在终端窗口之中,点击<CTRL-Ww>键都可以切换到下一窗口;点击<CTRL-Wp>键都可以切换到之前所在窗口。也就是说,适用于普通窗口的<CTRL-W>快捷键,也同样适用于终端窗口。
使用<CTRL-W:>快捷键,则可以在内置终端中进入vim命令行模式。
请注意,为了保持操作的一致性,不建议对'termwinkey'选项进行修改。
:tmap | 创建终端作业模式的键盘映射 | :help :tmap |
:tmapclear | 删除所有终端作业模式的键盘映射 | :help :tmapc |
:set termwinkey | 设置终端窗口中引导CTRL-W系列命令的键 | :help termwinkey |