Shift-Enter をバインドして、現在の式を評価せずに改行を挿入する

Shift-Enter をバインドして、現在の式を評価せずに改行を挿入する

Shift-Enterターミナルとreplモードで現在の式を評価せずに改行を挿入するようにバインドしようとしています。アーチウィキ、ファイルでこれを設定してで~/.Xmodmapリロードしてみました。しかし、これは機能しません。詳細な設定は次のとおりです。~/.Xmodmapxmodmap ~/.Xmodmap

の内容:

    ~/.Xmodmap:
    keysym Return = Return Linefeed

~/.Xmodmap以下の設定により、ログイン時に自動的にリソースが提供されます:

    if [ -s ~/.Xmodmap ]; then
        xmodmap ~/.Xmodmap

    fi

私の~/.xinitrc

追加の関連情報:

~/.bashrc(1)私はとでvi編集モードをオンに設定しました~/.inputrc。しかし、これらのオプションを削除しても結果は変わりませんでした。

(2)使用がkeysym Return = Return Linefeed提案されたここ*他の方法も機能しませんでした。

(3)Myは$TERMに設定されますxterm-256color

ご協力いただきありがとうございます!


*更新: このページで提案されている解決策 (まだ見つからない場合) は、プログラミング言語が独自の repl 実装を使用しているため、ここで説明されている特定のケースでは機能しません。したがって、これは手元のケースには何の影響もありません。

答え1

簡単な答えは、Ctrl+ V Ctrl+と入力することですJ


Shift+Returnを にバインドすると、 = control-J = = ( = =ではなく)Linefeedが送信されます。これは必要な作業の一部にすぎません。デフォルトでは、両方のキーが bash の現在の行を実行するようにバインドされています。リテラル ( = ) 改行を挿入するには、 の ^J のバインドを変更する必要があります。^J\n\012^M\r\015.inputrc^V\026

"\n": self-insert

あるいは、次のキーをバインドします.bashrc:

bind -m vi-command '"\n": self-insert'
bind -m vi-insert '"\n": self-insert'

Shift+を に変更するReturnと、Linefeed望ましくない副作用が生じる可能性があります。がダウンしているときでもすばやく入力できるように、Shift+ をReturnと同等にしておくと便利なことがよくあります。代わりに、XTerm で改行を挿入するように+を変更することをお勧めします。これは、 (または X リソースを配置する場所)で行うことができます。ReturnReturnShiftCtrlReturn~/.Xresources

XTerm.vt100.translations: #override Ctrl<Key>Return: string("\012")

関連情報