스크린 세션의 콘솔 vim: 줄을 삭제하지 않도록 Ctrl-Shift-Left, Ctrl-Shift-Right를 다시 매핑합니다.

스크린 세션의 콘솔 vim: 줄을 삭제하지 않도록 Ctrl-Shift-Left, Ctrl-Shift-Right를 다시 매핑합니다.

Ctrl-Shift-Right, Ctrl-Shift-Left 등을 사용하여 단어별로 선택할 수 있도록 gvim을 설정했습니다. (예, 나쁜 습관이라는 것을 알고 있지만 저에게는 효과적입니다...)

불행하게도 이러한 키 조합은 screen 세션의 콘솔 vim에서 사용될 때 텍스트를 삭제합니다. 나는 두 개의 키 조합이 터미널에서 코드를 생성하고 Esc[1;6D각각 "다음 6줄 삭제" 또는 "다음 줄 변경"으로 해석되기 때문이라고 생각합니다.Esc[1;6C

화면이나 콘솔 vim이 이러한 키 조합을 해석하지 못하도록 하는 방법이 있습니까?

고쳐 쓰다:내 .screenrc의 내용:

sessionname daku
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

답변1

분명히 Vim에는 키 시퀀스에 대한 바인딩이 없지만 ␛[1;6D로 시작하는 다른 키 시퀀스에 대한 바인딩이 있을 ␛[1수 있습니다 ␛[1~(보통 Home키로 전송됨). .vimrc선언 에 ␛[1;6D실제로 Ctrl++ ShiftLeft의 리매핑을 추가합니다 . 나는 다음이 트릭을 수행해야한다고 생각합니다.

noremap <ESC>[1;6D <C-S-Left>
noremap! <ESC>[1;6D <C-S-Left>
noremap <ESC>[1;6C <C-S-Right>
noremap! <ESC>[1;6C <C-S-Right>

이 내 꺼야 .vimrc:

function Allmap(mapping)
  execute 'map' a:mapping
  execute 'map!' a:mapping
endfunction
function Allnoremap(mapping)
  execute 'noremap' a:mapping
  execute 'noremap!' a:mapping
endfunction
call Allmap('<ESC>[6D <C-S-Left>')
call Allmap('<ESC>[6C <C-S-Right>')
call Allnoremap('<C-S-Left> <C-Left>')
call Allnoremap('<C-S-Right> <C-Right>')

답변2

이것이 내가 지금 가지고 있는 것입니다 .vimrc:

if ! has("gui_running")
  noremap  <ESC>[1;6D <C-S-Left>
  inoremap <ESC>[1;6D <C-S-Left>
  noremap  <ESC>[1;6C <C-S-Right>
  inoremap <ESC>[1;6C <C-S-Right>
endif

답변3

바인딩을 ~/.vimrc에서 ~/.gvimrc로 이동합니다.

관련 정보