Ich versuche, Shift-Enter
eine neue Zeile einzufügen, ohne den aktuellen Ausdruck im Terminal und im Repl-Modus auszuwerten. Beim Durchlesen derArchWiki, ich habe versucht, dies in meiner ~/.Xmodmap
Datei festzulegen und ~/.Xmodmap
mit neu zu laden xmodmap ~/.Xmodmap
. Dies funktioniert jedoch nicht. Hier ist mein detailliertes Setup:
Inhalt von:
~/.Xmodmap:
keysym Return = Return Linefeed
~/.Xmodmap
wird beim Anmelden automatisch durch folgende Einstellung bereitgestellt:
if [ -s ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi
in meinem ~/.xinitrc
.
Weitere relevante Informationen:
~/.bashrc
(1) Ich habe in meinen und meinen den vi-Bearbeitungsmodus aktiviert ~/.inputrc
. Die Ergebnisse unterschieden sich jedoch nicht, als ich diese Optionen herausnahm.
(2) Die Verwendung keysym Return = Return Linefeed
wurde vorgeschlagenHier.* Andere Methoden haben auch nicht funktioniert.
(3) Mein $TERM
ist auf eingestellt xterm-256color
.
Vielen Dank für jede Hilfe!
*Update: Die auf dieser Seite vorgeschlagene Lösung (sofern sie noch zu finden ist) kann im dort diskutierten konkreten Fall nicht funktionieren, da die Programmiersprache eine eigene Repl-Implementierung verwendet. Dies hat also keinen Einfluss auf den vorliegenden Fall.
Antwort1
CtrlDie einfache Antwort ist, + V Ctrl+ einzugeben J.
Durch die Bindung Shift+ Returnan Linefeed
wird ^J
= control-J = \n
= gesendet \012
(anstatt ^M
= \r
= \015
). Das ist nur ein Teil dessen, was Sie tun müssen: Standardmäßig sind beide Tasten an die Ausführung der aktuellen Zeile in Bash gebunden. Sie müssen die Bindung für ^J ändern, um eine wörtliche ( = ) neue Zeile .inputrc
einzufügen :^V
\026
"\n": self-insert
Alternativ können Sie den Schlüssel in Ihrem .bashrc
: binden.
bind -m vi-command '"\n": self-insert'
bind -m vi-insert '"\n": self-insert'
Das Ändern von Shift+ Returnin Linefeed
kann unerwünschte Nebeneffekte haben – es ist oft nützlich, Shift+ Returnals Äquivalent zu zu haben Return, damit Sie Returnschnell tippen können, auch wenn Shiftes nicht erreichbar ist. Ich würde stattdessen empfehlen, Ctrl+ in zu ändern Return, um in XTerm einen Zeilenvorschub einzufügen. Sie können das in Ihrem tun ~/.Xresources
(oder wo auch immer Sie Ihre X-Ressourcen ablegen):
XTerm.vt100.translations: #override Ctrl<Key>Return: string("\012")