Привет.
Есть в виме terminal mode, мне вполне нравится, но есть одно но - отсутствует возможность отчистить терминальный буфер. В целом это не проблема - сделал так:
function Clear_terminal()
if winnr('$') == 1
let l:only_window = 1
else
let l:only_window = 0
endif
bd!
terminal
if only_window
only
endif
endfunction
function Terminal_started()
setlocal nonumber
nmap <buffer> <C-w>l :call Clear_terminal()<CR>
endfunction
augroup Mode_hooks_group
autocmd!
...
autocmd TerminalOpen * call Terminal_started()
augroup End
Но есть одна проблема - вызвать Clear_terminal() я могу лишь в нормальном режиме (внутри Terminal mode), в режиме ввода команд сделать этого никак не получается. Всякие наивные попытки вроде
tmap <C-w>l <C-w>N<C-w>l "выход в нормальный режим, а следом ввод <C-w>l для вызова функции
проваливаются, происходит выход в норм режим, а вторая часть этой комплексной команды игнорится. Как из режима вставки дёрнуть Clear_terminal()? Т.е одним нажатием <C-w>l без ручного выхода в норм режим.