IntelliJ는 참좋은툴입니다.

vim에디터또한 제가정말 좋아하는 에디터이죠.

인텔리J에는 에디터를 vim화할수있는 ideavim이란 플러그인이 존재합니다.

하지만 vim플러그인에서 한글입력이 제대로 되지않는 문제가 있습니다.


이미 해당플러그인 개발자에게 보고도 되었습니다.

(https://youtrack.jetbrains.com/issue/VIM-764)

그러나 이 개발자님은 1년반이지나도록 수정을 안해주고있어서

정말 너무나도 답답한 나머지 수정 보았습니다.

(사실 여태껏 꺼놓고 쓰다가 

몇일전부터 너무 불편하여 수정을해서라도 고쳐보자 라는심정으로..)


이하소스는 임시해결방법일뿐이며 오작동할수도있고 문제가생겨도 저에게는책임이 없습니다.

또한 소스수정에있어 문제가 있을시 연락주시면 바로 내리도록하겠습니다.


간단하게

ideavim github레퍼지토리에서 소스를 다운받아 아래부분을 수정하고 빌드하여 쓰면됩니다.

플러그인개발구축환경은 구글링해보면 많이나오는관계로 따로 설명하지 않습니다.


com.maddyhome.idea.vim.VimTypedActionHandler 

위 자바파일의 execute함수부분을 수정합니다.


*기존

@Override
public void execute(@NotNull final Editor editor, final char charTyped, @NotNull final DataContext context) {
if (isEnabled(editor)) {
// Run key handler outside of the key typed command for creating our own undoable commands
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
handler.handleKey(editor, KeyStroke.getKeyStroke(charTyped), new EditorDataContext(editor));
}
catch (Throwable e) {
logger.error(e);
}
}
});
}
else {
origHandler.execute(editor, charTyped, context);
}
}



위부분에서 쓰레드부분을 아래와같이 바꿔줍니다.

*변경후

@Override
public void execute(@NotNull final Editor editor, final char charTyped, @NotNull final DataContext context) {
if (isEnabled(editor)) {
try {
handler.handleKey(editor, KeyStroke.getKeyStroke(charTyped), context);
}
catch (Throwable e) {
logger.error(e);
}
}
else {
origHandler.execute(editor, charTyped, context);
}
}


위 부분을 변경후 빌드하여 플러그인을 재설치하면됩니다.


0.30버전부터 해당증상이 나타난다는 댓글에서 힌트를얻어서

 0.29파일에서 사용된 로직입니다.


다시한번 임시해결방법임을 알려드립니다.

저는 사실 아주 귀찮기때문에 이부분이 왜 쓰레드처리로 변경되었는지는 알지도못하고 알아보고싶지도 않습니다.

하지만 한글사용에 있어 문제가된부분임은 확실해 보입니다.


해당플러그인 개발자님이 하루빨리 정식버전에서 고쳐주시기를 기다립니다.


끝.




+ Recent posts