vi editor 텍스트 밀림 현상

개요

Unix / Linux 환경에서 vi editor 텍스트 밀림 현상은 OS 언어 설정이 한글인 환경에서 자주 발생합니다. SSH 클라이언트의 인코딩 설정과 서버의 LANG 환경변수가 불일치할 때 vi로 파일을 편집하면 한글이 깨지거나 입력한 텍스트가 밀려서 표시됩니다. 이 글에서는 원인 분석과 해결 방법, 재발 방지 설정을 정리합니다.

증상

vi editor 실행 중 아래와 같은 현상이 나타납니다.

  • 한글 입력 시 글자가 밀려서 표시되거나 커서 위치가 어긋남
  • 화면이 깨져 기존 내용이 뭉개져 보임
  • 특정 계정에서만 발생하고 다른 계정에서는 정상 동작
  • 스크립트 파일 편집 시 들여쓰기가 흐트러짐

원인

주요 원인은 SSH 터미널의 인코딩 설정과 서버 LANG 환경변수의 불일치입니다. OS를 한글로 설치하면 LANG=ko_KR.UTF-8로 설정되는데, SSH 클라이언트(PuTTY, MobaXterm, SecureCRT 등)의 문자 집합이 UTF-8이 아닌 경우 vi가 멀티바이트 문자를 잘못 처리하여 텍스트 밀림이 발생합니다. 간헐적으로는 홈 디렉토리의 환경설정 파일(.bashrc, .bash_profile)이 누락된 경우에도 동일한 현상이 발생할 수 있습니다.

# 현재 서버 로케일 확인
$ locale
LANG=ko_KR.UTF-8
LC_CTYPE="ko_KR.UTF-8"
LC_NUMERIC="ko_KR.UTF-8"
LC_TIME="ko_KR.UTF-8"
LC_ALL=

해결 방법 1 — SSH 터미널 인코딩 설정 변경

SSH 클라이언트의 Character encoding(문자 집합) 설정을 서버 LANG과 일치하도록 변경합니다. 현재 설정이 Default이면 UTF-8로, UTF-8이면 Default로 변경하여 재연결합니다.

  • PuTTY: Configuration → Window → Translation → Remote character set
  • MobaXterm: Settings → Terminal → Default character set
  • SecureCRT: Session Options → Terminal → Emulation → Character Encoding

설정 변경 후 SSH 세션을 재연결하여 vi를 실행하면 대부분의 경우 정상 동작합니다.

해결 방법 2 — TERM 환경변수 설정

터미널 인코딩 변경 후에도 화면이 깨지는 현상이 남아 있다면 TERM 환경변수를 vt100으로 변경한 뒤 vi를 실행합니다.

# 현재 세션에만 적용 (임시)
$ export TERM=vt100
$ vi <파일명>

# 영구 적용 — .bashrc 또는 .bash_profile에 추가
$ echo 'export TERM=vt100' >> ~/.bashrc
$ source ~/.bashrc

재발 방지 — .vimrc 인코딩 설정

사전에 ~/.vimrc에 인코딩을 명시해 두면 SSH 클라이언트 설정과 무관하게 vi가 항상 UTF-8로 동작하므로 vi editor 텍스트 밀림 현상을 예방할 수 있습니다.

" ~/.vimrc
set encoding=utf-8
set fileencodings=utf-8,euc-kr,cp949
set termencoding=utf-8

파일이 없는 경우 vi ~/.vimrc로 새로 생성합니다. 저장 후 vi를 재실행하면 설정이 적용됩니다.

참고

관련 포스트:

참고 문서: Vim encoding 옵션 공식 문서 · Linux locale(7) man page

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.