2012-06-06 4 views
3

MyVim on MinGW 4.6.2가 이상하게 작동합니다. 예를 들어, 삽입 모드에서 Backspace를 누르면 문자가 삭제되지만 삭제 된 문자가 사라지기 전에 커서를 화살표 키로 이동해야합니다. 나는 삽입 모드에서 벗어났다.Vim이 Mingw에 이상하게 행동 함

또 다른 예로 Del를 눌러 문자를 삭제하면 소문자를 대문자로 변경하는 것과 같이 이상한 문자가 생성되거나, 입력 한 다음 문자가 손상됩니다. 예를 들어 'S'를 누르면 나에게 '$'가 처음 입력됩니다.

나는 Vim을 잘못 사용하고 있습니까? Vim에 익숙하지 않아 기본 동작인지 확실하지 않지만 Vim의 일반적인 동작은 Backspace와 Del이 NotePad에서하는 것처럼 Vit에서 작동하는 Vim과 같습니다.

+1

Fi를 nnoremap inoremap? 대신에'gvim'을 사용할 수 있습니까? 그것은 때때로 터미널과 싸우는 것보다 쉽습니다 ... – sarnold

+0

터미널 프로그램이란 무엇입니까? 나는 Git Bash에서 사용 된 글꼴이 msys라고 생각합니다. 글꼴/색상이 MinGW와 동일하기 때문에 ... 저는 Vim을 사용하여 하하를 선호합니다. 내가 원한다면 고급 편집자가 부족하지 않습니다. to .. – Cardin

답변

3

사실, 백 스페이스는 종종 ^H이고 삭제는 종종 ^?이며 일부 바보 터미널은 두 개를 바꿔 쓰거나 둘 다 같은 문자를 제공합니다. 어떤 단말이 이 실제로 일 때, 키를 누르면 ESC~<something>이 생성되고 ESCvim을 명령 모드에 넣고 ~은 대소 문자를 바꾼다. 당신의 TERM 환경 변수가 실행중인 터미널 정확하게, 잘못된 기능이 선택됩니다 일치하지 않고 응용 프로그램이 잘못된 이스케이프 시퀀스를 생성하는 경우 -

는 또한 맞설 터미널 기능의 terminfo 또는 termcap 데이터베이스를 가지고 터미널을 적절하게 제어 할 수 있습니다. 터미널이 아닌 플랫폼에 매우 기본이기 때문에 물론

는 Windows에서 실행하는 것이 더 모든 것을 복잡하게 - CMD.EXEMSYS 다른 작업을 수행, 자신의 일을하고, 그것은 아주 일반적인해서 vim 아마 늪지 표준 CMD.EXE 예상된다 .

이 모든 것이 gvim을 사용하는 것이 좋습니다. 텍스트 모드 vim과 거의 똑같은 동작을하는 GUI 창을 시작하지만, 동작이 훨씬 더 예측 가능하며 전체적으로 구성 할 수 있습니다. 이내 gvim - 고정 vim의 동작은 실제로 MSYS 구성 변경을 의미 할 수 있습니다. 이는 다른 프로그램을 깨뜨릴 수 있습니다. 나는 이미 사용하고있는 환경에서 편집하는 것보다는 "새로운 컨텍스트"를 시작하는 방법을 싫어한다. gvim은 Windows에서 다소 어색함을 느낀다.

+0

좋아, 그냥 테스트 runned gvim 실제로 사용하는 것이 훨씬 쉽습니다! 나는 이것이 메뉴 막대가있는 단지 흰색 배경의 정력 인 방법을 좋아했다. 그리고 설명에 대한 감사, 나는 그것을 얻지 못했지만 나는 이미 더 많은 지식이 있다고 느낍니다. 하하. vim처럼 근본적인 것이 여전히 플랫폼 간 입력 체계에 문제가 있다는 것은 이상한 일입니다. :) – Cardin

+0

'set guioptions- = mT'를하면 메뉴와 도구 모음이 필요 없습니다. – Amadan

2

정력이 약한 단말기를 감지하여 화면을 너무 많이 터치하고 싶지 않은 모드에서 정력이 제대로 작동합니다 (S 호 - $). 삭제 될 지역의 끝 부분을 표시합니다. , 삽입이 끝날 때까지 대기하므로 나머지 줄을 다시 칠할 필요가 있습니다). 잘못된 터미널 에뮬레이션은 특정 키를 누를 때 쓰레기를 보낼 수도 있습니다.

gvim은 @sarnold가 제안한 것으로, 다른 편집기가 아닌 창에서 작동하는 vim의 빌드입니다. 그것은 여전히 ​​완전한 정력이며, 여전히 도전이 있습니다. Windows box에 갇혀 있다면, 이것은 vim보다 훨씬 더 나은 선택이다. 내가 좋아하는 한 개의 터미널 (그리고 Cygwin을 포함하고있다)을 알지 못하기 때문이다.

+0

나는 독립 실행 형 gvim을 시도했지만 실제로는 vim과 비슷하므로 좋은 결과를 얻었습니다. 나쁜 일은, 나는 MinGW toolchain에서 vim을 사용하여 make와 gcc를 연습하고있다. 따라서 Cygwin의 gvim이나 독립 실행 형 gvim을 사용할 수는 있지만 gcc를 사용하는 동안 MinGW 터미널을 떠나지 않으려는 목적을 실제로 상쇄합니다. 그것은 MinGW의 vim이거나 아무것도 아닙니다. :(그래서 난 그냥 메모장 + + 대신 사용하기로 결정했습니다. 어떤 슬픈 ..하지만 최소한 나는 msit에 번들로 vim을 사용하여 힘내 소스 제어를하는 동안 정력을 사용할 수 있습니다. :) – Cardin

6

또한 MinGW에서 vim을 사용할 때 특히 마우스 휠 스크롤과 관련된 문제가 있습니다. 하지만 당신이 설명하는 문제는 vi의 호환성과 같은 것 같습니다.

vimrc에서 다음 설정을 시도해 보셨습니까?

set nocompatible 
set backspace=2 
+1

이것은 저에게 효과적이며 gvim으로 전환하는 것을 저장합니다. – trev

+0

@allenylzhou 고마워요! 이것은 나를 위해 일했다. 이제는 conemu, vim과 색상 및 화살표 키를 사용할 수 있습니다! – Grynn

0

당신은 빔에 다음과 같은 방법으로 전송 된 문자를 확인할 수 있습니다

  • 푸시 을 Ctrl 키 + V
  • 을 밀어 원하는 : 을 눌러

    1. 시작 명령 모드를 키 (백 스페이스 또는 )

    이렇게하면 터미널에서 vim으로 보내는 마법의 문자 시퀀스를 볼 수 있습니다. 내가 백 스페이스을 밀어 때

    예를 들어, 내 경우에는 내가 <C-Del>을보고, 그래서 난 내의 .vimrc에 다음 코드를 삽입하여 내 백 스페이스 키를 복구 할 수 있습니다 : xterm이 터미널
    의 경우

    "예. = "xterm이나" "수리 백 스페이스 용어 & 경우 : 사용중인 터미널 프로그램