macvim에서 이스케이프 jj를 매핑하지만 터미널 vim에서는 작동하지 않습니다.


0

내 vimrc에는 다음이 있습니다.

inoremap jj <ESC>

최신 macvim을 사용하면 jj를 누르고 삽입에서 명령 모드로 건너 뛸 수 있지만 iterm2에서 일반 vim과 동일한 vimrc를 사용하면 두 개의 'j'가 삽입됩니다.

vim 또는 iterm에 작동하도록 설정해야합니까?

현재 요세미티를 사용하고 있지만 Maverics에도 문제가 있습니다. 또한 키 매핑은 osx의 Terminal.app에서도 작동하지 않습니다.

더 많은 연구에 따르면 vim은 어떤 키를 두 번 누르는 것을 인식하지 못합니다. 내가 할지라도 :

inoremap jj :hello

여전히 작동하지 않습니다.

답변:


0

github 에서 요세미티의 iTerm 문제에 대해 이야기하는 것을 발견했습니다 . 다음은 Homebrew의 문제를 통해 설명 된 문제 입니다.

요세미티를 사용하고 있습니까? 터미널에서 키 바인딩이 올바르게 작동합니까? 이 문제에 따르면 요세미티의 iTerm과 관련이있는 것 같습니다.


내가 지정하지 않아서 죄송합니다! 나는 현재 요세미티를 사용하고 있지만 문제는 maverics에도 있었고, osx의 터미널에도 문제가 있습니다.
Kev

0

터미널 vim에서 실행을 시도하십시오 :imap. 모든 삽입 모드 매핑이 나열되어야합니다. 않습니다 jj매핑 표시? 그렇지 않은 경우 해당 vim에서 수동으로 매핑을 정의하고 작동하는지 확인하십시오.

내 생각에 터미널이 다른 위치에서 vimrc를 읽는 다른 버전의 vim을 실행 중일 것입니다. 시도 :echo $MYVIMRC가 같은 파일을 참조하는지 터미널 정력과 macvim 모두에서. 서로 다른 경우 터미널 vim이 사용중인 vimrc에 매핑을 추가 할 수 있습니다. 그러나 vim 버전의 차이점을 조정하여 두 개의 구성 파일을 유지 관리 할 필요가없는 것이 좋습니다.


imap을 실행하면 키맵이 표시됩니다. macvim이 터미널 vim과 동일한 vimrc를 사용하고 있음을 확인했습니다
Kev

0

답을 찾았습니다! 잠시 후 vimrc에 약간의 비트를 추가하여 인서트 휴가 지연을 제거했습니다.

if ! has('gui_running')
  set ttimeoutlen=10
  augroup FastEscape
    autocmd!
    au InsertEnter * set timeoutlen=0
    au InsertLeave * set timeoutlen=1000
  augroup END
endif

나는 이것을 제거하고 이제는 jj 작품!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.