Vim/nvim和删除(命令终端模式)中的整行而不是单个字符

Vim/nvim和删除(命令终端模式)中的整行而不是单个字符

我正在创建一个映射,该映射应该导航到特定窗口(调用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>

相关内容