programing

vim 백 스페이스가 ^?

goodcopy 2021. 1. 14. 23:15
반응형

vim 백 스페이스가 ^?


Vim에서는 모드 에서 backspace키를 눌렀을 때 캐릭터를 insert남기고 ^?삭제하려는 캐릭터는 삭제하지 않습니다.

내 안에 다음이 있습니다. .vimrc

syntax on
set number
set expandtab
set incsearch
set nocompatible
set backspace=indent,eol,start
fixdel

이것은 명령 모드에서도 발생합니다. 저장하는 W대신 잘못 입력하면 키를 w누르면 backspace다음과 같은 메시지가 표시됩니다.

:W^?

무엇이 잘못되었고 그것을 고치는 방법에 대한 아이디어가 있습니까?!

업데이트 :이 질문을 게시하기 전에 기본 Google 검색을 수행하고 검색 결과의 첫 페이지에서 모든 제안을 시도했지만 실패했습니다.

@strcat 저는 vim 버전 7.0.237, KDE 콘솔 1.6.4, Linux 2.6.18 x86_64 시스템을 사용하고 있습니다.

@graywh wrt cat -v, 삭제의 경우 ^[[3~백 스페이스의 경우 ^?.

의 출력은 stty -a다음과 같습니다.

speed 38400 baud; rows 38; columns 194; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O;
min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

^?삭제 문자입니다. 백 스페이스 문자는 ^H입니다. 이 중 하나만 터미널에서 "삭제"로 인식되며 이는 터미널 설정에 의해 결정됩니다 stty. (bash 및 기타 쉘은 이것을 문제로 이해하고 둘 다 인식하기 위해 특별한 작업을 수행합니다)

터미널 에뮬레이터 (ssh, putty, xterm 등)가 터미널 설정과 일치하지 않으면이 동작이 표시됩니다. 일반적으로 기본적으로 옳지 만 매우 자주 사람들은 stty.bashrc 명령을 넣어 작업을 중단합니다.

stty erase ^Hbashrc에 비슷한 것이있을 것입니다 . 그렇게한다면 제거하거나 ^HDEL ( ^?) 대신 백 스페이스를 보내도록 터미널 설정을 변경하십시오.

vim 매핑으로이 문제를 해결할 수도 있지만 기본 문제는 무시됩니다.


로부터 정력 위키 Backspace_and_delete_problems , 내가 읽기에 갔다 :help :fixdel는이 제안 :

if &term == "termname"
  set t_kb=^V<BS>
  fixdel
endif

여기서 "^ V"는 CTRL-V이고 ""는 백 스페이스 키입니다
(4 개의 문자를 입력하지 마십시오!). "termname"
을 터미널 이름으로 바꿉니다 .

나를 위해 fixdel백 스페이스는 삭제처럼 작동합니다. 내 첫 번째 실수는 gvim에서 CTRL-V 백 스페이스를 수행하는 것입니다. 시스템에서 키가 제대로 작동하지 않도록하여 문제가있는 세션이 보는 백 스페이스 키를 붙여 넣습니다.

나는 지금 내 .vimrc:

if &term == "xterm-256color"
  set t_kb=^?
endif

추가해보십시오 :

noremap! <C-?> <C-h>

귀하의 ~/.vimrc.

이것은 C-? 백 스페이스로, 나를 위해 일했습니다.


ctrl+ del/ ctrl+ backspace또는 alt+ del/ alt+를 시도해보십시오. backspace어느 것이 기억 나지 않지만 그것이 당신을 위해 트릭을 할 것이라고 생각합니다.

그래도 작동하지 않으면 shift+ backspace/를 시도하십시오 del. 이전에이 문제가 발생했습니다. 콤보 키를 눌러 올바른 문자 코드를 보내 삭제를 수행 할 수 있습니다.


Ctrl + H가 나를 위해 작동하지 않는다는 점을 제외하면 똑같은 문제가있었습니다. stty설정도 괜찮습니다. 누군가 같은 문제가 생기면 내 환경을 언급하고 싶습니다.

  • X ofcourse 아래에서 xterm과 함께 cygwin 사용 :)
  • RHEL6.4-> bash-> tmux-> vim으로 Ssh'ed

추가 한 후 fixdel.vimrc작동! 위의 모든 수정 사항이 작동하지 않았습니다.


I had the same issue where vim backspace leaves ^?, while in command line it worked properly.

This is what worked for me, using vim mapping:

In .vimrc, type:      imap ^? ^H

This will map CTRL-H (which is the default backspace in vim) to the backspace key. Hope that helps.


A good fix for this problem is to set the "Terminal > Keyboard" settings to map the Backspace key to "Control-H" in PuTTY; This is if you are using PuTTY and experiencing the "^?" problem when pressing the Backspace key.

I've created an article on this here:

https://alvinbunk.wordpress.com/2017/08/23/vi-or-vim-using-backspace-inserts/

Thanks to @j03m for the suggestion!


This answer worked for me: http://vim.wikia.com/wiki/Backspace_and_delete_problems

Basically, putting set backspace=2 in .vimrc works.


put stty erase ^? in your .bashrc

Run your .bashrc

run command: stty -a

speed 38400 baud; rows 48; columns 157; line = 0;
intr = ^C; quit = ^\; ***erase = ^?***; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Erase will be changed by now with new value ^? and your backspace shall work now.


On Mac, if you are using Terminal, go to Preferences -> Profiles -> Advanced, then select "Delete Sends Control-H"


If you are using KDE, I know that pain. This is the most comprehensive solution I have found so far http://www.yalla.nu/blog/post/86


I had this problem and found the following setting in my .vimrc:

:set t_kb=^H

Removing that line solved the problem.


Under FreeBSD with CSH you should replace this in your .cshrc:

bindkey "^W" backward-delete-word

With this :

bindkey "^?" backward-delete-word

For me, it was a stty problem, I had a similar stty -a output as yours.
It got fixed for me by running stty sane.

Not only did this fix the backspace/del problem, but also fixed the arrow keys.

ReferenceURL : https://stackoverflow.com/questions/9701366/vim-backspace-leaves

반응형