我正在创建一个映射,该映射应该导航到特定窗口(调用TEST_WIN
),聚焦于终端,然后删除单个字符。
映射如下所示:
noremap '; :let curWin = win_getid()<CR>:call win_gotoid(TEST_WIN)<CR>A<C-c><C-l><up><BS>
我已经<BS>
用 with替换了<C-w>
,这两个都删除了整行而不是单个字符/单词。
我怎样才能让它只删除单个单词或字符?
我应该补充一点,当我在没有命令的情况下控制终端时,<C-w>
以及我的退格键苹果两者都按预期工作。该问题仅在命令期间出现。
答案1
更新:已回答这里。
终端窗口很特殊,您不能只让映射使用命令切换到插入模式,然后包含直接在终端中键入的字符。
相反,你应该调用函数term_sendkeys()
与终端进行交互。
像下面这样的东西应该有效:
function! TermHistory()
call win_gotoid(TEST_WIN)
call term_sendkeys('', "\<C-c>\<C-l>\<Up>\<BS>")
endfunction
nnoremap <silent> '; :call TermHistory()<CR>