绑定 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")

相关内容