vi/vim에서 INSERT MODE(i) 상태에서 방향키를 눌렀는데,
터미널이 방향키 escape sequence(A B C D)를 제대로 해석하지 못해서 발생하는 현상
최우선으로 vi Version 확인
vi --version
Tiny Version일 경우
echo "set nocompatible" >> ~/.vimrc
echo "set esckeys" >> ~/.vimrc
echo "set ttimeout" >> ~/.vimrc
echo "set ttimeoutlen=100" >> ~/.vimrc
echo "set backspace=indent,eol,start" >> ~/.vimrc
1) echo "set nocompatible" >> ~/.vimrc
vim을 옛날 vi 호환 모드가 아니라 vim 방식으로 동작하게 하는 설정.
방향키, 백스페이스, 편집 동작이 더 자연스러워짐.
2) echo "set esckeys" >> ~/.vimrc
Insert 모드에서 방향키 같은 특수 키를 사용할 수 있게 하는 설정.
방향키가 A B C D로 찍히는 문제와 관련 있음.
3) echo "set ttimeout" >> ~/.vimrc
방향키, ESC, Delete 같은 키 입력을 구분할 때 대기 시간을 사용하겠다는 뜻.
4) echo "set ttimeoutlen=100" >> ~/.vimrc
특수 키 입력을 기다리는 시간을 100ms로 설정.
ESC를 눌렀을 때 너무 늦게 반응하거나, 방향키가 문자로 입력되는 문제를 줄여줌.
5) echo 'set backspace=indent,eol,start' >> ~/.vimrc
Backspace가 정상적으로 지울 수 있는 범위를 넓혀주는 설정.
indent = 자동 들여쓰기 삭제 가능
eol = 줄 끝에서 이전 줄로 이어서 삭제 가능
start = insert 모드 시작 지점 이전 문자도 삭제 가능
이 설정 없으면 Insert 모드에서 백스페이스가 일부 위치에서 안 먹을 수 있음.
Tiny Version 보단 Full Version 권장
(Ubuntu 기준)
apt update && apt install -y vim