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++ Shift등 Left의 리매핑을 추가합니다 . 나는 다음이 트릭을 수행해야한다고 생각합니다.
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로 이동합니다.