태그: ,

XTerm에서 백스페이스 코드 바꾸기

XTerm에서 윈도로 SSH를 하면 백스페이스가 한 글자가 아니라 한 단어를 지워 버린다. 왜 그런지 이 글이 잘 설명해 주고 해결책을 제시한다. 다음 설정을 ~/.Xresources에 추가하고 xrdb -merge ~/.Xresources를 실행하면 된다.

XTerm*ttyModes: erase ^?
XTerm*VT100.Translations: \
	#override <Key>BackSpace: string(0x7f) \n\
		  <Key>Delete:    string(0x1b) string("[3~")

이렇게 바꾸고 나면 Vim에서 백스페이스를 누를 때 ^?만 출력된다. :h fixdel에서 설명하는 다음의 설정을 ~/.vimrc에 추가하면 된다.

if &term =~ 'xterm'
        autocmd VimEnter * call timer_start(10, { -> execute('set t_kb=^? | fixdel') })
endif

Help에 있는 그대로 다음과 같이 입력하면 백스페이스 문제가 고쳐지지 않았다. ChatGPT에 따르면 Vim이 터미널과 연결될 때 termcap/terminfo를 다시 읽기 때문이라고 한다.

if &term =~ 'xterm'
  set t_kb=^?
  fixdel
endif

참고문헌

이 칸을 비워 두세요.