Ubuntu 가상 환경에서 vi 입력이 깨질 때 해결 방법

Ubuntu 가상 환경에서 vi/vim 입력이 깨질 때 해결하는 방법입니다. vim 설치,.vimrc,.exrc, TERM, stty erase, compatible mode 점검을 정리했습니다.

Ubuntu 가상 환경에서 vivim을 사용할 때 화살표가 A/B/C/D처럼 입력되거나 Backspace가 지워지지 않는 경우가 있습니다. 원인은 보통 minimal vim 패키지, compatible mode, terminal/TERM 설정, Backspace keycode 차이 중 하나입니다.

먼저 vim 설치 확인

vim --version | head
dpkg -l vim vim-tiny 2>/dev/null
sudo apt update
sudo apt install -y vim

Ubuntu minimal 환경은 vim-tiny만 설치되어 있을 수 있습니다. 일반 vim 패키지를 설치하면 화살표/Backspace 문제가 해결되는 경우가 많습니다.

사용자 설정

cat >> ~/.vimrc <<'EOF'
set nocompatible
set backspace=indent,eol,start
set showmode
syntax on
EOF

절차은 ~/.exrcset bs=2, set nocp를 넣는 방식이었지만, Vim을 쓴다면 ~/.vimrc에 명시하는 편이 더 일반적입니다.

vi 호환 설정

cat >> ~/.exrc <<'EOF'
set bs=2
set nocp
EOF

정말 vi 호환 설정이 필요한 환경에서는 ~/.exrc도 사용할 수 있습니다. 다만 source ~/.exrc는 shell에서 실행하는 명령이 아니라 vi/vim 설정 파일로 읽히는 내용입니다.

TERM과 터미널 상태 확인

echo "$TERM"
infocmp "$TERM" | head
stty -a
reset

SSH client, terminal emulator, tmux/screen 조합이 TERM 값을 잘못 전달하면 키 입력이 깨질 수 있습니다. tmux 안에서는 screen-256color 또는 tmux-256color 지원 여부를 확인합니다.

Backspace keycode 확인

stty erase '^?'
# 또는 Ctrl+V 누른 뒤 Backspace를 눌러 실제 keycode를 확인하고 적용

즉시 테스트

vim -N test.txt
:set compatible?
:set backspace?

vim -N은 no-compatible mode로 실행합니다. :set compatible?nocompatible인지 확인합니다.

정리

  • 가장 먼저 vim 패키지를 설치합니다.
  • ~/.vimrcset nocompatible, set backspace=indent,eol,start를 둡니다.
  • SSH/tmux 환경에서는 TERM과 terminfo를 확인합니다.
  • Backspace만 문제라면 stty erase를 확인합니다.

문서 링크

BGM EVER