vim/nvimそして(コマンドターミナルモード)では、個々の文字の代わりに行全体を削除します。

vim/nvimそして(コマンドターミナルモード)では、個々の文字の代わりに行全体を削除します。

特定のウィンドウ(呼び出しTEST_WIN)に移動し、端末に焦点を当ててから、1文字を削除する地図を作成しています。

マッピングは次のとおりです。

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>

関連情報