綁定 Shift-Enter 以插入換行符號而不評估目前表達式

綁定 Shift-Enter 以插入換行符號而不評估目前表達式

我嘗試綁定Shift-Enter以插入換行符,而不評估終端和 repl 模式中的當前表達式。閱讀透過建築維基百科~/.Xmodmap,我嘗試在我的文件中設置它並~/.Xmodmap使用重新加載xmodmap ~/.Xmodmap。然而,這不起作用。這是我的詳細設定:

內容:

    ~/.Xmodmap:
    keysym Return = Return Linefeed

~/.Xmodmap透過設定登入時自動取得資源:

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

    fi

在我的~/.xinitrc

附加相關資訊:

(1) 我在我的~/.bashrc和我的~/.inputrc.然而,去掉這些選項後,結果並沒有什麼不同。

(2)keysym Return = Return Linefeed建議使用這裡.* 其他方法也不起作用。

(3) 我的$TERM設定為xterm-256color

謝謝你的幫忙!


*更新:本頁建議的解決方案(如果仍有待找到)無法在此處討論的特定情況下工作,因為程式語言正在使用自己的 repl 實作。因此,這與目前的案件沒有任何關係。

答案1

簡單的答案是輸入Ctrl+ V Ctrl+ J


綁定Shift+Return使其Linefeed發送^J= control-J == \n(而\012不是^M== )。這只是您需要做的一部分:預設情況下,兩個鍵都綁定到執行 bash 中的當前行。您需要更改 ^J 的綁定以插入文字 ( = ) 換行符:\r\015.inputrc^V\026

"\n": self-insert

或者,將密鑰綁定在您的.bashrc

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

Shift將+更改ReturnLinefeed可能會產生不良副作用 - 將Shift+Return等同於通常很有用,這樣即使在停機時也Return可以快速鍵入。我建議改為更改+以在 XTerm 中插入換行符。您可以在您的(或您放置 X 資源的任何地方)執行此操作:ReturnShiftCtrlReturn~/.Xresources

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

相關內容