private

vsc에서 vim 적용시 한글깨짐과 이동문제 (윈도우11)

shininghyunho 2025. 7. 10. 03:10

vsc에는 vim 이라는 좋은 plugin이 있다.

근데 문제는 한글쓸때 버벅임이라던지,

한글을 쓰고 분명 영문으로 전환해주고 hj로 이동해주는데 갑자기 한글이 튀어나오는 문제가 발생했다.

 

먼저 시도해본건 im-select 을 설치해 제어해보려고했다.

daipeihust/im-select: 📟 Switch your input method through terminal

mac 기준으로는 잘 해결되는듯 싶다. Vim 입력모드 노말모드 전환시 한/영 자동 전환하기 | 김병훈 블로그

 

근데 나는 잘되는듯 싶다가도 자판 배열의 한글과 영어가 꼬이며 자꾸 버그가 발생했다. 

플러그인 재설치부터 vsc 재설치까지 삽질하다가 화나서 그냥 한글을 포기할까도 싶었다. (그래도 영어만 쓸수는 없으니까..)

 

문제가 되는 상황을 다시 정리해보면 다음과 같다.

작업하면서 이러한 상황을 계속 마주치다보니 화가 너무 났다.

  1. 한글을 사용한다
  2. normal 모드로 진입하려고한다.
  3. 한글이라 인식을 하지못해 오타가 발생한다.
  4. 다시 화를 가라앉히고 오타를 지운다.
  5. 한/영 키를 누른다.
  6. ctrl+[ 를 눌러 normal 모드에 진입한다.

나는 1번 -> 6번 으로 바로 이동하고싶었다.

 

그러면 한글자판이면서 ctrl+[ 입력하면, 영어로 전환해주고나서 ctrl+[을 처리해주면 될것이다.

if(한글자판 && (ctrl+[ 입력)) {

    영어 전환;

    ctrl+[ 처리;

}

이렇게 진행하려면 매크로를 사용해야하는데 윈도우에는 AutoHotkey 가 있다.

설치해주고 스크립트를 컴퓨터 부팅시마다 실행해주면 될것이다.

 

이제부터는 다시 삽질한다면 내가 따라할 가이드를 작성하겠다.


1. AutoHotkey 설치

AutoHotkey

 

AutoHotkey

AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also object-oriented and command-based programmi

www.autohotkey.com

 

2. 스크립트 생성

기본경로는 다음과 같다.

C:\Users\{username}\Documents\AutoHotkey

 

그 아래 확장자 .ahk로 스크립트를 만들어준다. (굳이 ide 안쓰고 메모장으로 하면 됨.)

 

스크립트 내용은 다음을 참고함.

simple_vim_guide/md/with_korean.md at master · johngrib/simple_vim_guide

다만 esc에 관한 스크립트여서 이를 수정해 ctrl+[로 새롭게 생성.

 

스크립트 내용은 다음과 같음. (윈도우 11, autohotkey v1 문법)

; AutoHotkey v1 용 스크립트
$^[::
    if(IME_CHECK("A"))
    {
        Send, {VK15} ; 한글 상태라면 한/영 키(VK15)를 입력해 영문으로 전환
    }
    Send, {Escape}   ; Escape 키를 입력 (Ctrl+[의 원래 기능 수행)
    return

/*
  IME check - 아래 함수들은 수정할 필요가 없습니다.
*/
IME_CHECK(WinTitle) {
  WinGet, hWnd, ID, %WinTitle%
  Return Send_ImeControl(ImmGetDefaultIMEWnd(hWnd), 0x001, "")
}

Send_ImeControl(DefaultIMEWnd, wParam, lParam) {
  DetectSave := A_DetectHiddenWindows
  DetectHiddenWindows, ON
  SendMessage 0x283, wParam, lParam, , ahk_id %DefaultIMEWnd%
  if (DetectSave <> A_DetectHiddenWindows)
  {
    DetectHiddenWindows, %DetectSave%
  }
  return ErrorLevel
}

ImmGetDefaultIMEWnd(hWnd) {
  return DllCall("imm32\ImmGetDefaultIMEWnd", "UInt", hWnd, "UInt")
}

 

테스트해보니 잘된다.

이제 부팅시 자동실행되게 해보자.

 

3. 부팅시 스크립트 자동 실행.

  1. 윈도우+R 키를 눌러 실행창 열어줌.
  2. Shell:startup

3. 시작프로그램에 바로가기 파일 넣어줌. (스크립트 파일은 백업용으로 그대로 두고 바로 가기 파일을 만들어 넣어줬다.)

 

이렇게하면 모두 끝났다.

 

NeoVim 적용

추가로 난 vim 대신 NeoVim 을 사용하기로 했다.

vsc vim 플러그인이 버벅거려서 대체제로 사용할것이다.

NeoVim 도 Vim 을 확장한것이라 기본 기능은 당연히 다 된다.

 

단 vsc의 NeoVim 플러그인은 로컬에 설치된 NeoVim을 구동시켜주는 역할을 한다.

그래서 NeoVim을 설치하고 경로를 넣어줘야한다.

 

1. NeoVim 설치

Home - Neovim

 

Neovim

Hyperextensible Vim-based text editor

neovim.io

 

2.  설정값 세팅

vim 설치했을때도 .vimrc에 설정값을 넣어줬었다.

동일하게 neovim은 init.vim 파일에 넣어줄것이다.

 

기본 경로는 다음과 같다.

C:\Users\{username}\AppData\Local\nvim\init.vim

아마 Local 아래에 nvim 이 없을텐데 새롭게 만들어주면 된다.

 

나는 윈도우의 클립보드와 연동만 시켜줬다.

set clipboard+=unnamedplus

추가로 편의기능을 설정하려면 여기서 하면 된다.

 

3. NeoVim 플러그인 설정

이렇게 만들어진 NeoVim을 이제 vsc 플러그인에 세팅만 해주면 된다.

 

다음과 같이 setting에 들어가 neovim 의 경로를 넣어주자.

경로를 바꾸지 않았다면 이곳에 있을것이다.

C:\Program Files\Neovim\bin\nvim.exe

 

이제 다시 편하게 vim을 쓰면 되겠다.

 

참고

[VIM][OS X]한글 입력 상태에서 노멀모드 복귀 후 영어 입력소스로 전환하기 (feat. hammerspoon, autohotkey)