2013-09-23 2 views
2

ESC 버튼이 삽입 모드를 종료하지 않도록 자기 훈련을하고 싶습니다. Ctrl + [] 대신 사용하고 싶습니다. 그러나 이것을 .vimrc에 넣은 후Vim에서 ESC 대신 Ctrl + [

inoremap <ESC> <NOP> 

Ctrl + [중 하나를 사용할 수 없습니다. 어떻게 해결할 수 있습니까?

+0

역사적인면에서'man ascii'를 실행하고 16 진수 코드를 살펴보십시오. 그 숫자들에 대해서만 입력이있었습니다. 'CTRL' 키의 효과는 터미널에서 발생했습니다. 키 코드에서 세 개의 상위 비트를 제거 했으므로'CTRL' 키를 누른 채로 [5b]에서 '1b'로 아래로 매핑했습니다. – jthill

답변

6

빔은 ESC와 Ctrl-[을 구별하지 못합니다.

notation meaning   equivalent decimal value(s) ~ 
----------------------------------------------------------------------- 

<Esc>  escape   CTRL-[ 27 *escape* *<Esc>* 

을하지만 당신은 ESC의 키 캡을 당겨 수 있습니다 : 당신 :h keycode 경우에, 당신은 볼 수 있습니다. :)

4

Vim 내부에서이를 수행 할 방법이 없습니다. 예를 들어 AutoHotkey 훅 (Esc)이 외부 프로그램에만 의존해야만합니다.이 프로그램은 Vim 응용 프로그램에서만 활성화됩니다.

키보드 입력이 내부적으로 처리되는 방식 때문에 GVIM에서도 일반적으로 불가능합니다. 알파벳이 아닌 매핑 ​​할 수없는 + Ctrl 키와 Ctrl 키 + 편지Ctrl 키 + 시프트 + 편지 같은 일부 키 조합은 구별 할 수 없습니다. (당신의 터미널이 뚜렷한 termcap 코드를 보내지 않는 한, 대부분 그렇지 않습니다.) 삽입이나 명령 줄 모드에서, 키 조합을 입력 해보십시오. 아무 것도 일어나지 않거나 삽입되면 해당 키 조합을 사용할 수 없습니다. 이것은 또한, <Tab>/<C-I> 적용/<C-M>/<Esc>/<C-[><CR> 등 (유일한 예외 <BS>/<C-H>이다.)이 공지 된 통증 점, 다양한 vim_dev 논의하고 #vim의 IRC 채널의 주제이다.

일부 사람들 (Paul LeoNerd Evans)은 (이것을 지원하는 터미널의 콘솔 Vim의 경우에도) 고치고 싶은데, various proposals으로 떠올랐습니다.

그러나 현재까지 패치 나 자원 봉사자는 아직 나오지 않았습니다. 많은 사람들이 향후 Vim 8 주요 릴리스에서 이것을 갖고 싶다는 의사를 표명했습니다.

관련 문제