특정 창(호출 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>