>> Read No. 2372 article  
[vim] 윈도우에서 ESC키로 영문모드전환케 하는 컴파
일방법소개

등록 2002-04-02 09:07:00     조회 4
이름 vimmania    

		gvim 6.1 help 를 보던 중 입력모드나 명령모드에서 normal 모드로 돌아오기 위해 ESC(ctrl+c or ctr
l+[) 키를 누르면 window 에서 자동으로 영어모드로 변경을 해 주게 해주는 기능을 알게 되었
다. ( :help mbyte-IME ) 그 기능을 쓸 수 있다면 한글로 입력을 하다가도 normal 모드로 가기 위해
서 ESC 만 눌러주면 자동으로 영어로 바뀌기 때문에 vim normal 명령 입력이 수월해 질 수 있을
 것이다. 기존의 경우에는 normal 모드로 와서 한영변환키를 눌러 영어모드로 변환한 후 명
령어를 입력해야 만 한다. 명령어가 한글모드인 상태에서는 입력이 안되기 때문이다. 또 
편리한 점은 기존의 입력모드에서의 상태를 기억하고 있다는 것이다. 즉 영어모드로 입력
하고 있는 입력 모드상태에서 normal 로 돌아와서 다시 입력모드로 가면 영어모드로 변환되
어 있고, 한글모드로 입력하고 있는 입력 모드상태에서 normal 로 돌아와서 다시 입력모드로
 가면 한글모드로 변환되어 있다. 그렇지만 그런 help 기능을 제공하고 있음에도 gvim6.0 / gvim
6.1 에서 사용해 보려고 했지만, 전혀 먹지가 않았다. 문제가 무엇인지 몰라서 그저 bug 이구
나 라고 생각하던중... kldp.org 의 Q&A 란에서 hongha at hitel.net 님이 gvim.exe에서 그 기능이 사용가
능하게 compile 성공하였다는 소식을 듣고 자신감을 얻고 Mingw 라는 프리 컴파일러를 이용하
여 window 에서 컴파일을 시도하였다. 여러가지 옵션을 바꿔가며 compile 을 하였지만, 내가 원
하는 mbyte-IME 기능은 작동하지 않았다. 그래서 hongha at hitel.net 님께 도움 요청 메일을 보냈고 
 gui_w32.c 에서 im_set_active 함수에 문제가 있음을 알게 되었다. 그것을 잘 고치고, 컴파일 에
러 나는 부분의 소스를 조금씩 고쳐서 mbyte-IME 기능이 완벽히 작동하는 gvim.exe 를 얻게 되었
다.   이 문서는 window에서 mingw(www.mingw.org) 컴파일러를 사용하여 mbyte-IME 기능이 작동하는 gv
im.exe 를 만드는 방법을  소개한 문서입니다. window에서 gvim 이 컴파일 잘 된다는게 정말 신
기하고 설레지만, 정말 한번 해보시라고 추천해 드리고  싶습니다. 직접 만든 gvim.exe 를 쓰
니 더 애정이 넘치게 되는 군요...  1. gui_w32.c 화일에서 1342 번째줄의 void im_set_active 함수를 
다음과 같이 바꾸어줌. ----- gui_w32.c ------------------------------------------------------------------     
void im_set_active(int active) {     HIMC        hImc;
     if (p_imdisable)
        active = FALSE;
    if (pImmGetContext && (hImc = pImmGetContext(s_hwnd)))
    {
		//아래 함수를 주석처리
        //pImmSetOpenStatus(hImc, active);
		//아래 2줄을 추가
        if( active ) ImmSetConversionStatus ( hImc, IME_CMODE_NATIVE,
                IME_SMODE_NONE);
        else ImmSetConversionStatus( hImc, IME_CMODE_ALPHANUMERIC,
                IME_SMODE_NONE);
        pImmReleaseContext(s_hwnd, hImc);
    }
}
----- gui_w32.c -------------------------------------------------------------------
  hongha at hitel.net(홍하) 님의 도움을 받음(emoticon) thanks very much
 2. Make_ming.mak 화일에서 146 번째의 DEF_GUI 부분에 -DFEAT_MBYTE_IME 부분을 추가시켜줌.
----- Make_ming.mak -------------------------------------------------------------------
DEF_GUI=-DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_BIG -DFEAT_MBYTE_IME
----- Make_ming.mak -------------------------------------------------------------------
 3. Make_ming.mak 화일에서 246 번째줄의 LIB 부분에 -limm32 부분을 추가시켜줌.
----- Make_ming.mak -------------------------------------------------------------------
LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lole32 -luuid -limm32
----- Make_ming.mak -------------------------------------------------------------------
 4. gui_w32.c 화일에서 214 번째 줄에
#include <ime.h>
#include <imm.h>
을 넣어줌
----- gui_w32.c -------------------------------------------------------------------
#ifdef FEAT_MBYTE_IME
#include <ime.h>
#include <imm.h>
static LRESULT _OnImeComposition(HWND hwnd, WPARAM dbcs, LPARAM param);
static char_u *GetResultStr(HWND hwnd, int GCS);
#endif
----- gui_w32.c -------------------------------------------------------------------
 5. gui_w48.c 화일에서 285 번째줄에
#include <ime.h>
#include <imm.h>
을 넣어줌
----- gui_w48.c -------------------------------------------------------------------
#ifdef FEAT_MBYTE_IME
#include <ime.h>
#include <imm.h>
static LRESULT _OnImeNotify(HWND hWnd, DWORD dwCommand, DWORD dwData);
#endif
----- gui_w48.c -------------------------------------------------------------------
 6. 다음을 실행
 make -f Make_ming.mak gvim.exe
 7. 컴파일에러가 ime.h 에서 난다면... visual c 에서 ime.h 를 구하여 MINGW 가 깔린 INCLUDE 디렉토
리에 그것을 복사한후 6을 다시 시도해 본다.
   	_________________________________________
	donghyun lim ( vimmania )
	ICQ#: 67021543
	More ways to contact me: http://wwp.icq.com/67021543 	See more about me: http://web.icq.com/whitepages/about_me?Uin=670
21543 	_________________________________________
이름
암호


>> 관련글
2372 [vim] 윈도우에서 ESC키로 영문모드전환케 하는 컴파일방법소개  vimmania  2002.04.02  ....
  답장 RE: 이런 방법도 괜찮을듯  t  2002.04.02  ....
  목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.97 초 ] 작업시간: [ 0.04 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791032998
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.