web-dev-qa-db-ja.com

Cygwinでバックスペースが機能しない

Cygwinをインストールしたばかりで、BACKSPACE機能がありません。つまり、Backspaceキーを押すと、スペースが表示されます。

私はGoogleでこの問題を調査しようとしましたが、決定的なものは見つかりませんでした。

29
user620189

私の場合、空白の〜/ .vimrcを作成した後、バックスペースがまったく機能しませんでした。次の変更により機能しました

置く:

bs = 2に設定

.vimrc

これは http://linux-journal.blogspot.com/2005/04/fix-vim-backspace-doesnt-work.html で見つかりました

34
vaichidrewar

私のために働いた:Windowsコマンドプロンプトで、入力

echo export TERM=cygwin >> C:/cygwin/home/YourUser/.bashrc

これにより.bashrcに追加され、すべてがうまく機能する可能性があります。

12
Marrciovr

上記のような問題に solution が見つかりました。

Cygwinセットアップを再度実行し、termcapterminfoを再インストールするだけです。検索ボックスを使用すると、すばやく検索できます。それぞれに対して「保持」と言う代わりに、クリックして「再インストール」と言ってください。検索に表示されるtermの[非表示]チェックボックスをオンにする必要がある場合があります。

Terminfoフォルダが完全になくなっていました。なぜだかわかりません。これが誰かを助けることを願っています。

11
SomeCallMeTim

C:\ cygwin\cygwin.batを編集します

これを配置:SET TERM=cygwin

前: bash --login -i

5
Josef

TERMタイプを設定するとき、ターミナルウィンドウ内で描画するためにどのTERMCAPを使用するかをホストに伝えます。ほとんどの* NIXホストは 'cygwin'用語タイプが何であるかを知らないため、挿入、削除、スクロール、フォント変更などの画面上の文字操作を行う方法がわかりません。

ホストにTelnetまたはSSHする前にCYGWINのTERM変数を変更すると、はるかに優れた結果が得られます。

CYGWINの場合:

d@test01 ~
$ TERM=ansi;export TERM
$ ssh suntest1

d@suntest1's password:
Sun Microsystems Inc.  SunOS 5.8     Generic patch    October 2001

d   pts/1         test01    Fri   Oct 12  00:15   still logged in
$ echo $TERM
ansi
$_

これで、ホストはANSI端末タイプであることを認識し、ANSI TERMCAPファイルを使用して通信方法を指示できます。

それが機能せず、バックスペースを除くほとんどすべてが適切に機能する場合は、接続先のホストで「getty」を再プログラムして、必要なものを認識できます。これが方法です(これは最も古く、最も一般的で最も普遍的な方法です)バックスペース/削除の問題を解決する方法):

ホストにsshまたはtelnetで接続し、ホストでsttyコマンドを実行します。 「BACKSPACE」キーを押しても後退しない場合は、端末がおそらくTERMタイプに基づいて別の文字を探しているためです。すべてを徹底的に調査するのではなく、CLIまたは$ HOMEディレクトリの.profile、.bashrc、または.bash-profileファイルでバックスペース定義を手動で設定することも、必要に応じて、または* NIXのフレーバーに基づいて設定することもできます。使用しています。

したがって、^ H(これはCONTROL-Hです)を押してキーをバックアップしても、BACKSPACEキーを押した場合、次のようにsttyを使用しようとしません。

stty erase \*<HIT YOUR BACKSPACE KEY HERE>*[ENTER]

ほとんどの場合、次のようになります。

stty erase \^?[ENTER]

'\'は、次の文字が印刷不可能な制御文字になり、それを「解釈」するのではなく、受け入れることを伝えます。

[ENTER]を押すと、[BACKSPACE]キーを押して、入力した内容をバックスペース/削除できるようになります。

シェルでこれを設定できます。

ここで、まだVIを使用している場合、変換が機能せず、viで実際に^ Hを入力する必要がありますが、それでも問題ありません。

あなたは言ったでしょう:

stty消去k [ENTER]

そしてそれは文字通り「k」を消去/削除文字に変換します。

-D

1
TekOps

下の画像に従ってください enter image description here

  1. Cygwinウィンドウの任意の場所を右クリック
  2. optionsをクリックします
  3. Keysタブをクリックします
  4. ティックBackarrow sends ^H
  5. 適用を押します。

これは私にとってうまくいった唯一のことです。特に、サーバーにSSHで接続する必要がある場合(すべての修正が機能するわけではありません)、私はstty erase ^?を.bashrcに追加しましたが、これで問題が80%解決されただけでした。

1
Mark

TERM変数をcygwinに変更し、SET TERM=cygwin.batファイルに追加しても機能しませんでしたが、修正しました。ここで私がしたこと:パッケージマネージャーのインストール予定でxterm: X11 terminal emulatorをインストールすることを選択しました。インストール後、SET TERM=xterm.batファイルに追加し(上記の提案のように)、ターミナルを起動しましたオプション-> ターミナルメニューが選択されたType=xterm、そしてターミナルを再起動。バックスペースが正しく機能し始めました!

注:既にcygwinをインストールしている場合は、インストーラーを再度実行してxtermパッケージを追加してください。

私は走っています:

  • OS = Windows 8(x64)
  • Cygwin setup.exeバージョン= 2.850(x64)
  • Mittyバージョン= 1.2-beta1(x86_64-pc-cygwin)
0
Argon

ここですべての答えに同意します。しかし、ここにははるかに簡単な方法があります: http://lifepluslinux.blogspot.in/2014/08/backspace-doesnt-work-in-vim-on-cygwin.html

0
2991ambusher

わかりました、Cygwinインストールを手動で更新することでこの問題が発生しました。とにかく、私は this post を見つけました。

古いcygwinにはファイル/etc/terminfo/c/cygwinですが、新しいcygwinでは、ファイルが/etc/terminfo/63/cygwin

「cygwin」ファイルをこの場所にコピーすると、タブなどと同様に、bashシェルのバックスペースキーが正常に機能しました。

0
user327463

オンラインで2日間読んだ後私はこれが私のために働いたのを見つけました。このケースがすべてに一致するかどうかはわかりません。しかし、それは Yuksel のおかげで私にとって魅力のように働きました

問題は「termInfo」ファイルにありました、彼が示唆したステップ

  1. cygWinターミナルに入力して、問題が端末に関連しているかどうかを確認します。これにより、警告が表示されます(無視してください)。

    less my_session.log

警告:端末が完全に機能していません

  1. CygWinターミナルで以下のコードを入力して、関連するパスまたはディレクトリに「TermCap」の情報を取得します

    infocmp -C

あなたはどちらかを取得する必要があります

infocmp:terminfoファイル/ usr/share/terminfo/63/cygwinを開けませんでした

または、「infocmpを使用して再構築...」のようなテキストで始まるものを取得することもできます。

  1. CygWinターミナルで以下のコードを実行して診断を実行し、ファイルが保存されているパスに関する詳細を取得します

    cygcheck -s

以下のテキストのように応答するはずです

Cygwin構成診断

...

C:/ cygwin /システムバイナリ、noacl

C:/ cygwin/bin/usr/binシステムバイナリ、noacl

C:/ cygwin/lib/usr/lib system binary、noacl

C:\ cygwin\etc\terminfo/usr/share/terminfo system binary、noacl

cygdriveプレフィックス/ cygdriveユーザーバイナリ、noacl、posix = 0、auto

...

  1. 次のような行を確認してください

C:\ cygwin\etc\terminfo/usr/share/terminfo system binary、noacl

出力から、3番目のステップから取得しました。 / usr/share/terminfo内に存在するすべてのファイルとフォルダーをフォルダーC:\ cygwinにコピーします\ etc\terminfo-注:このフォルダは、インストールによっては実際のフォルダと異なる場合があります

0
yellowandred

私のために働いた:Windowsコマンドプロンプトで、入力

(echo; echo "export TERM=cygwin") >> ~/.bash_profile

これはそれを.bash_profileに追加します(.bashrcではなく、これは私には機能せず、先頭に改行がありました)。

0
bjelli