68

Vimでは、モードでbackspaceキーを押すと、文字が残り、削除するはずの文字が削除されません。insert^?

私の中には次のものがあります.vimrc

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

これはコマンドモードでも発生します。保存するW代わりに間違って入力すると、キーを押すと次のようになります。wbackspace

:W^?

何が間違っているのか、そしてそれを修正する方法について何かアイデアはありますか?!

更新:この質問をSOに投稿する前に、基本的なGoogle検索を実行し、検索結果の最初のページからすべての提案を試しましたが、失敗しました。

@strcat vimバージョン7.0.237、KDEコンソール1.6.4、Linux2.6.18x86_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
4

15 に答える 15

85

^?削除文字です。バックスペース文字は^Hです。これらのうちの1つだけが端末によって「消去」として認識され、これは端末の設定によって決定されますstty。(bashや他のシェルはこれを問題として理解し、両方を認識するために特別なことをします)

ターミナルエミュレーター(ssh、putty、xtermなど)がターミナル設定と一致しない場合は、この動作が表示されます。通常はデフォルトで正しいのですが、多くの場合stty、.bashrcにコマンドを入れて問題を解決します。

あなたはおそらくstty erase ^Hあなたのbashrcのようなものを持っています。その場合は、それを取り除くか、端末設定を変更して^H、DELの代わりにバックスペースを送信するようにします(^?

これはvimマッピングで修正することもできますが、基本的な問題は無視されます。

于 2012-04-17T19:40:59.280 に答える
15

追加してみてください:

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

あなたに~/.vimrc

これはC-をマップしますか?バックスペースに、そして私のために働いた。

于 2017-11-07T07:49:49.077 に答える
8

vim wiki 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
于 2014-04-11T11:38:47.357 に答える
5

この問題の適切な修正は、「ターミナル>キーボード」設定を設定して、PuTTYでBackspaceキーを「Control-H」にマップすることです。これは、PuTTYを使用していて、「^?」を経験している場合です。Backspaceキーを押すときに問題が発生します。

私はこれに関する記事をここに作成しました:

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

提案してくれた@j03mに感謝します!

于 2017-08-23T16:44:17.917 に答える
4

ctrl+ del/ ctrl+backspaceまたはalt+ del/ alt+を試してみてください。どちらかbackspaceは思い出せませんが、うまくいくと思います。

それでもうまくいかない場合は、shift+ backspace/を試してくださいdel。私は以前にこの問題に遭遇しました。削除を行うために正しいcharコードを送信するために押すことができるコンボキーがあります。

于 2012-04-18T02:17:38.463 に答える
4

^?コマンドラインでは正しく機能していましたが、vimのバックスペースが離れるという同じ問題がありました。

これは、vimマッピングを使用して私のために働いたものです:

In .vimrc, type:      imap ^? ^H

これにより、CTRL-H(vimのデフォルトのバックスペース)がバックスペースキーにマップされます。お役に立てば幸いです。

于 2014-04-12T00:26:23.300 に答える
4

Macでは、ターミナルを使用している場合は、[設定]->[プロファイル]->[詳細設定]に移動し、[送信コントロールの削除-H]を選択します。

于 2016-05-03T18:58:52.560 に答える
3

Ctrl + Hが機能しなかったことを除いて、まったく同じ問題がありました。stty設定も問題ありません。誰かが同じ問題を抱えている場合は、私の環境について言及したいと思います。

  • Xのコースの下でxtermでcygwinを使用する:)
  • RHEL6.4-> bash->tmux->vimにSSH接続

それに追加fixdel.vimrcた後は動作します!上記のすべての修正は私にとってはうまくいきませんでした。

于 2013-08-02T09:23:34.770 に答える
3

stty消去を入れて^?.bashrcで

.bashrcを実行します

コマンドを実行します: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

消去は新しい値で変更され^?、バックスペースが機能するようになります。

于 2013-11-28T11:55:33.767 に答える
2

この答えは私のために働いた:http://vim.wikia.com/wiki/Backspace_and_delete_problems

基本的にset backspace=2、.vimrcを入れることは機能します。

于 2018-08-07T09:38:29.620 に答える
1

私にとって、それはひどい問題でした、私はstty -aあなたと同じような出力を持っていました。
を実行することで修正されましたstty sane

これにより、バックスペース/デルの問題が修正されただけでなく、矢印キーも修正されました。

于 2019-05-15T15:57:24.823 に答える
0

KDEを使用している場合、私はその痛みを知っています。これは私がこれまでに見つけた最も包括的なソリューションです http://www.yalla.nu/blog/post/86

于 2014-05-30T02:47:44.627 に答える
0

この問題が発生し、.vimrcで次の設定が見つかりました。

:set t_kb=^H

その行を削除すると問題が解決しました。

于 2016-03-14T14:00:38.400 に答える
0

FreeBSD with CSHでは、これを.cshrcで置き換える必要があります。

bindkey "^W" backward-delete-word

これとともに :

bindkey "^?" backward-delete-word
于 2018-07-10T14:45:05.653 に答える
0

MacOSの場合BigSurfn+backspaceは私のために働いた

于 2021-10-26T13:43:05.963 に答える