シェルで唯一の矢印として認識される Ctrl+矢印

シェルで唯一の矢印として認識される Ctrl+矢印

新しくインストールされたアーキテクチャLinux、私のシェル(bash、、、zsh)は矢印キーと+または+をtcsh区別しません。Ctrlarrow keysShiftarrow keys

catCtrlこのコマンドは、左矢印、+、またはLeft arrow+Shiftと同じコードを表示しますLeft arrow^[[D

これはシェルで文字ごとの変位とテキスト選択を構成できないため、迷惑ですが、それでも文字ごとにナビゲートできるため重要な問題ではありません。

ただし、nanoでは、Ctrl+Shiftarrow単語ごとの移動やテキストの選択に問題なくうまく機能します。

正確に言えば、今回は初めてArch-Linuxをインストールするので、この問題を引き起こした基本構成を忘れてしまった可能性があります。

シェルでCtrl/ Shift+をどのように検出しますか?Arrow

--必須情報を追加するには編集してください--

zle-line-init() echoti smkx問題を解決できず、

echoti smkx; STTY='-icanon -echo min 0 time 20' od -vtc -tx1以下を出力します。

no such terminfo capability: smkx
00000000 033    [    D
          1b   5b   44
00000003

leftおよびctrl+ の場合left

そしてechoti rmkx; STTY='-icanon -echo min 0 time 20' od -vtc -tx1

no such terminfo capability: rmkx
00000000 033    [    D
          1b   5b   44
00000003

leftctrl+についてleft

私はArch-linuxのデフォルト端末を使用します。正しく理解していればlinuxと呼ばれます(echo $TERM出力では実際の端末をマスクするlinux必要はありません)。/etc/inittabl

ベストアンサー1

質問通りポーズを攻撃、これはncurses FAQに関連している可能性があります。カーソルキーが機能しない

nanoは端末を次のように初期化します。申請方法、シェルはそうではありませんが、シェルはそうではありません。ノーマルモード

端末(エミュレータ)を認識しませんが、「通常」モードでは、SS3(escape-O)の代わりにCSI(escape- [)を誤って使用する可能性があります。

しかし、その後のコメントでは、矛盾する情報が提供されました。動作しないと指定されたプログラム(bash、tcsh、zsh)は、関連情報を取得するためにターミナルデータベースを使用しないため、驚くべきことではありません。修飾キー。これらのいくつかはxtermマニュアル(特殊キー)。これらのどれもシェルマニュアルに文書化されていません。 「作業」が進む限り、構成ではリテラル文字列に依存します。 zshはターミナルデータベースを使用しようとしますが、拡張情報を読み取らないので - 参照源泉-運がないですね。

GUIでは、デフォルトの「ターミナル」はおそらくgnome-terminal ...TERMに設定されていますxterm-256color。これは(ほとんど)うまくいきますが、文書がある場合は、gnome-terminalその欠点が適切に言及されていると予想できます。

nanoは、端末記述を使用して(関数呼び出しを呼び出す)、tigetstrこの情報を使用する方法を示します(参照)。源泉):

src/nano.c:1233:int get_keycode(const char *keyname, const int standard)
src/nano.c:2389:        controlleft = get_keycode("kLFT5", CONTROL_LEFT);
src/nano.c:2390:        controlright = get_keycode("kRIT5", CONTROL_RIGHT);
src/nano.c:2391:        controlup = get_keycode("kUP5", CONTROL_UP);
src/nano.c:2392:        controldown = get_keycode("kDN5", CONTROL_DOWN);
src/nano.c:2394:        controlhome = get_keycode("kHOM5", CONTROL_HOME);
src/nano.c:2395:        controlend = get_keycode("kEND5", CONTROL_END);
src/nano.c:2397:        controldelete = get_keycode("kDC5", CONTROL_DELETE);
src/nano.c:2398:        controlshiftdelete = get_keycode("kDC6", CONTROL_SHIFT_DELETE);
src/nano.c:2400:        shiftup = get_keycode("kUP", SHIFT_UP);
src/nano.c:2401:        shiftdown = get_keycode("kDN", SHIFT_DOWN);
src/nano.c:2403:        shiftcontrolleft = get_keycode("kLFT6", SHIFT_CONTROL_LEFT);
src/nano.c:2404:        shiftcontrolright = get_keycode("kRIT6", SHIFT_CONTROL_RIGHT);
src/nano.c:2405:        shiftcontrolup = get_keycode("kUP6", SHIFT_CONTROL_UP);
src/nano.c:2406:        shiftcontroldown = get_keycode("kDN6", SHIFT_CONTROL_DOWN);
src/nano.c:2408:        shiftcontrolhome = get_keycode("kHOM6", SHIFT_CONTROL_HOME);
src/nano.c:2409:        shiftcontrolend = get_keycode("kEND6", SHIFT_CONTROL_END);
src/nano.c:2411:        altleft = get_keycode("kLFT3", ALT_LEFT);
src/nano.c:2412:        altright = get_keycode("kRIT3", ALT_RIGHT);
src/nano.c:2413:        altup = get_keycode("kUP3", ALT_UP);
src/nano.c:2414:        altdown = get_keycode("kDN3", ALT_DOWN);
src/nano.c:2416:        altpageup = get_keycode("kPRV3", ALT_PAGEUP);
src/nano.c:2417:        altpagedown = get_keycode("kNXT3", ALT_PAGEDOWN);
src/nano.c:2418:        altinsert = get_keycode("kIC3", ALT_INSERT);
src/nano.c:2419:        altdelete = get_keycode("kDC3", ALT_DELETE);
src/nano.c:2421:        shiftaltleft = get_keycode("kLFT4", SHIFT_ALT_LEFT);
src/nano.c:2422:        shiftaltright = get_keycode("kRIT4", SHIFT_ALT_RIGHT);
src/nano.c:2423:        shiftaltup = get_keycode("kUP4", SHIFT_ALT_UP);
src/nano.c:2424:        shiftaltdown = get_keycode("kDN4", SHIFT_ALT_DOWN);

おすすめ記事