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>

관련 정보